]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
merge changes from branch parallel-mg
authorheister <heister@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 20 Dec 2012 19:12:35 +0000 (19:12 +0000)
committerheister <heister@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 20 Dec 2012 19:12:35 +0000 (19:12 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_merge_mg_into_dof_handler@27834 0785d39b-7218-0410-832d-ea1e28bc413d

153 files changed:
deal.II/common/dealiitemplates.pm.in
deal.II/common/template-arguments.in
deal.II/doc/doxygen/headers/iterators.h
deal.II/examples/step-50/Makefile [new file with mode: 0644]
deal.II/examples/step-50/doc/builds-on [new file with mode: 0644]
deal.II/examples/step-50/doc/intro.dox [new file with mode: 0644]
deal.II/examples/step-50/doc/kind [new file with mode: 0644]
deal.II/examples/step-50/doc/results.dox [new file with mode: 0644]
deal.II/examples/step-50/doc/step-16.solution.png [new file with mode: 0644]
deal.II/examples/step-50/doc/tooltip [new file with mode: 0644]
deal.II/examples/step-50/step-50.cc [new file with mode: 0644]
deal.II/include/deal.II/dofs/block_info.h
deal.II/include/deal.II/dofs/dof_accessor.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_iterator_selector.h
deal.II/include/deal.II/dofs/dof_renumbering.h
deal.II/include/deal.II/dofs/dof_tools.h
deal.II/include/deal.II/fe/fe_values.h
deal.II/include/deal.II/grid/tria.h
deal.II/include/deal.II/hp/dof_handler.h
deal.II/include/deal.II/hp/fe_values.h
deal.II/include/deal.II/lac/trilinos_sparse_matrix.h
deal.II/include/deal.II/lac/trilinos_sparsity_pattern.h
deal.II/include/deal.II/matrix_free/matrix_free.h
deal.II/include/deal.II/matrix_free/matrix_free.templates.h
deal.II/include/deal.II/meshworker/dof_info.h
deal.II/include/deal.II/meshworker/dof_info.templates.h
deal.II/include/deal.II/meshworker/loop.h
deal.II/include/deal.II/meshworker/simple.h
deal.II/include/deal.II/multigrid/mg_base.h
deal.II/include/deal.II/multigrid/mg_block_smoother.h
deal.II/include/deal.II/multigrid/mg_constrained_dofs.h
deal.II/include/deal.II/multigrid/mg_dof_accessor.h
deal.II/include/deal.II/multigrid/mg_dof_handler.h
deal.II/include/deal.II/multigrid/mg_matrix.h
deal.II/include/deal.II/multigrid/mg_smoother.h
deal.II/include/deal.II/multigrid/mg_tools.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_block.templates.h
deal.II/include/deal.II/multigrid/mg_transfer_component.h
deal.II/include/deal.II/multigrid/mg_transfer_component.templates.h
deal.II/include/deal.II/multigrid/multigrid.h
deal.II/source/Makefile
deal.II/source/distributed/solution_transfer.cc
deal.II/source/distributed/tria.cc
deal.II/source/dofs/block_info.cc
deal.II/source/dofs/block_info.inst.in
deal.II/source/dofs/dof_accessor.cc
deal.II/source/dofs/dof_accessor.inst.in
deal.II/source/dofs/dof_handler.cc
deal.II/source/dofs/dof_handler.inst.in
deal.II/source/dofs/dof_handler_policy.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_values.cc
deal.II/source/fe/fe_values.inst.in
deal.II/source/fe/mapping_q1_eulerian.cc
deal.II/source/fe/mapping_q_eulerian.cc
deal.II/source/grid/grid_tools.cc
deal.II/source/grid/grid_tools.inst.in
deal.II/source/hp/dof_handler.cc
deal.II/source/hp/fe_values.cc
deal.II/source/hp/fe_values.inst.in
deal.II/source/lac/trilinos_sparse_matrix.cc
deal.II/source/lac/trilinos_sparsity_pattern.cc
deal.II/source/multigrid/mg_base.cc
deal.II/source/multigrid/mg_base.inst.in [new file with mode: 0644]
deal.II/source/multigrid/mg_dof_accessor.cc [deleted file]
deal.II/source/multigrid/mg_dof_accessor.inst.in [deleted file]
deal.II/source/multigrid/mg_dof_handler.cc
deal.II/source/multigrid/mg_dof_handler.inst.in
deal.II/source/multigrid/mg_tools.cc
deal.II/source/multigrid/mg_tools.inst.in
deal.II/source/multigrid/mg_transfer_block.cc
deal.II/source/multigrid/mg_transfer_block.inst.in
deal.II/source/multigrid/mg_transfer_component.cc
deal.II/source/multigrid/mg_transfer_component.inst.in
deal.II/source/multigrid/mg_transfer_prebuilt.cc
deal.II/source/multigrid/mg_transfer_prebuilt.inst.in
deal.II/source/multigrid/multigrid.cc
deal.II/source/multigrid/multigrid.inst.in [new file with mode: 0644]
deal.II/source/numerics/fe_field_function.inst.in
deal.II/source/numerics/vector_tools.inst.in
tests/Makefile.paths.in
tests/bits/step-16b.cc [new file with mode: 0644]
tests/bits/step-16b/cmp/generic [new file with mode: 0644]
tests/deal.II/accessor_02.cc [new file with mode: 0644]
tests/deal.II/accessor_02/cmp/generic [new file with mode: 0644]
tests/deal.II/block_info.cc
tests/deal.II/block_info_02.cc [new file with mode: 0644]
tests/deal.II/block_info_02/cmp/generic [new file with mode: 0644]
tests/deal.II/dof_renumbering_07.cc [new file with mode: 0644]
tests/deal.II/dof_renumbering_07/cmp/generic [new file with mode: 0644]
tests/deal.II/grid_out_02.cc
tests/deal.II/grid_out_05.cc [new file with mode: 0644]
tests/deal.II/grid_out_05/cmp/generic [new file with mode: 0644]
tests/deal.II/memory_consumption_01/cmp/generic
tests/lac/sparse_matrix_iterator.cc [new file with mode: 0644]
tests/lac/sparse_matrix_iterator/cmp/generic [new file with mode: 0644]
tests/mpi/mg_01.cc [new file with mode: 0644]
tests/mpi/mg_01/ncpu_10/cmp/generic [new file with mode: 0644]
tests/mpi/mg_01/ncpu_4/cmp/generic [new file with mode: 0644]
tests/mpi/mg_02.cc [new file with mode: 0644]
tests/mpi/mg_02/ncpu_10/cmp/generic [new file with mode: 0644]
tests/mpi/mg_02/ncpu_4/cmp/generic [new file with mode: 0644]
tests/mpi/mg_03.cc [new file with mode: 0644]
tests/mpi/mg_03/ncpu_1/cmp/generic [new file with mode: 0644]
tests/mpi/mg_03/ncpu_1/status [new file with mode: 0644]
tests/mpi/mg_03/ncpu_10/cmp/generic [new file with mode: 0644]
tests/mpi/mg_03/ncpu_4/cmp/generic [new file with mode: 0644]
tests/multigrid/dof_01.cc
tests/multigrid/dof_01/cmp/generic
tests/multigrid/dof_02.cc
tests/multigrid/dof_02/cmp/generic
tests/multigrid/dof_03.cc [new file with mode: 0644]
tests/multigrid/dof_03/cmp/generic [new file with mode: 0644]
tests/multigrid/renumbering_01.cc
tests/multigrid/renumbering_02.cc
tests/multigrid/renumbering_03.cc
tests/trilinos/mg_transfer_prebuilt_01.cc [new file with mode: 0644]
tests/trilinos/mg_transfer_prebuilt_01/cmp/generic [new file with mode: 0644]
tests/trilinos/sparse_matrix_iterator.cc [new file with mode: 0644]
tests/trilinos/sparse_matrix_iterator/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_01.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_01/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_02.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_02/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_03.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_03/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_04.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_04/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_05.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_05/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_06.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_06/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_07.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_07/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_08.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_08/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_09.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_09/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_10.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_10/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_11.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_11/cmp/generic [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_12.cc [new file with mode: 0644]
tests/trilinos/trilinos_sparse_matrix_iterator_12/cmp/generic [new file with mode: 0644]

index 80b7a15838065810e33f9cb81c63cab5398eb66b..4642d808171fdaed14e2ac7f3c2a46bee94799c8 100644 (file)
@@ -102,7 +102,7 @@ our @dimensions       = (1,2,3);
 our @codim1_dimensions = (1,2);
 
 # DoFHandlers
-our @dofhandler_templates = qw(DoFHandler hp::DoFHandler MGDoFHandler);
+our @dofhandler_templates = qw(DoFHandler hp::DoFHandler);
 our @dofhandlers = map { $t = $_ ; map { "$_<$t>" } @dofhandler_templates } @dimensions;
 
 # All possible number types
index 09d4d3354dc1b44a29147f1924540882b4d18e31..8178ad9af66f41a11502961067b1246c9e2804c4 100644 (file)
@@ -1,3 +1,4 @@
+BOOL            := { true; false }
 REAL_SCALARS    := { double; float; long double }
 COMPLEX_SCALARS := { std::complex<double>;
                      std::complex<float>;
@@ -36,23 +37,31 @@ SERIAL_VECTORS := { Vector<double>;
                    @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@;
                   }
 
+VECTORS_WITH_MATRIX := { Vector<double>;
+                    Vector<float> ;
+                   Vector<long double>;
+
+                   BlockVector<double>;
+                    BlockVector<float>;
+                    BlockVector<long double>;
+
+                   @DEAL_II_EXPAND_TRILINOS_VECTOR@;
+                   @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
+                  }
+
 DOFHANDLERS := { DoFHandler<deal_II_dimension>;
-                 hp::DoFHandler<deal_II_dimension>;
-                MGDoFHandler<deal_II_dimension> }
+                 hp::DoFHandler<deal_II_dimension> }
 
 DOFHANDLER_TEMPLATES := { DoFHandler;
-                          hp::DoFHandler;
-                         MGDoFHandler }
+                          hp::DoFHandler }
 
 TRIANGULATION_AND_DOFHANDLER_TEMPLATES := { Triangulation;
                                            DoFHandler;
-                                           hp::DoFHandler;
-                                           MGDoFHandler}
+                                           hp::DoFHandler }
 
 TRIANGULATION_AND_DOFHANDLERS := { Triangulation<deal_II_dimension, deal_II_space_dimension>;
                                    DoFHandler<deal_II_dimension, deal_II_space_dimension>;
-                                   hp::DoFHandler<deal_II_dimension, deal_II_space_dimension>;
-                                  MGDoFHandler<deal_II_dimension, deal_II_space_dimension> }
+                                   hp::DoFHandler<deal_II_dimension, deal_II_space_dimension> }
 
 
 FEVALUES_BASES := { FEValuesBase<deal_II_dimension>;
index 0ab81cc360cb5296e9f0b86ee734fac0a5eba661..52f44bea81d9034311dc007d57d13379d3b0ee56 100644 (file)
@@ -239,22 +239,19 @@ of accessor classes:
   topological connection of a mesh is available from an accessor such as to
   request iterators pointing to neighbors of a cell.
 
-- The DoFAccessor class lets you access information related to degrees of
-  freedom associated with cells, faces, etc; it does so for both DoFHandler
-  and hp::DoFHandler objects. Note that the DoFAccessor class is derived from
-  either TriaAccessor or CellAccessor (depending on whether the DoFAccessor
-  points to an object of full dimension or not) and so is able to provide a
-  superset of information over its base classes.
+- The DoFAccessor class lets you access information related to degrees
+  of freedom associated with cells, faces, etc; it does so for both
+  DoFHandler and hp::DoFHandler objects. Note that the DoFAccessor
+  class is derived from either TriaAccessor or CellAccessor (depending
+  on whether the DoFAccessor points to an object of full dimension or
+  not) and so is able to provide a superset of information over its
+  base classes. Additionally, the DoFAccessor class comes in two
+  flavors, one accessing degrees of freedom on the level of a cell and
+  the other accessing the active dofs of an active cell.
 
 - The DoFCellAccessor class has the same purpose and relation to
   DoFCellAccessor as the CellAccessor has to TriaAccessor.
 
-- The MGDoFAccessor and MFCellDoFAccessor give access to the multilevel degree
-  of freedom information associated with MGDoFHandler objects. As before,
-  since the MGDoFHandler extends the data structures of regular DoFHandler
-  objects, the MGDoFAccessor is also derived from the DoFAccessor (or
-  DoFCellAccessor) class to provide a superset of information.
-
 Except to look up member documentation, you will not usually have to deal with
 the actual class names listed above. Rather, one uses the typedefs provided by
 the container classes Triangulation, DoFHandler, hp::DoFHandler and
diff --git a/deal.II/examples/step-50/Makefile b/deal.II/examples/step-50/Makefile
new file mode 100644 (file)
index 0000000..3af5d51
--- /dev/null
@@ -0,0 +1,143 @@
+# $Id$
+
+# For the small projects Makefile, you basically need to fill in only
+# four fields.
+#
+# The first is the name of the application. It is assumed that the
+# application name is the same as the base file name of the single C++
+# file from which the application is generated.
+target = step-50
+
+# The second field determines whether you want to run your program in
+# debug or optimized mode. The latter is significantly faster, but no
+# run-time checking of parameters and internal states is performed, so
+# you should set this value to `on' while you develop your program,
+# and to `off' when running production computations.
+debug-mode = on
+
+
+# As third field, we need to give the path to the top-level deal.II
+# directory. You need to adjust this to your needs. Since this path is
+# probably the most often needed one in the Makefile internals, it is
+# designated by a single-character variable, since that can be
+# reference using $D only, i.e. without the parentheses that are
+# required for most other parameters, as e.g. in $(target).
+D = ../../
+
+
+# The last field specifies the names of data and other files that
+# shall be deleted when calling `make clean'. Object and backup files,
+# executables and the like are removed anyway. Here, we give a list of
+# files in the various output formats that deal.II supports.
+clean-up-files = *gmv *gnuplot *gpl *eps *pov *vtk *ucd *.d2
+
+
+
+
+#
+#
+# Usually, you will not need to change anything beyond this point.
+#
+#
+# The next statement tells the `make' program where to find the
+# deal.II top level directory and to include the file with the global
+# settings
+include $D/common/Make.global_options
+
+
+# Since the whole project consists of only one file, we need not
+# consider difficult dependencies. We only have to declare the
+# libraries which we want to link to the object file. deal.II has two
+# libraries: one for the debug mode version of the
+# application and one for optimized mode.
+libs.g   := $(lib-deal2.g)
+libs.o   := $(lib-deal2.o)
+
+
+# We now use the variable defined above to switch between debug and
+# optimized mode to select the set of libraries to link with. Included
+# in the list of libraries is the name of the object file which we
+# will produce from the single C++ file. Note that by default we use
+# the extension .g.o for object files compiled in debug mode and .o for
+# object files in optimized mode (or whatever local default on your
+# system is instead of .o)
+ifeq ($(debug-mode),on)
+  libraries = $(target).g.$(OBJEXT) $(libs.g)
+else
+  libraries = $(target).$(OBJEXT) $(libs.o)
+endif
+
+
+# Now comes the first production rule: how to link the single object
+# file produced from the single C++ file into the executable. Since
+# this is the first rule in the Makefile, it is the one `make' selects
+# if you call it without arguments.
+all: $(target)$(EXEEXT)
+$(target)$(EXEEXT) : $(libraries)
+       @echo ============================ Linking $@
+       @$(CXX) -o $@ $^ $(LIBS) $(LDFLAGS)
+
+
+# To make running the application somewhat independent of the actual
+# program name, we usually declare a rule `run' which simply runs the
+# program. You can then run it by typing `make run'. This is also
+# useful if you want to call the executable with arguments which do
+# not change frequently. You may then want to add them to the
+# following rule:
+run: $(target)$(EXEEXT)
+       @echo ============================ Running $<
+       @./$(target)$(EXEEXT)
+
+
+# As a last rule to the `make' program, we define what to do when
+# cleaning up a directory. This usually involves deleting object files
+# and other automatically created files such as the executable itself,
+# backup files, and data files. Since the latter are not usually quite
+# diverse, you needed to declare them at the top of this file.
+clean:
+       -rm -f *.$(OBJEXT) *~ Makefile.dep $(target)$(EXEEXT) $(clean-up-files)
+
+
+# Since we have not yet stated how to make an object file from a C++
+# file, we should do so now. Since the many flags passed to the
+# compiler are usually not of much interest, we suppress the actual
+# command line using the `at' sign in the first column of the rules
+# and write the string indicating what we do instead.
+./%.g.$(OBJEXT) :
+       @echo "==============debug========= $(<F)  ->  $@"
+       @$(CXX) $(CXXFLAGS.g) -c $< -o $@
+./%.$(OBJEXT) :
+       @echo "==============optimized===== $(<F)  ->  $@"
+       @$(CXX) $(CXXFLAGS.o) -c $< -o $@
+
+
+# The following statement tells make that the rules `run' and `clean'
+# are not expected to produce files of the same name as Makefile rules
+# usually do.
+.PHONY: all run clean
+
+
+# Finally there is a rule which you normally need not care much about:
+# since the executable depends on some include files from the library,
+# besides the C++ application file of course, it is necessary to
+# re-generate the executable when one of the files it depends on has
+# changed. The following rule creates a dependency file
+# `Makefile.dep', which `make' uses to determine when to regenerate
+# the executable. This file is automagically remade whenever needed,
+# i.e. whenever one of the cc-/h-files changed. Make detects whether
+# to remake this file upon inclusion at the bottom of this file.
+#
+# If the creation of Makefile.dep fails, blow it away and fail
+Makefile.dep: $(target).cc Makefile \
+              $(shell echo $D/include/deal.II/*/*.h)
+       @echo ============================ Remaking $@
+       @$D/common/scripts/make_dependencies  $(INCLUDE) -B. $(target).cc \
+               > $@ \
+         || (rm -f $@ ; false)
+       @if test -s $@ ; then true ; else rm $@ ; false ; fi
+
+# To make the dependencies known to `make', we finally have to include
+# them:
+include Makefile.dep
+
+
diff --git a/deal.II/examples/step-50/doc/builds-on b/deal.II/examples/step-50/doc/builds-on
new file mode 100644 (file)
index 0000000..1740273
--- /dev/null
@@ -0,0 +1 @@
+step-6
diff --git a/deal.II/examples/step-50/doc/intro.dox b/deal.II/examples/step-50/doc/intro.dox
new file mode 100644 (file)
index 0000000..9966672
--- /dev/null
@@ -0,0 +1,90 @@
+<br>
+
+<i>This program has evolved from a version originally written by Guido
+Kanschat in 2003. It has undergone significant revisions by B&auml;rbel
+Janssen, Guido Kanschat and Wolfgang Bangerth in 2009 and 2010 to demonstrate
+multigrid algorithms on adaptively refined meshes.
+</i>
+
+
+<a name="Intro"></a>
+<h1>Introduction</h1>
+
+
+This example shows the basic usage of the multilevel functions in
+deal.II. It solves the same problem as used in step-6,
+but demonstrating the things one has to provide when using multigrid
+as a preconditioner. In particular, this requires that we define a
+hierarchy of levels, provide transfer operators from one level to the
+next and back, and provide representations of the Laplace operator on
+each level.
+
+In order to allow sufficient flexibility in conjunction with systems of
+differential equations and block preconditioners, quite a few different objects
+have to be created before starting the multilevel method, although
+most of what needs to be done is provided by deal.II itself. These are
+<ul>
+<li>An the object handling transfer between grids; we use the
+    MGTransferPrebuilt class for this that does almost all of the work
+    inside the library.
+<li>The solver on the coarsest level; here, we use MGCoarseGridHouseholder.
+<li>The smoother on all other levels, which in our case will be the
+    MGSmootherRelaxation class using SOR as the underlying method
+<li>And MGMatrix, a class having a special level multiplication, i.e. we
+    basically store one matrix per grid level and allow multiplication
+    with it.
+</ul>
+Most of these objects will only be needed inside the function that
+actually solves the linear system. There, these objects are combined
+in an object of type Multigrid, containing the implementation of the
+V-cycle, which is in turn used by the preconditioner PreconditionMG,
+ready for plug-in into a linear solver of the LAC library.
+
+The multilevel method in deal.II follows in many respects the outlines
+of the various publications by James Bramble, Joseph Pasciak and
+Jinchao Xu (i.e. the "BPX" framework). In order to understand many of
+the options, a rough familiarity with their work is quite helpful.
+
+However, in comparison to this framework, the implementation in
+deal.II has to take into account the fact that we want to solve linear
+systems on adaptively refined meshes. This leads to the complication
+that it isn't quite as clear any more what exactly a "level" in a
+multilevel hierarchy of a mesh is. The following image shows what we
+consider to be a "level":
+
+<p align="center">
+  @image html "hanging_nodes.png" ""
+</p>
+
+In other words, the fine level in this mesh consists only of the
+degrees of freedom that are defined on the refined cells, but does not
+extend to that part of the domain that is not refined. While this
+guarantees that the overall effort grows as ${\cal O}(N)$ as necessary
+for optimal multigrid complexity, it leads to problems when defining
+where to smooth and what boundary conditions to pose for the operators
+defined on individual levels if the level boundary is not an external
+boundary. These questions are discussed in detail in the
+@ref mg_paper "Multigrid paper by Janssen and Kanschat" that describes
+the implementation in deal.II.
+
+
+
+<h3>The testcase</h3>
+
+The problem we solve here is exactly the same as in
+step-6, the only difference being the solver we use
+here. You may want to look there for a definition of what we solve,
+right hand side and boundary conditions. Obviously, the program would
+also work if we changed the geometry and other pieces of data that
+defines this particular problem.
+
+The things that are new are all those parts that concern the
+multigrid. In particular, this includes the following members of the
+main class:
+- <code>LaplaceProblem::mg_dof_handler</code>
+- <code>LaplaceProblem::mg_sparsity</code>
+- <code>LaplaceProblem::mg_matrices</code>
+- <code>LaplaceProblem::mg_interface_matrices_up</code>
+- <code>LaplaceProblem::assemble_multigrid ()</code>
+- <code>LaplaceProblem::solve ()</code>
+Take a look at these functions.
diff --git a/deal.II/examples/step-50/doc/kind b/deal.II/examples/step-50/doc/kind
new file mode 100644 (file)
index 0000000..c1d9154
--- /dev/null
@@ -0,0 +1 @@
+techniques
diff --git a/deal.II/examples/step-50/doc/results.dox b/deal.II/examples/step-50/doc/results.dox
new file mode 100644 (file)
index 0000000..762f809
--- /dev/null
@@ -0,0 +1,101 @@
+<h1>Results</h1>
+
+The output that this program generates is, of course, the same as that
+of step-6, so you may see there for more results. On the
+other hand, since no tutorial program is a good one unless it has at
+least one colorful picture, here is, again, the solution:
+
+<p align="center">
+  @image html step-16.solution.png
+</p>
+
+When run, the output of this program is
+<pre>
+Cycle 0:
+   Number of active cells:       20
+   Number of degrees of freedom: 25 (by level: 8, 25)
+   7 CG iterations needed to obtain convergence.
+Cycle 1:
+   Number of active cells:       44
+   Number of degrees of freedom: 57 (by level: 8, 25, 48)
+   8 CG iterations needed to obtain convergence.
+Cycle 2:
+   Number of active cells:       92
+   Number of degrees of freedom: 117 (by level: 8, 25, 80, 60)
+   9 CG iterations needed to obtain convergence.
+Cycle 3:
+   Number of active cells:       188
+   Number of degrees of freedom: 221 (by level: 8, 25, 80, 200)
+   12 CG iterations needed to obtain convergence.
+Cycle 4:
+   Number of active cells:       416
+   Number of degrees of freedom: 485 (by level: 8, 25, 89, 288, 280)
+   13 CG iterations needed to obtain convergence.
+Cycle 5:
+   Number of active cells:       800
+   Number of degrees of freedom: 925 (by level: 8, 25, 89, 288, 784, 132)
+   14 CG iterations needed to obtain convergence.
+Cycle 6:
+   Number of active cells:       1628
+   Number of degrees of freedom: 1865 (by level: 8, 25, 89, 304, 1000, 1164, 72)
+   14 CG iterations needed to obtain convergence.
+Cycle 7:
+   Number of active cells:       3194
+   Number of degrees of freedom: 3603 (by level: 8, 25, 89, 328, 1032, 2200, 1392)
+   16 CG iterations needed to obtain convergence.
+</pre>
+That's not perfect &mdash; we would have hoped for a constant number
+of iterations rather than one that increases as we get more and more
+degrees of freedom &mdash; but it is also not far away. The reason for
+this is easy enough to understand, however: since we have a strongly
+varying coefficient, the operators that we assembly by quadrature on
+the lower levels become worse and worse approximations of the operator
+on the finest level. Consequently, even if we had perfect solvers on
+the coarser levels, they would not be good preconditioners on the
+finest level. This theory is easily tested by comparing results when
+we use a constant coefficient: in that case, the number of iterations
+remains constant at 9 after the first three or four refinement steps.
+
+We can also compare what this program produces with how @ref step_5
+"step-5" performed. To solve the same problem as in step-5, the only
+two changes that are necessary are (i) to replace the body of the
+function <code>LaplaceProblem::refine_grid</code> by a call to
+<code>triangulation.refine_global(1)</code>, and (ii) to use the same
+SolverControl object and tolerance as in step-5 &mdash; the rest of the
+program remains unchanged. In that case, here is how the solvers used
+in step-5 and the multigrid solver used in the current program
+compare:
+<table align="center">
+<tr><th>cells</th><th>step-5</th><th>step-16</th></tr>
+<tr><td>20</td>   <td>13</td> <td>6</td> </tr>
+<tr><td>80</td>   <td>17</td> <td>7</td> </tr>
+<tr><td>320</td>  <td>29</td> <td>9</td> </tr>
+<tr><td>1280</td> <td>51</td> <td>10</td> </tr>
+<tr><td>5120</td> <td>94</td> <td>11</td> </tr>
+<tr><td>20480</td><td>180</td><td>13</td></tr>
+</table>
+This isn't only fewer iterations than in step-5 (each of which
+is, however, much more expensive) but more importantly, the number of
+iterations also grows much more slowly under mesh refinement (again,
+it would be almost constant if the coefficient was constant rather
+than strongly varying as chosen here). This justifies the common
+observation that, whenever possible, multigrid methods should be used
+for second order problems.
+
+
+<h3> Possible extensions </h3>
+
+A close inspection of this program's performance shows that it is mostly
+dominated by matrix-vector operations. step-37 shows one way
+how this can be avoided by working with matrix-free methods.
+
+Another avenue would be to use algebraic multigrid methods. The
+geometric multigrid method used here can at times be a bit awkward to
+implement because it needs all those additional data structures, and
+it becomes even more difficult if the program is to run in %parallel on
+machines coupled through MPI, for example. In that case, it would be
+simpler if one could use a black-box preconditioner that uses some
+sort of multigrid hierarchy for good performance but can figure out
+level matrices and similar things out by itself. Algebraic multigrid
+methods do exactly this, and we will use them in
+step-31 for the solution of a Stokes problem.
diff --git a/deal.II/examples/step-50/doc/step-16.solution.png b/deal.II/examples/step-50/doc/step-16.solution.png
new file mode 100644 (file)
index 0000000..2550b85
Binary files /dev/null and b/deal.II/examples/step-50/doc/step-16.solution.png differ
diff --git a/deal.II/examples/step-50/doc/tooltip b/deal.II/examples/step-50/doc/tooltip
new file mode 100644 (file)
index 0000000..2fd6559
--- /dev/null
@@ -0,0 +1 @@
+Multigrid on adaptive meshes.
diff --git a/deal.II/examples/step-50/step-50.cc b/deal.II/examples/step-50/step-50.cc
new file mode 100644 (file)
index 0000000..8cc10af
--- /dev/null
@@ -0,0 +1,1064 @@
+/* Author: Guido Kanschat, University of Heidelberg, 2003  */
+/*         Baerbel Janssen, University of Heidelberg, 2010 */
+/*         Wolfgang Bangerth, Texas A&M University, 2010   */
+
+/*    $Id$       */
+/*                                                                */
+/*    Copyright (C) 2003, 2004, 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.                        */
+
+// As discussed in the introduction, most of
+// this program is copied almost verbatim
+// from step-6, which itself is only a slight
+// modification of step-5. Consequently, a
+// significant part of this program is not
+// new if you've read all the material up to
+// step-6, and we won't comment on that part
+// of the functionality that is
+// unchanged. Rather, we will focus on those
+// aspects of the program that have to do
+// with the multigrid functionality which
+// forms the new aspect of this tutorial
+// program.
+
+// @sect3{Include files}
+
+// Again, the first few include files
+// are already known, so we won't
+// comment on them:
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/function.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/utilities.h>
+
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/solver_gmres.h>
+#include <deal.II/lac/precondition.h>
+
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_refinement.h>
+#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/fe/fe_q.h>
+#include <deal.II/fe/fe_values.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/base/index_set.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/distributed/grid_refinement.h>
+
+#include <deal.II/lac/trilinos_vector.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <deal.II/lac/trilinos_precondition.h>
+
+// These, now, are the include necessary for
+// the multi-level methods. The first two
+// declare classes that allow us to enumerate
+// degrees of freedom not only on the finest
+// mesh level, but also on intermediate
+// levels (that's what the MGDoFHandler class
+// does) as well as allow to access this
+// information (iterators and accessors over
+// these cells).
+//
+// The rest of the include files deals with
+// the mechanics of multigrid as a linear
+// operator (solver or preconditioner).
+#include <deal.II/multigrid/mg_dof_handler.h>
+#include <deal.II/multigrid/mg_dof_accessor.h>
+#include <deal.II/multigrid/mg_constrained_dofs.h>
+#include <deal.II/multigrid/multigrid.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_tools.h>
+#include <deal.II/multigrid/mg_coarse.h>
+#include <deal.II/multigrid/mg_smoother.h>
+#include <deal.II/multigrid/mg_matrix.h>
+
+// This is C++:
+#include <fstream>
+#include <sstream>
+
+// The last step is as in all
+// previous programs:
+namespace Step16
+{
+  using namespace dealii;
+
+
+  // @sect3{The <code>LaplaceProblem</code> class template}
+
+  // This main class is basically the same
+  // class as in step-6. As far as member
+  // functions is concerned, the only addition
+  // is the <code>assemble_multigrid</code>
+  // function that assembles the matrices that
+  // correspond to the discrete operators on
+  // intermediate levels:
+  template <int dim>
+  class LaplaceProblem
+  {
+  public:
+    LaplaceProblem (const unsigned int deg);
+    void run ();
+
+  private:
+    void setup_system ();
+    void assemble_system ();
+    void assemble_multigrid ();
+    void solve ();
+    void refine_grid ();
+    void output_results (const unsigned int cycle) const;
+
+    parallel::distributed::Triangulation<dim>   triangulation;
+    FE_Q<dim>            fe;
+    DoFHandler<dim>    mg_dof_handler;
+
+    typedef TrilinosWrappers::SparseMatrix matrix_t;
+    typedef TrilinosWrappers::MPI::Vector vector_t;
+
+    SparsityPattern      sparsity_pattern;
+    matrix_t system_matrix;
+
+    // We need an additional object for the
+    // hanging nodes constraints. They are
+    // handed to the transfer object in the
+    // multigrid. Since we call a compress
+    // inside the multigrid these constraints
+    // are not allowed to be inhomogeneous so
+    // we store them in different ConstraintMatrix
+    // objects.
+    ConstraintMatrix     hanging_node_constraints;
+    ConstraintMatrix     constraints;
+
+    vector_t       solution;
+    vector_t       system_rhs;
+
+    const unsigned int degree;
+
+    // The following four objects are the
+    // only additional member variables,
+    // compared to step-6. They first three
+    // represent the
+    // operators that act on individual
+    // levels of the multilevel hierarchy,
+    // rather than on the finest mesh as do
+    // the objects above while the last object
+    // stores information about the boundary
+    // indices on each level and information
+    // about indices lying on a refinement
+    // edge between two different refinement
+    // levels.
+    //
+    // To facilitate having objects on each
+    // level of a multilevel hierarchy,
+    // deal.II has the MGLevelObject class
+    // template that provides storage for
+    // objects on each level. What we need
+    // here are matrices on each level, which
+    // implies that we also need sparsity
+    // patterns on each level. As outlined in
+    // the @ref mg_paper, the operators
+    // (matrices) that we need are actually
+    // twofold: one on the interior of each
+    // level, and one at the interface
+    // between each level and that part of
+    // the domain where the mesh is
+    // coarser. In fact, we will need the
+    // latter in two versions: for the
+    // direction from coarse to fine mesh and
+    // from fine to coarse. Fortunately,
+    // however, we here have a self-adjoint
+    // problem for which one of these is the
+    // transpose of the other, and so we only
+    // have to build one; we choose the one
+    // from coarse to fine.
+    MGLevelObject<SparsityPattern>       mg_sparsity_patterns;
+    MGLevelObject<matrix_t> mg_matrices;
+    MGLevelObject<matrix_t> mg_interface_matrices;
+    MGConstrainedDoFs                    mg_constrained_dofs;
+  };
+
+
+
+  // @sect3{Nonconstant coefficients}
+
+  // The implementation of nonconstant
+  // coefficients is copied verbatim
+  // from step-5 and step-6:
+
+  template <int dim>
+  class Coefficient : public Function<dim>
+  {
+  public:
+    Coefficient () : Function<dim>() {}
+
+    virtual double value (const Point<dim>   &p,
+                          const unsigned int  component = 0) const;
+
+    virtual void value_list (const std::vector<Point<dim> > &points,
+                             std::vector<double>            &values,
+                             const unsigned int              component = 0) const;
+  };
+
+
+
+  template <int dim>
+  double Coefficient<dim>::value (const Point<dim> &p,
+                                  const unsigned int) const
+  {
+    if (p.square() < 0.5*0.5)
+      return 20;
+    else
+      return 1;
+  }
+
+
+
+  template <int dim>
+  void Coefficient<dim>::value_list (const std::vector<Point<dim> > &points,
+                                     std::vector<double>            &values,
+                                     const unsigned int              component) const
+  {
+    const unsigned int n_points = points.size();
+
+    Assert (values.size() == n_points,
+            ExcDimensionMismatch (values.size(), n_points));
+
+    Assert (component == 0,
+            ExcIndexRange (component, 0, 1));
+
+    for (unsigned int i=0; i<n_points; ++i)
+      values[i] = Coefficient<dim>::value (points[i]);
+  }
+
+
+  // @sect3{The <code>LaplaceProblem</code> class implementation}
+
+  // @sect4{LaplaceProblem::LaplaceProblem}
+
+  // The constructor is left mostly
+  // unchanged. We take the polynomial degree
+  // of the finite elements to be used as a
+  // constructor argument and store it in a
+  // member variable.
+  //
+  // By convention, all adaptively refined
+  // triangulations in deal.II never change by
+  // more than one level across a face between
+  // cells. For our multigrid algorithms,
+  // however, we need a slightly stricter
+  // guarantee, namely that the mesh also does
+  // not change by more than refinement level
+  // across vertices that might connect two
+  // cells. In other words, we must prevent the
+  // following situation:
+  //
+  // @image html limit_level_difference_at_vertices.png ""
+  //
+  // This is achieved by passing the
+  // Triangulation::limit_level_difference_at_vertices
+  // flag to the constructor of the
+  // triangulation class.
+  template <int dim>
+  LaplaceProblem<dim>::LaplaceProblem (const unsigned int degree)
+    :
+    triangulation (MPI_COMM_WORLD,Triangulation<dim>::
+                   limit_level_difference_at_vertices),
+    fe (degree),
+    mg_dof_handler (triangulation),
+    degree(degree)
+  {}
+
+
+
+  // @sect4{LaplaceProblem::setup_system}
+
+  // The following function extends what the
+  // corresponding one in step-6 did. The top
+  // part, apart from the additional output,
+  // does the same:
+  template <int dim>
+  void LaplaceProblem<dim>::setup_system ()
+  {
+    mg_dof_handler.distribute_dofs (fe);
+    mg_dof_handler.distribute_mg_dofs (fe);
+
+
+    // Here we output not only the
+    // degrees of freedom on the finest
+    // level, but also in the
+    // multilevel structure
+    deallog << "Number of degrees of freedom: "
+            << mg_dof_handler.n_dofs();
+
+    for (unsigned int l=0; l<triangulation.n_levels(); ++l)
+      deallog << "   " << 'L' << l << ": "
+              << mg_dof_handler.n_dofs(l);
+    deallog  << std::endl;
+
+    sparsity_pattern.reinit (mg_dof_handler.n_dofs(),
+                             mg_dof_handler.n_dofs(),
+                             mg_dof_handler.max_couplings_between_dofs());
+    DoFTools::make_sparsity_pattern (mg_dof_handler, sparsity_pattern);
+
+
+    //solution.reinit (mg_dof_handler.n_dofs());
+    //system_rhs.reinit (mg_dof_handler.n_dofs());
+    solution.reinit(mg_dof_handler.locally_owned_dofs(), MPI_COMM_WORLD);
+    system_rhs.reinit(mg_dof_handler.locally_owned_dofs(), MPI_COMM_WORLD);
+
+    // But it starts to be a wee bit different
+    // here, although this still doesn't have
+    // anything to do with multigrid
+    // methods. step-6 took care of boundary
+    // values and hanging nodes in a separate
+    // step after assembling the global matrix
+    // from local contributions. This works,
+    // but the same can be done in a slightly
+    // simpler way if we already take care of
+    // these constraints at the time of copying
+    // local contributions into the global
+    // matrix. To this end, we here do not just
+    // compute the constraints do to hanging
+    // nodes, but also due to zero boundary
+    // conditions. We will
+    // use this set of constraints later on to
+    // help us copy local contributions
+    // correctly into the global linear system
+    // right away, without the need for a later
+    // clean-up stage:
+    constraints.clear ();
+    hanging_node_constraints.clear ();
+    DoFTools::make_hanging_node_constraints (mg_dof_handler, hanging_node_constraints);
+    DoFTools::make_hanging_node_constraints (mg_dof_handler, constraints);
+
+    typename FunctionMap<dim>::type      dirichlet_boundary;
+    ZeroFunction<dim>                    homogeneous_dirichlet_bc (1);
+    dirichlet_boundary[0] = &homogeneous_dirichlet_bc;
+    VectorTools::interpolate_boundary_values (static_cast<const DoFHandler<dim>&>(mg_dof_handler),
+                                              dirichlet_boundary,
+                                              constraints);
+    constraints.close ();
+    hanging_node_constraints.close ();
+    constraints.condense (sparsity_pattern);
+    sparsity_pattern.compress();
+    system_matrix.reinit (sparsity_pattern);
+
+    // The multigrid constraints have to be
+    // initialized. They need to know about
+    // the boundary values as well, so we
+    // pass the <code>dirichlet_boundary</code>
+    // here as well.
+    mg_constrained_dofs.clear();
+    mg_constrained_dofs.initialize(mg_dof_handler, dirichlet_boundary);
+
+
+    // Now for the things that concern the
+    // multigrid data structures. First, we
+    // resize the multi-level objects to hold
+    // matrices and sparsity patterns for every
+    // level. The coarse level is zero (this is
+    // mandatory right now but may change in a
+    // future revision). Note that these
+    // functions take a complete, inclusive
+    // range here (not a starting index and
+    // size), so the finest level is
+    // <code>n_levels-1</code>.  We first have
+    // to resize the container holding the
+    // SparseMatrix classes, since they have to
+    // release their SparsityPattern before the
+    // can be destroyed upon resizing.
+    const unsigned int n_levels = triangulation.n_levels();
+
+    mg_interface_matrices.resize(0, n_levels-1);
+    mg_interface_matrices.clear ();
+    mg_matrices.resize(0, n_levels-1);
+    mg_matrices.clear ();
+    mg_sparsity_patterns.resize(0, n_levels-1);
+
+    // Now, we have to provide a matrix on each
+    // level. To this end, we first use the
+    // MGTools::make_sparsity_pattern function
+    // to first generate a preliminary
+    // compressed sparsity pattern on each
+    // level (see the @ref Sparsity module for
+    // more information on this topic) and then
+    // copy it over to the one we really
+    // want. The next step is to initialize
+    // both kinds of level matrices with these
+    // sparsity patterns.
+    //
+    // It may be worth pointing out that the
+    // interface matrices only have entries for
+    // degrees of freedom that sit at or next
+    // to the interface between coarser and
+    // finer levels of the mesh. They are
+    // therefore even sparser than the matrices
+    // on the individual levels of our
+    // multigrid hierarchy. If we were more
+    // concerned about memory usage (and
+    // possibly the speed with which we can
+    // multiply with these matrices), we should
+    // use separate and different sparsity
+    // patterns for these two kinds of
+    // matrices.
+    for (unsigned int level=0; level<n_levels; ++level)
+      {
+        CompressedSparsityPattern csp;
+        csp.reinit(mg_dof_handler.n_dofs(level),
+                   mg_dof_handler.n_dofs(level));
+        MGTools::make_sparsity_pattern(mg_dof_handler, csp, level);
+
+        mg_sparsity_patterns[level].copy_from (csp);
+
+        mg_matrices[level].reinit(mg_sparsity_patterns[level]);
+        mg_interface_matrices[level].reinit(mg_sparsity_patterns[level]);
+      }
+  }
+
+
+  // @sect4{LaplaceProblem::assemble_system}
+
+  // The following function assembles the
+  // linear system on the finesh level of the
+  // mesh. It is almost exactly the same as in
+  // step-6, with the exception that we don't
+  // eliminate hanging nodes and boundary
+  // values after assembling, but while copying
+  // local contributions into the global
+  // matrix. This is not only simpler but also
+  // more efficient for large problems.
+  //
+  // This latter trick is something that only
+  // found its way into deal.II over time and
+  // wasn't used in the initial version of this
+  // tutorial program. There is, however, a
+  // discussion of this function in the
+  // introduction of step-27.
+  template <int dim>
+  void LaplaceProblem<dim>::assemble_system ()
+  {
+    const QGauss<dim>  quadrature_formula(degree+1);
+
+    FEValues<dim> fe_values (fe, quadrature_formula,
+                             update_values    |  update_gradients |
+                             update_quadrature_points  |  update_JxW_values);
+
+    const unsigned int   dofs_per_cell = fe.dofs_per_cell;
+    const unsigned int   n_q_points    = quadrature_formula.size();
+
+    FullMatrix<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);
+
+    const Coefficient<dim> coefficient;
+    std::vector<double>    coefficient_values (n_q_points);
+
+    typename DoFHandler<dim>::active_cell_iterator
+    cell = mg_dof_handler.begin_active(),
+    endc = mg_dof_handler.end();
+    for (; cell!=endc; ++cell)
+      if (cell->is_locally_owned())
+        {
+          cell_matrix = 0;
+          cell_rhs = 0;
+
+          fe_values.reinit (cell);
+
+          coefficient.value_list (fe_values.get_quadrature_points(),
+                                  coefficient_values);
+
+          for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+            for (unsigned int i=0; i<dofs_per_cell; ++i)
+              {
+                for (unsigned int j=0; j<dofs_per_cell; ++j)
+                  cell_matrix(i,j) += (coefficient_values[q_point] *
+                                       fe_values.shape_grad(i,q_point) *
+                                       fe_values.shape_grad(j,q_point) *
+                                       fe_values.JxW(q_point));
+
+                cell_rhs(i) += (fe_values.shape_value(i,q_point) *
+                                1.0 *
+                                fe_values.JxW(q_point));
+              }
+
+          cell->get_dof_indices (local_dof_indices);
+          constraints.distribute_local_to_global (cell_matrix, cell_rhs,
+                                                  local_dof_indices,
+                                                  system_matrix, system_rhs);
+        }
+  }
+
+
+  // @sect4{LaplaceProblem::assemble_multigrid}
+
+  // The next function is the one that builds
+  // the linear operators (matrices) that
+  // define the multigrid method on each level
+  // of the mesh. The integration core is the
+  // same as above, but the loop below will go
+  // over all existing cells instead of just
+  // the active ones, and the results must be
+  // entered into the correct matrix. Note also
+  // that since we only do multi-level
+  // preconditioning, no right-hand side needs
+  // to be assembled here.
+  //
+  // Before we go there, however, we have to
+  // take care of a significant amount of book
+  // keeping:
+  template <int dim>
+  void LaplaceProblem<dim>::assemble_multigrid ()
+  {
+    QGauss<dim>  quadrature_formula(1+degree);
+
+    FEValues<dim> fe_values (fe, quadrature_formula,
+                             update_values   | update_gradients |
+                             update_quadrature_points | update_JxW_values);
+
+    const unsigned int   dofs_per_cell   = fe.dofs_per_cell;
+    const unsigned int   n_q_points      = quadrature_formula.size();
+
+    FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+
+    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+
+    const Coefficient<dim> coefficient;
+    std::vector<double>    coefficient_values (n_q_points);
+
+    // Next a few things that are specific to
+    // building the multigrid data structures
+    // (since we only need them in the current
+    // function, rather than also elsewhere, we
+    // build them here instead of the
+    // <code>setup_system</code>
+    // function). Some of the following may be
+    // a bit obscure if you're not familiar
+    // with the algorithm actually implemented
+    // in deal.II to support multilevel
+    // algorithms on adaptive meshes; if some
+    // of the things below seem strange, take a
+    // look at the @ref mg_paper.
+    //
+    // Our first job is to identify those
+    // degrees of freedom on each level that
+    // are located on interfaces between
+    // adaptively refined levels, and those
+    // that lie on the interface but also on
+    // the exterior boundary of the domain. As
+    // in many other parts of the library, we
+    // do this by using boolean masks,
+    // i.e. vectors of booleans each element of
+    // which indicates whether the
+    // corresponding degree of freedom index is
+    // an interface DoF or not. The <code>MGConstraints</code>
+    // already computed the information for us
+    // when we called initialize in <code>setup_system()</code>.
+    std::vector<std::vector<bool> > interface_dofs
+      = mg_constrained_dofs.get_refinement_edge_indices ();
+    std::vector<std::vector<bool> > boundary_interface_dofs
+      = mg_constrained_dofs.get_refinement_edge_boundary_indices ();
+
+    // The indices just identified will later
+    // be used to decide where the assembled value
+    // has to be added into on each level.
+    // On the other hand,
+    // we also have to impose zero boundary
+    // conditions on the external boundary of
+    // each level. But this the <code>MGConstraints</code>
+    // knows it. So we simply ask for them by calling
+    // <code>get_boundary_indices ()</code>.
+    // The third step is to construct
+    // constraints on all those degrees of
+    // freedom: their value should be zero
+    // after each application of the level
+    // operators. To this end, we construct
+    // ConstraintMatrix objects for each level,
+    // and add to each of these constraints for
+    // each degree of freedom. Due to the way
+    // the ConstraintMatrix stores its data,
+    // the function to add a constraint on a
+    // single degree of freedom and force it to
+    // be zero is called
+    // Constraintmatrix::add_line(); doing so
+    // for several degrees of freedom at once
+    // can be done using
+    // Constraintmatrix::add_lines():
+    std::vector<ConstraintMatrix> boundary_constraints (triangulation.n_levels());
+    std::vector<ConstraintMatrix> boundary_interface_constraints (triangulation.n_levels());
+    for (unsigned int level=0; level<triangulation.n_levels(); ++level)
+      {
+        boundary_constraints[level].add_lines (interface_dofs[level]);
+        boundary_constraints[level].add_lines (mg_constrained_dofs.get_boundary_indices()[level]);
+        boundary_constraints[level].close ();
+
+        boundary_interface_constraints[level]
+        .add_lines (boundary_interface_dofs[level]);
+        boundary_interface_constraints[level].close ();
+      }
+
+    // Now that we're done with most of our
+    // preliminaries, let's start the
+    // integration loop. It looks mostly like
+    // the loop in
+    // <code>assemble_system</code>, with two
+    // exceptions: (i) we don't need a right
+    // hand side, and more significantly (ii) we
+    // don't just loop over all active cells,
+    // but in fact all cells, active or
+    // not. Consequently, the correct iterator
+    // to use is MGDoFHandler::cell_iterator
+    // rather than
+    // MGDoFHandler::active_cell_iterator. Let's
+    // go about it:
+    typename DoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
+                                            endc = mg_dof_handler.end();
+
+    for (; cell!=endc; ++cell)
+      if (cell->level_subdomain_id()==triangulation.locally_owned_subdomain())
+        {
+          cell_matrix = 0;
+          fe_values.reinit (cell);
+
+          coefficient.value_list (fe_values.get_quadrature_points(),
+                                  coefficient_values);
+
+          for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+            for (unsigned int i=0; i<dofs_per_cell; ++i)
+              for (unsigned int j=0; j<dofs_per_cell; ++j)
+                cell_matrix(i,j) += (coefficient_values[q_point] *
+                                     fe_values.shape_grad(i,q_point) *
+                                     fe_values.shape_grad(j,q_point) *
+                                     fe_values.JxW(q_point));
+
+          // The rest of the assembly is again
+          // slightly different. This starts with
+          // a gotcha that is easily forgotten:
+          // The indices of global degrees of
+          // freedom we want here are the ones
+          // for current level, not for the
+          // global matrix. We therefore need the
+          // function
+          // MGDoFAccessorLLget_mg_dof_indices,
+          // not MGDoFAccessor::get_dof_indices
+          // as used in the assembly of the
+          // global system:
+          cell->get_mg_dof_indices (local_dof_indices);
+
+          // Next, we need to copy local
+          // contributions into the level
+          // objects. We can do this in the same
+          // way as in the global assembly, using
+          // a constraint object that takes care
+          // of constrained degrees (which here
+          // are only boundary nodes, as the
+          // individual levels have no hanging
+          // node constraints). Note that the
+          // <code>boundary_constraints</code>
+          // object makes sure that the level
+          // matrices contains no contributions
+          // from degrees of freedom at the
+          // interface between cells of different
+          // refinement level.
+          boundary_constraints[cell->level()]
+          .distribute_local_to_global (cell_matrix,
+                                       local_dof_indices,
+                                       mg_matrices[cell->level()]);
+
+          // The next step is again slightly more
+          // obscure (but explained in the @ref
+          // mg_paper): We need the remainder of
+          // the operator that we just copied
+          // into the <code>mg_matrices</code>
+          // object, namely the part on the
+          // interface between cells at the
+          // current level and cells one level
+          // coarser. This matrix exists in two
+          // directions: for interior DoFs (index
+          // $i$) of the current level to those
+          // sitting on the interface (index
+          // $j$), and the other way around. Of
+          // course, since we have a symmetric
+          // operator, one of these matrices is
+          // the transpose of the other.
+          //
+          // The way we assemble these matrices
+          // is as follows: since the are formed
+          // from parts of the local
+          // contributions, we first delete all
+          // those parts of the local
+          // contributions that we are not
+          // interested in, namely all those
+          // elements of the local matrix for
+          // which not $i$ is an interface DoF
+          // and $j$ is not. The result is one of
+          // the two matrices that we are
+          // interested in, and we then copy it
+          // into the
+          // <code>mg_interface_matrices</code>
+          // object. The
+          // <code>boundary_interface_constraints</code>
+          // object at the same time makes sure
+          // that we delete contributions from
+          // all degrees of freedom that are not
+          // only on the interface but also on
+          // the external boundary of the domain.
+          //
+          // The last part to remember is how to
+          // get the other matrix. Since it is
+          // only the transpose, we will later
+          // (in the <code>solve()</code>
+          // function) be able to just pass the
+          // transpose matrix where necessary.
+          for (unsigned int i=0; i<dofs_per_cell; ++i)
+            for (unsigned int j=0; j<dofs_per_cell; ++j)
+              if ( !(interface_dofs[cell->level()][local_dof_indices[i]]==true &&
+                     interface_dofs[cell->level()][local_dof_indices[j]]==false))
+                cell_matrix(i,j) = 0;
+
+          boundary_interface_constraints[cell->level()]
+          .distribute_local_to_global (cell_matrix,
+                                       local_dof_indices,
+                                       mg_interface_matrices[cell->level()]);
+        }
+  }
+
+
+
+  // @sect4{LaplaceProblem::solve}
+
+  // This is the other function that is
+  // significantly different in support of the
+  // multigrid solver (or, in fact, the
+  // preconditioner for which we use the
+  // multigrid method).
+  //
+  // Let us start out by setting up two of the
+  // components of multilevel methods: transfer
+  // operators between levels, and a solver on
+  // the coarsest level. In finite element
+  // methods, the transfer operators are
+  // derived from the finite element function
+  // spaces involved and can often be computed
+  // in a generic way independent of the
+  // problem under consideration. In that case,
+  // we can use the MGTransferPrebuilt class
+  // that, given the constraints on the global
+  // level and an MGDoFHandler object computes
+  // the matrices corresponding to these
+  // transfer operators.
+  //
+  // The second part of the following lines
+  // deals with the coarse grid solver. Since
+  // our coarse grid is very coarse indeed, we
+  // decide for a direct solver (a Householder
+  // decomposition of the coarsest level
+  // matrix), even if its implementation is not
+  // particularly sophisticated. If our coarse
+  // mesh had many more cells than the five we
+  // have here, something better suited would
+  // obviously be necessary here.
+  template <int dim>
+  void LaplaceProblem<dim>::solve ()
+  {
+
+    // Create the object that deals with the transfer
+    // between different refinement levels. We need to
+    // pass it the hanging node constraints.
+    MGTransferPrebuilt<vector_t> mg_transfer(hanging_node_constraints, mg_constrained_dofs);
+    // Now the prolongation matrix has to be built.
+    // This matrix needs to take the boundary values on
+    // each level into account and needs to know about
+    // the indices at the refinement egdes. The
+    // <code>MGConstraints</code> knows about that so
+    // pass it as an argument.
+    mg_transfer.build_matrices(mg_dof_handler);
+
+    matrix_t coarse_matrix;
+    coarse_matrix.copy_from (mg_matrices[0]);
+    //MGCoarseGridHouseholder<double,vector_t> coarse_grid_solver;
+    //coarse_grid_solver.initialize (coarse_matrix);
+
+    SolverControl coarse_solver_control (1000, 1e-10, false, false);
+    SolverGMRES<vector_t> coarse_solver(coarse_solver_control);
+    PreconditionIdentity id;
+    MGCoarseGridLACIteration<SolverGMRES<vector_t>,vector_t> coarse_grid_solver(coarse_solver,
+        coarse_matrix,
+        id);
+
+    // The next component of a multilevel
+    // solver or preconditioner is that we need
+    // a smoother on each level. A common
+    // choice for this is to use the
+    // application of a relaxation method (such
+    // as the SOR, Jacobi or Richardson method). The
+    // MGSmootherPrecondition class provides
+    // support for this kind of
+    // smoother. Here, we opt for the
+    // application of a single SOR
+    // iteration. To this end, we define an
+    // appropriate <code>typedef</code> and
+    // then setup a smoother object.
+    //
+    // Since this smoother needs temporary
+    // vectors to store intermediate results,
+    // we need to provide a VectorMemory
+    // object. Since these vectors will be
+    // reused over and over, the
+    // GrowingVectorMemory is more time
+    // efficient than the PrimitiveVectorMemory
+    // class in the current case.
+    //
+    // The last step is to initialize the
+    // smoother object with our level matrices
+    // and to set some smoothing parameters.
+    // The <code>initialize()</code> function
+    // can optionally take additional arguments
+    // that will be passed to the smoother
+    // object on each level. In the current
+    // case for the SOR smoother, this could,
+    // for example, include a relaxation
+    // parameter. However, we here leave these
+    // at their default values. The call to
+    // <code>set_steps()</code> indicates that
+    // we will use two pre- and two
+    // post-smoothing steps on each level; to
+    // use a variable number of smoother steps
+    // on different levels, more options can be
+    // set in the constructor call to the
+    // <code>mg_smoother</code> object.
+    //
+    // The last step results from the fact that
+    // we use the SOR method as a smoother -
+    // which is not symmetric - but we use the
+    // conjugate gradient iteration (which
+    // requires a symmetric preconditioner)
+    // below, we need to let the multilevel
+    // preconditioner make sure that we get a
+    // symmetric operator even for nonsymmetric
+    // smoothers:
+    typedef TrilinosWrappers::PreconditionSOR Smoother;
+    GrowingVectorMemory<vector_t>   vector_memory;
+    MGSmootherPrecondition<matrix_t, Smoother, vector_t >
+    mg_smoother(vector_memory);
+    mg_smoother.initialize(mg_matrices);
+    mg_smoother.set_steps(2);
+    mg_smoother.set_symmetric(true);
+
+    // The next preparatory step is that we
+    // must wrap our level and interface
+    // matrices in an object having the
+    // required multiplication functions. We
+    // will create two objects for the
+    // interface objects going from coarse to
+    // fine and the other way around; the
+    // multigrid algorithm will later use the
+    // transpose operator for the latter
+    // operation, allowing us to initialize
+    // both up and down versions of the
+    // operator with the matrices we already
+    // built:
+    MGMatrix<matrix_t,vector_t> mg_matrix(&mg_matrices);
+    MGMatrix<matrix_t,vector_t> mg_interface_up(&mg_interface_matrices);
+    MGMatrix<matrix_t,vector_t> mg_interface_down(&mg_interface_matrices);
+
+    // Now, we are ready to set up the
+    // V-cycle operator and the
+    // multilevel preconditioner.
+    Multigrid<vector_t > mg(mg_dof_handler,
+                            mg_matrix,
+                            coarse_grid_solver,
+                            mg_transfer,
+                            mg_smoother,
+                            mg_smoother);
+    mg.set_edge_matrices(mg_interface_down, mg_interface_up);
+
+    PreconditionMG<dim, vector_t, MGTransferPrebuilt<vector_t> >
+    preconditioner(mg_dof_handler, mg, mg_transfer);
+
+    // With all this together, we can finally
+    // get about solving the linear system in
+    // the usual way:
+    SolverControl solver_control (1000, 1e-12);
+    SolverCG<vector_t>    cg (solver_control);
+
+    solution = 0;
+
+    cg.solve (system_matrix, solution, system_rhs,
+              preconditioner);
+    constraints.distribute (solution);
+  }
+
+
+
+  // @sect4{Postprocessing}
+
+  // The following two functions postprocess a
+  // solution once it is computed. In
+  // particular, the first one refines the mesh
+  // at the beginning of each cycle while the
+  // second one outputs results at the end of
+  // each such cycle. The functions are almost
+  // unchanged from those in step-6, with the
+  // exception of two minor differences: The
+  // KellyErrorEstimator::estimate function
+  // wants an argument of type DoFHandler, not
+  // MGDoFHandler, and so we have to cast from
+  // derived to base class; and we generate
+  // output in VTK format, to use the more
+  // modern visualization programs available
+  // today compared to those that were
+  // available when step-6 was written.
+  template <int dim>
+  void LaplaceProblem<dim>::refine_grid ()
+  {
+    Vector<float> estimated_error_per_cell (triangulation.n_active_cells());
+
+    KellyErrorEstimator<dim>::estimate (static_cast<DoFHandler<dim>&>(mg_dof_handler),
+                                        QGauss<dim-1>(3),
+                                        typename FunctionMap<dim>::type(),
+                                        solution,
+                                        estimated_error_per_cell);
+    GridRefinement::refine_and_coarsen_fixed_number (triangulation,
+                                                     estimated_error_per_cell,
+                                                     0.3, 0.03);
+    triangulation.execute_coarsening_and_refinement ();
+  }
+
+
+
+  template <int dim>
+  void LaplaceProblem<dim>::output_results (const unsigned int cycle) const
+  {
+    DataOut<dim> data_out;
+
+    data_out.attach_dof_handler (mg_dof_handler);
+    data_out.add_data_vector (solution, "solution");
+    data_out.build_patches ();
+
+    std::ostringstream filename;
+    filename << "solution-"
+             << cycle
+             << ".vtk";
+
+    std::ofstream output (filename.str().c_str());
+    data_out.write_vtk (output);
+  }
+
+
+  // @sect4{LaplaceProblem::run}
+
+  // Like several of the functions above, this
+  // is almost exactly a copy of of the
+  // corresponding function in step-6. The only
+  // difference is the call to
+  // <code>assemble_multigrid</code> that takes
+  // care of forming the matrices on every
+  // level that we need in the multigrid
+  // method.
+  template <int dim>
+  void LaplaceProblem<dim>::run ()
+  {
+    for (unsigned int cycle=0; cycle<8; ++cycle)
+      {
+        deallog << "Cycle " << cycle << ':' << std::endl;
+
+        if (cycle == 0)
+          {
+            GridGenerator::hyper_ball (triangulation);
+
+            static const HyperBallBoundary<dim> boundary;
+            triangulation.set_boundary (0, boundary);
+
+            triangulation.refine_global (1);
+          }
+        else
+          refine_grid ();
+
+
+        deallog << "   Number of active cells:       "
+                << triangulation.n_active_cells()
+                << std::endl;
+
+        setup_system ();
+
+        deallog << "   Number of degrees of freedom: "
+                << mg_dof_handler.n_dofs()
+                << " (by level: ";
+        for (unsigned int level=0; level<triangulation.n_levels(); ++level)
+          deallog << mg_dof_handler.n_dofs(level)
+                  << (level == triangulation.n_levels()-1
+                      ? ")" : ", ");
+        deallog << std::endl;
+
+        assemble_system ();
+        assemble_multigrid ();
+
+        solve ();
+        output_results (cycle);
+      }
+  }
+}
+
+
+// @sect3{The main() function}
+//
+// This is again the same function as
+// in step-6:
+int main (int argc, char *argv[])
+{
+  dealii::Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv);
+
+  try
+    {
+      using namespace dealii;
+      using namespace Step16;
+
+      LaplaceProblem<2> laplace_problem(1);
+      laplace_problem.run ();
+    }
+  catch (std::exception &exc)
+    {
+      std::cerr << std::endl << std::endl
+                << "----------------------------------------------------"
+                << std::endl;
+      std::cerr << "Exception on processing: " << std::endl
+                << exc.what() << std::endl
+                << "Aborting!" << std::endl
+                << "----------------------------------------------------"
+                << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      std::cerr << std::endl << std::endl
+                << "----------------------------------------------------"
+                << std::endl;
+      std::cerr << "Unknown exception!" << std::endl
+                << "Aborting!" << std::endl
+                << "----------------------------------------------------"
+                << std::endl;
+      return 1;
+    }
+
+  return 0;
+}
index 27341acc0be9fcc4cb7f8ba732c3979e997741ef..835d5270e5b4a5186aeace165f4582ef99b9756c 100644 (file)
@@ -23,7 +23,6 @@ DEAL_II_NAMESPACE_OPEN
 // Forward declarations
 
 template <int dim, int spacedim> class DoFHandler;
-template <int dim, int spacedim> class MGDoFHandler;
 namespace hp
 {
   template <int dim, int spacedim> class DoFHandler;
@@ -48,7 +47,7 @@ namespace hp
  * BlockIndices::block_start() will return the start index for each of
  * the blocks.
  *
- * When an MGDoFHandler is used, the same structure is automatically
+ * When a DoFHandler with levels is used, the same structure is automatically
  * generated for each level. The level blocks can be accessed through
  * level().
  *
@@ -94,26 +93,25 @@ public:
    * describing block structure
    * of the DoFHandler.
    *
+  * By default, this function will
+  * attempt to initialize whatever
+  * is possible. If active dofs
+  * have been assigned int the
+  * DoFHandler argument, they
+  * BlockIndices for those will be
+  * generated. The same for level
+  * dofs.
+  *
+  * This default behavior can be
+  * overridden by the two
+  * parameters, which can switch
+  * off active dofs or level dofs.
+  *
    * This function will also clear
    * the local() indices.
    */
   template <int dim, int spacedim>
-  void initialize(const DoFHandler<dim, spacedim> &, bool levels_only = false, bool multigrid = false);
-
-  /**
-   * @brief Fill the object with values
-   * describing level block
-   * structure of the
-   * MGDoFHandler. If
-   * <tt>levels_only</tt> is false,
-   * the other initialize() is
-   * called as well.
-   *
-   * This function will also clear
-   * the local() indices.
-   */
-  template <int dim, int spacedim>
-  void initialize(const MGDoFHandler<dim, spacedim> &, bool levels_only = false);
+  void initialize(const DoFHandler<dim, spacedim> &, bool levels_only = false, bool active_only = false);
 
   /**
    * @brief Initialize block structure
index 0a429e38a740a1d7c858f7f1ce0136639c402a83..beebb359665561af27457d83f497adafacbb77ca 100644 (file)
@@ -120,32 +120,25 @@ namespace internal
 
 
 /**
- * A class that gives access to the degrees of freedom stored in a DoFHandler
- * or hp::DoFHandler object. Accessors are used to, well, access the data that
+ * A class that gives access to the degrees of freedom stored in a DoFHandler,
+ * MGSoDHandler, or hp::DoFHandler object. Accessors are used to, access the data that
  * pertains to edges, faces, and cells of a triangulation. The concept is
  * explained in more detail in connection to @ref Iterators.
  *
- * This class follows mainly the route laid out by the accessor library
- * declared in the triangulation library (TriaAccessor). It enables the user
- * to access the degrees of freedom on lines, quads, or hexes. The first
- * template argument of this class determines the dimensionality of the object
- * under consideration: 1 for lines, 2 for quads, and 3 for hexes. From the
- * second template argument we can deduce the dimensionality of the
- * triangulation to which this object belongs as well as the dimensionality of
- * the space in which it is embedded. The second argument also denotes the
- * type of DoF handler we should work on. It can either be
- * ::DoFHandler or hp::DoFHandler.
+ * This class follows mainly the route laid out by the accessor
+ * library declared in the triangulation library (TriaAccessor). It
+ * enables the user to access the degrees of freedom on lines, quads,
+ * or hexes. The first template argument of this class determines the
+ * dimensionality of the object under consideration: 1 for lines, 2
+ * for quads, and 3 for hexes. The second argument denotes the type of
+ * DoF handler we should work on. It can either be ::DoFHandler or
+ * hp::DoFHandler.  From the second template argument we also deduce
+ * the dimension of the Triangulation this object refers to as well as
+ * the dimension of the space into which it is embedded. Finally, the
+ * template argument <code>level_dof_access</code> governs the
+ * behavior of the function dof_indices(). See the section on Generic loops below.
  *
- * Depending on whether the structural dimension of the object
- * accessed equals the dimension on which the DoF handler object
- * operates, this class is derived from CellAccessor or
- * TriaAccessor. This means that, for example accessors to quads
- * in 2d have access to all the mesh aspects of cells, whereas
- * accessors to quads in 3d can only access things that make sense for
- * faces.
- *
- *
- * <h3>Usage</h3>
+ * <h3>Typedefs</h3>
  *
  * Usage is best to happen through the typedefs to the various kinds
  * of iterators provided by the DoFHandler and hp::DoFHandler classes,
@@ -153,6 +146,22 @@ namespace internal
  * template interface as well as providing easier typing (much less
  * complicated names!).
  *
+ * <h3>Generic loops and the third template argument</h3>
+ *
+ * Many loops look very similar, whether they operate on the active
+ * dofs of the active cells of the Triangulation or on the level dodfs
+ * of a single level or the whole grid hierarchy. In order to use
+ * polymorphism in such loops, they access degrees of freedom through
+ * the function dof_indices(), which changes behavior according to the
+ * third template argument.  If the argument is false, then the active
+ * dofs of active cells are accessed. If it is true, the level dofs
+ * are used. DoFHandler has functions, for instance begin() and
+ * begin_mg(), which return either type or the other. Additionally,
+ * they can be cast into each other, in case this is needed, since
+ * they access the same data.
+ *
+ * It is highly recommended to use the function dof_indices() in
+ * generic loops in lieu of get_dof_indices() or get_mg_dof_indices().
  *
  * <h3>Inheritance</h3>
  *
@@ -169,9 +178,9 @@ namespace internal
  *
  * @ingroup dofs
  * @ingroup Accessors
- * @author Wolfgang Bangerth, 1998, 2006, 2008
+ * @author Wolfgang Bangerth, 1998, 2006, 2008, Timo Heister, Guido Kanschat, 2012
  */
-template <int structdim, class DH>
+template <int structdim, class DH, bool level_dof_access>
 class DoFAccessor : public dealii::internal::DoFAccessor::Inheritance<structdim, DH::dimension, DH::space_dimension>::BaseClass
 {
 public:
@@ -257,9 +266,16 @@ public:
    * make sense, just like the
    * previous one.
    */
-  template <int dim2, class DH2>
-  DoFAccessor (const DoFAccessor<dim2, DH2> &);
+  template <int dim2, class DH2, bool level_dof_access2>
+  DoFAccessor (const DoFAccessor<dim2, DH2, level_dof_access2> &);
 
+  /**
+   * Copy constructor allowing to
+   * switch level access and active
+   * access.
+   */
+  template <bool level_dof_access2>
+  DoFAccessor(const DoFAccessor<structdim, DH, level_dof_access2> &);
   /**
    * @}
    */
@@ -276,7 +292,8 @@ public:
    * Implement the copy operator needed
    * for the iterator classes.
    */
-  void copy_from (const DoFAccessor<structdim, DH> &a);
+  template <bool level_dof_access2>
+  void copy_from (const DoFAccessor<structdim, DH, level_dof_access2> &a);
 
   /**
    * Copy operator used by the
@@ -287,11 +304,18 @@ public:
    */
   void copy_from (const TriaAccessorBase<structdim, DH::dimension, DH::space_dimension> &da);
 
+  /**
+   * Tell the caller whether
+   * dof_indices() accesses active
+   * or level dofs.
+   */
+  static bool is_level_cell();
+
   /**
    * Return an iterator pointing to
    * the the parent.
    */
-  TriaIterator<DoFAccessor<structdim,DH> >
+  TriaIterator<DoFAccessor<structdim,DH, level_dof_access> >
   parent () const;
 
   /**
@@ -305,7 +329,7 @@ public:
    * Return an iterator pointing to
    * the the @p c-th child.
    */
-  TriaIterator<DoFAccessor<structdim,DH> >
+  TriaIterator<DoFAccessor<structdim,DH, level_dof_access> >
   child (const unsigned int c) const;
 
   /**
@@ -317,7 +341,7 @@ public:
   * function returns an iterator
   * to itself.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::line_iterator
+  typename dealii::internal::DoFHandler::Iterators<DH, level_dof_access>::line_iterator
   line (const unsigned int i) const;
 
   /**
@@ -329,7 +353,7 @@ public:
   * function returns an iterator
   * to itself.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::quad_iterator
+  typename dealii::internal::DoFHandler::Iterators<DH, level_dof_access>::quad_iterator
   quad (const unsigned int i) const;
 
   /**
@@ -418,6 +442,7 @@ public:
                         const unsigned int fe_index = DH::default_fe_index) const;
 
   void get_mg_dof_indices (const int level, std::vector<unsigned int> &dof_indices, const unsigned int fe_index = DH::default_fe_index) const;
+  void set_mg_dof_indices (const int level, const std::vector<unsigned int> &dof_indices, const unsigned int fe_index = DH::default_fe_index);
 
   /**
    * Global DoF index of the <i>i</i>
@@ -495,25 +520,25 @@ public:
    * freedom, and fe_index has to
    * match the result of
    * active_fe_index().
-  *
-  * @note While the get_dof_indices()
-  * function returns an array that
-  * contains the indices of all degrees of
-  * freedom that somehow live on this
-  * object (i.e. on the vertices, edges or
-  * interior of this object), the current
-  * dof_index() function only considers
-  * the DoFs that really belong to this
-  * particular object's interior. In other
-  * words, as an example, if the current
-  * object refers to a quad (a cell in 2d,
-  * a face in 3d) and the finite element
-  * associated with it is a bilinear one,
-  * then the get_dof_indices() will return
-  * an array of size 4 while dof_index()
-  * will produce an exception because no
-  * degrees are defined in the interior of
-  * the face.
+   *
+   * @note While the get_dof_indices()
+   * function returns an array that
+   * contains the indices of all degrees of
+   * freedom that somehow live on this
+   * object (i.e. on the vertices, edges or
+   * interior of this object), the current
+   * dof_index() function only considers
+   * the DoFs that really belong to this
+   * particular object's interior. In other
+   * words, as an example, if the current
+   * object refers to a quad (a cell in 2d,
+   * a face in 3d) and the finite element
+   * associated with it is a bilinear one,
+   * then the get_dof_indices() will return
+   * an array of size 4 while dof_index()
+   * will produce an exception because no
+   * degrees are defined in the interior of
+   * the face.
    */
   unsigned int dof_index (const unsigned int i,
                           const unsigned int fe_index = DH::default_fe_index) const;
@@ -652,17 +677,41 @@ protected:
    * to be accessed.
    */
   DH *dof_handler;
-
-  /**
-   *  Compare for equality.
-   */
-  bool operator == (const DoFAccessor &) const;
-
+public:
   /**
-   * Compare for inequality.
-   */
-  bool operator != (const DoFAccessor &) const;
-
+   * Compare for equality. Return
+   * <tt>true</tt> if the two
+   * accessors refer to the same object.
+   *
+   * The template parameters of this
+   * function allow for a comparison
+   * of very different
+   * objects. Therefore, some of them
+   * are disabled.
+   * Namely, if the dimension, or the dof
+   * handler of the two objects
+   * differ, an exception is
+   * generated. It can be
+   * expected that this is an
+   * unwanted comparison.
+   *
+   * The template parameter
+   * <tt>level_dof_access2</tt> is ignored, such
+   * that an iterator with level
+   * access can be equal to one with
+   * access to the active degrees of
+   * freedom.
+   */
+  template <int dim2, class DH2, bool level_dof_access2>
+  bool operator == (const DoFAccessor<dim2,DH2,level_dof_access2> &) const;
+
+  /**
+   * Compare for inequality. The
+   * boolean not of operator==().
+   */
+  template <int dim2, class DH2, bool level_dof_access2>
+  bool operator != (const DoFAccessor<dim2,DH2,level_dof_access2> &) const;
+protected:
   /**
    * Reset the DoF handler pointer.
    */
@@ -759,7 +808,7 @@ protected:
    * and operator!=.
    */
   template <typename> friend class TriaRawIterator;
-
+  template <int, class, bool> friend class DoFAccessor;
 
 private:
   /**
@@ -779,8 +828,8 @@ private:
    *  will give a linker error if used
    *  anyway.
    */
-  DoFAccessor<structdim,DH> &
-  operator = (const DoFAccessor<structdim,DH> &da);
+  DoFAccessor<structdim,DH, level_dof_access> &
+  operator = (const DoFAccessor<structdim,DH, level_dof_access> &da);
 
   /**
    * Make the DoFHandler class a friend so
@@ -794,6 +843,7 @@ private:
   friend struct dealii::internal::DoFHandler::Implementation;
   friend struct dealii::internal::hp::DoFHandler::Implementation;
   friend struct dealii::internal::DoFCellAccessor::Implementation;
+  friend struct dealii::internal::DoFAccessor::Implementation;
 };
 
 
@@ -808,8 +858,8 @@ private:
  *
  * @author Wolfgang Bangerth, 2010
  */
-template <template <int, int> class DH, int spacedim>
-class DoFAccessor<0,DH<1,spacedim> > : public TriaAccessor<0,1,spacedim>
+template <template <int, int> class DH, int spacedim, bool level_dof_access>
+class DoFAccessor<0,DH<1,spacedim>, level_dof_access> : public TriaAccessor<0,1,spacedim>
 {
 public:
 
@@ -935,8 +985,8 @@ public:
    * make sense, just like the
    * previous one.
    */
-  template <int dim2, class DH2>
-  DoFAccessor (const DoFAccessor<dim2, DH2> &);
+  template <int dim2, class DH2, bool level_dof_access2>
+  DoFAccessor (const DoFAccessor<dim2, DH2, level_dof_access2> &);
 
   /**
    * @}
@@ -953,14 +1003,15 @@ public:
   /**
    * Copy operator.
    */
-  DoFAccessor<0,DH<1,spacedim> > &
-  operator = (const DoFAccessor<0,DH<1,spacedim> > &da);
+  DoFAccessor<0,DH<1,spacedim>, level_dof_access> &
+  operator = (const DoFAccessor<0,DH<1,spacedim>, level_dof_access> &da);
 
   /**
    * Implement the copy operator needed
    * for the iterator classes.
    */
-  void copy_from (const DoFAccessor<0, DH<1,spacedim> > &a);
+  template <bool level_dof_access2>
+  void copy_from (const DoFAccessor<0, DH<1,spacedim>, level_dof_access2> &a);
 
   /**
    * Copy operator used by the
@@ -975,7 +1026,7 @@ public:
    * Return an iterator pointing to
    * the the parent.
    */
-  TriaIterator<DoFAccessor<0,DH<1,spacedim> > >
+  TriaIterator<DoFAccessor<0,DH<1,spacedim>, level_dof_access> >
   parent () const;
 
   /**
@@ -989,7 +1040,7 @@ public:
    * Return an iterator pointing to
    * the the @p c-th child.
    */
-  TriaIterator<DoFAccessor<0,DH<1,spacedim> > >
+  TriaIterator<DoFAccessor<0,DH<1,spacedim>, level_dof_access > >
   child (const unsigned int c) const;
 
   /**
@@ -1001,7 +1052,7 @@ public:
   * function returns an iterator
   * to itself.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH<1,spacedim> >::line_iterator
+  typename dealii::internal::DoFHandler::Iterators<DH<1,spacedim>, level_dof_access>::line_iterator
   line (const unsigned int i) const;
 
   /**
@@ -1013,7 +1064,7 @@ public:
   * function returns an iterator
   * to itself.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH<1,spacedim> >::quad_iterator
+  typename dealii::internal::DoFHandler::Iterators<DH<1,spacedim>, level_dof_access>::quad_iterator
   quad (const unsigned int i) const;
 
   /**
@@ -1175,25 +1226,25 @@ public:
    * freedom, and fe_index has to
    * match the result of
    * active_fe_index().
-  *
-  * @note While the get_dof_indices()
-  * function returns an array that
-  * contains the indices of all degrees of
-  * freedom that somehow live on this
-  * object (i.e. on the vertices, edges or
-  * interior of this object), the current
-  * dof_index() function only considers
-  * the DoFs that really belong to this
-  * particular object's interior. In other
-  * words, as an example, if the current
-  * object refers to a quad (a cell in 2d,
-  * a face in 3d) and the finite element
-  * associated with it is a bilinear one,
-  * then the get_dof_indices() will return
-  * an array of size 4 while dof_index()
-  * will produce an exception because no
-  * degrees are defined in the interior of
-  * the face.
+   *
+   * @note While the get_dof_indices()
+   * function returns an array that
+   * contains the indices of all degrees of
+   * freedom that somehow live on this
+   * object (i.e. on the vertices, edges or
+   * interior of this object), the current
+   * dof_index() function only considers
+   * the DoFs that really belong to this
+   * particular object's interior. In other
+   * words, as an example, if the current
+   * object refers to a quad (a cell in 2d,
+   * a face in 3d) and the finite element
+   * associated with it is a bilinear one,
+   * then the get_dof_indices() will return
+   * an array of size 4 while dof_index()
+   * will produce an exception because no
+   * degrees are defined in the interior of
+   * the face.
    */
   unsigned int dof_index (const unsigned int i,
                           const unsigned int fe_index = AccessorData::default_fe_index) const;
@@ -1334,12 +1385,14 @@ protected:
   /**
    *  Compare for equality.
    */
-  bool operator == (const DoFAccessor &) const;
+  template <int dim2, class DH2, bool level_dof_access2>
+  bool operator == (const DoFAccessor<dim2,DH2,level_dof_access2> &) const;
 
   /**
    * Compare for inequality.
    */
-  bool operator != (const DoFAccessor &) const;
+  template <int dim2, class DH2, bool level_dof_access2>
+  bool operator != (const DoFAccessor<dim2,DH2,level_dof_access2> &) const;
 
   /**
    * Reset the DoF handler pointer.
@@ -1463,10 +1516,10 @@ protected:
  *
  * @ingroup dofs
  * @ingroup Accessors
- * @author Wolfgang Bangerth, 1998
+ * @author Wolfgang Bangerth, 1998, Timo Heister, Guido Kanschat, 2012
  */
-template <class DH>
-class DoFCellAccessor :  public DoFAccessor<DH::dimension,DH>
+template <class DH, bool level_dof_access>
+class DoFCellAccessor :  public DoFAccessor<DH::dimension,DH, level_dof_access>
 {
 public:
   /**
@@ -1479,13 +1532,11 @@ public:
    */
   static const unsigned int spacedim = DH::space_dimension;
 
+
   /**
-   * Declare the data type that
-   * this accessor class expects to
-   * get passed from the iterator
-   * classes.
+   * Data type passed by the iterator class.
    */
-  typedef typename DoFAccessor<DH::dimension,DH>::AccessorData AccessorData;
+  typedef DH AccessorData;
 
   /**
    * Declare a typedef to the base
@@ -1493,7 +1544,7 @@ public:
    * of the exception classes
    * simpler.
    */
-  typedef DoFAccessor<DH::dimension,DH> BaseClass;
+  typedef DoFAccessor<DH::dimension,DH, level_dof_access> BaseClass;
 
   /**
    * Define the type of the
@@ -1502,7 +1553,7 @@ public:
   typedef DH Container;
 
   /**
-   * @name Constructors
+   * @name Constructors and initialization
    */
   /**
    * @{
@@ -1546,8 +1597,9 @@ public:
    * make sense, just like the
    * previous one.
    */
-  template <int dim2, class DH2>
-  DoFCellAccessor (const DoFAccessor<dim2, DH2> &);
+  template <int dim2, class DH2, bool level_dof_access2>
+  explicit
+  DoFCellAccessor (const DoFAccessor<dim2, DH2, level_dof_access2> &);
 
   /**
    * @}
@@ -1562,7 +1614,7 @@ public:
    * without access to the DoF
    * data.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH, level_dof_access> >
   parent () const;
 
   /**
@@ -1581,7 +1633,7 @@ public:
    * without access to the DoF
    * data.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH, level_dof_access> >
   neighbor (const unsigned int) const;
 
   /**
@@ -1593,7 +1645,7 @@ public:
    * without access to the DoF
    * data.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH, level_dof_access> >
   child (const unsigned int) const;
 
   /**
@@ -1604,7 +1656,7 @@ public:
    * 1D, and maps to DoFAccessor::line
    * in 2D.
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::face_iterator
+  TriaIterator<DoFAccessor<DH::dimension-1,DH, level_dof_access> >
   face (const unsigned int i) const;
 
   /**
@@ -1618,7 +1670,7 @@ public:
    * access to the triangulation
    * data).
    */
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH, level_dof_access> >
   neighbor_child_on_subface (const unsigned int face_no,
                              const unsigned int subface_no) const;
 
@@ -2008,6 +2060,27 @@ public:
    */
 
   /**
+   * Obtain the global indices of the local degrees of freedom on this cell.
+   *
+   * If this object accesses a level
+   * cell (indicated by the third
+   * template argument or
+   * #is_level_cell), then return the
+   * result of get_mg_dof_indices(),
+   * else return get_dof_indices().
+   *
+   * You will get a
+   * level_cell_iterator when calling
+   * begin_mg() and a normal one
+   * otherwise.
+   *
+   * Examples for this use are in the implementation of DoFRenumbering.
+   */
+  void dof_indices (std::vector<unsigned int> &dof_indices) const;
+
+  /**
+   * @deprecated Use dof_indices() instead.
+   *
    * Return the indices of the dofs of this
    * quad in the standard ordering: dofs
    * on vertex 0, dofs on vertex 1, etc,
@@ -2036,24 +2109,16 @@ public:
    * function overwrites the one in
    * the base class.
    *
-   * This function is most often
-   * used on active objects (edges,
-   * faces, cells). It can be used
-   * on non-active objects as well
-   * (i.e. objects that have
-   * children), but only if the
-   * finite element under
-   * consideration has degrees of
-   * freedom exclusively on
-   * vertices. Otherwise, the
-   * function doesn't make much
-   * sense, since for example
-   * inactive edges do not have
-   * degrees of freedom associated
-   * with them at all.
+   * This is a function which requires that the cell be active.
+   *
+   * @deprecated Currently, this function can also be called for non-active cells, if all degrees of freedom of the FiniteElement are located in vertices. This functionality will vanish in a future release.
    */
   void get_dof_indices (std::vector<unsigned int> &dof_indices) const;
-
+  /**
+   * @deprecated Use dof_indices() with level_cell_iterator returned from begin_mg().
+   *
+   * Retrieve the global indices of the degrees of freedom on this cell in the level vector associated to the level of the cell.
+   */
   void get_mg_dof_indices (std::vector<unsigned int> &dof_indices) const;
 
   /**
@@ -2105,6 +2170,7 @@ public:
    * given DoF handler class.
    */
   void set_dof_indices (const std::vector<unsigned int> &dof_indices);
+  void set_mg_dof_indices (const std::vector<unsigned int> &dof_indices);
 
   /**
    * Update the cache in which we
@@ -2131,8 +2197,8 @@ private:
    *  will give a linker error if used
    *  anyway.
    */
-  DoFCellAccessor<DH> &
-  operator = (const DoFCellAccessor<DH> &da);
+  DoFCellAccessor<DH, level_dof_access> &
+  operator = (const DoFCellAccessor<DH, level_dof_access> &da);
 
   /**
    * Make the DoFHandler class a
@@ -2145,13 +2211,20 @@ private:
 };
 
 
+template <int sd, class DH, bool lda>
+inline
+bool
+DoFAccessor<sd, DH, lda>::is_level_cell()
+{
+  return lda;
+}
+
+
+
 DEAL_II_NAMESPACE_CLOSE
 
 // include more templates
 #include "dof_accessor.templates.h"
 
 
-/*----------------------------   dof_iterator.h     ---------------------------*/
-
 #endif
-/*----------------------------   dof_iterator.h     ---------------------------*/
index 6138ef29827a1d1990b28c0fe68314220efeeade..10aef3789fed1b87d37edf06cad19d98ec5bffd2 100644 (file)
@@ -31,18 +31,18 @@ DEAL_II_NAMESPACE_OPEN
 /*------------------------- Functions: DoFAccessor ---------------------------*/
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
-DoFAccessor<structdim,DH>::DoFAccessor ()
+DoFAccessor<structdim,DH,lda>::DoFAccessor ()
 {
   Assert (false, ExcInvalidObject());
 }
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
-DoFAccessor<structdim,DH>::DoFAccessor (
+DoFAccessor<structdim,DH,lda>::DoFAccessor (
   const Triangulation<DH::dimension,DH::space_dimension> *tria,
   const int                 level,
   const int                 index,
@@ -57,29 +57,40 @@ DoFAccessor<structdim,DH>::DoFAccessor (
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 template <int structdim2, int dim2, int spacedim2>
-DoFAccessor<structdim,DH>::DoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
+DoFAccessor<structdim,DH,lda>::DoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
 {
   Assert (false, ExcInvalidObject());
 }
 
 
 
-template <int structdim, class DH>
-template <int dim2, class DH2>
+template <int structdim, class DH, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
-DoFAccessor<structdim,DH>::DoFAccessor (const DoFAccessor<dim2, DH2> &)
+DoFAccessor<structdim,DH,lda>::DoFAccessor (const DoFAccessor<dim2, DH2, lda2> &other)
+  : BaseClass(other), dof_handler(const_cast<DH *>(other.dof_handler))
 {
   Assert (false, ExcInvalidObject());
 }
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
+template <bool lda2>
+inline
+DoFAccessor<structdim,DH,lda>::DoFAccessor (const DoFAccessor<structdim, DH, lda2> &other)
+  : BaseClass(other), dof_handler(const_cast<DH *>(other.dof_handler))
+{
+}
+
+
+
+template <int structdim, class DH, bool lda>
 inline
 void
-DoFAccessor<structdim,DH>::set_dof_handler (DH *dh)
+DoFAccessor<structdim,DH,lda>::set_dof_handler (DH *dh)
 {
   Assert (dh != 0, ExcInvalidObject());
   this->dof_handler = dh;
@@ -87,20 +98,20 @@ DoFAccessor<structdim,DH>::set_dof_handler (DH *dh)
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
 const DH &
-DoFAccessor<structdim,DH>::get_dof_handler () const
+DoFAccessor<structdim,DH,lda>::get_dof_handler () const
 {
   return *this->dof_handler;
 }
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
 void
-DoFAccessor<structdim,DH>::copy_from (
+DoFAccessor<structdim,DH,lda>::copy_from (
   const TriaAccessorBase<structdim, DH::dimension, DH::space_dimension> &da)
 {
   Assert (this->dof_handler != 0, ExcInvalidObject());
@@ -109,10 +120,11 @@ DoFAccessor<structdim,DH>::copy_from (
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
+template <bool lda2>
 inline
 void
-DoFAccessor<structdim,DH>::copy_from (const DoFAccessor<structdim,DH> &a)
+DoFAccessor<structdim,DH,lda>::copy_from (const DoFAccessor<structdim,DH,lda2> &a)
 {
   BaseClass::copy_from (a);
   set_dof_handler (a.dof_handler);
@@ -120,63 +132,52 @@ DoFAccessor<structdim,DH>::copy_from (const DoFAccessor<structdim,DH> &a)
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
 bool
-DoFAccessor<structdim,DH>::operator == (const DoFAccessor<structdim,DH> &a) const
+DoFAccessor<structdim,DH,lda>::operator == (const DoFAccessor<dim2,DH2,lda2> &a) const
 {
+  Assert (structdim == dim2, ExcCantCompareIterators());
   Assert (this->dof_handler == a.dof_handler, ExcCantCompareIterators());
   return (BaseClass::operator == (a));
 }
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
 bool
-DoFAccessor<structdim,DH>::operator != (const DoFAccessor<structdim,DH> &a) const
+DoFAccessor<structdim,DH,lda>::operator != (const DoFAccessor<dim2,DH2,lda2> &a) const
 {
+  Assert (structdim == dim2, ExcCantCompareIterators());
   Assert (this->dof_handler == a.dof_handler, ExcCantCompareIterators());
   return (BaseClass::operator != (a));
 }
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
-TriaIterator<DoFAccessor<structdim,DH> >
-DoFAccessor<structdim,DH>::child (const unsigned int i) const
+TriaIterator<DoFAccessor<structdim,DH,lda> >
+DoFAccessor<structdim,DH,lda>::child (const unsigned int i) const
 {
   Assert (static_cast<unsigned int>(this->level()) < this->dof_handler->levels.size(),
           ExcMessage ("DoFHandler not initialized"));
 
-  int next_level;
-  if (DH::dimension==structdim)
-    next_level = this->level()+1;
-  else
-    next_level = 0;
-
-  TriaIterator<DoFAccessor<structdim,DH> > q (this->tria,
-                                              next_level,
-                                              this->child_index (i),
-                                              this->dof_handler);
-
-  // make sure that we either created
-  // a past-the-end iterator or one
-  // pointing to a used cell
-  Assert ((q.state() == IteratorState::past_the_end)
-          ||
-          q->used(),
-          TriaAccessorExceptions::ExcUnusedCellAsChild());
+  TriaIterator<TriaAccessor<structdim,DH::dimension,DH::space_dimension> >
+  t = TriaAccessor<structdim,DH::dimension,DH::space_dimension>::child(i);
 
+  TriaIterator<DoFAccessor<structdim,DH,lda> > q (*t, this->dof_handler);
   return q;
 }
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
-TriaIterator<DoFAccessor<structdim,DH> >
-DoFAccessor<structdim,DH>::parent () const
+TriaIterator<DoFAccessor<structdim,DH,lda> >
+DoFAccessor<structdim,DH,lda>::parent () const
 {
   Assert (static_cast<unsigned int>(this->level()) < this->dof_handler->levels.size(),
           ExcMessage ("DoFHandler not initialized"));
@@ -191,10 +192,10 @@ DoFAccessor<structdim,DH>::parent () const
   else
     previous_level = 0;
 
-  TriaIterator<DoFAccessor<structdim,DH> > q (this->tria,
-                                              previous_level,
-                                              this->parent_index (),
-                                              this->dof_handler);
+  TriaIterator<DoFAccessor<structdim,DH,lda> > q (this->tria,
+                                                  previous_level,
+                                                  this->parent_index (),
+                                                  this->dof_handler);
 
   return q;
 }
@@ -737,22 +738,18 @@ namespace internal
         Assert ((dim==structdim
                  ?
                  typename
-                 dealii::internal::DoFHandler::
-                 Iterators<dealii::DoFHandler<dim,spacedim> >::
+                 internal::Triangulation::Iterators<dim,spacedim>::
                  raw_cell_iterator (&dof_handler.get_tria(),
                                     obj_level,
-                                    obj_index,
-                                    &dof_handler)->used()
+                                    obj_index)->used()
                  :
                  (structdim==1
                   ?
                   typename
-                  dealii::internal::DoFHandler::
-                  Iterators<dealii::DoFHandler<dim,spacedim> >::
+                  internal::Triangulation::Iterators<dim,spacedim>::
                   raw_line_iterator (&dof_handler.get_tria(),
                                      obj_level,
-                                     obj_index,
-                                     &dof_handler)->used()
+                                     obj_index)->used()
                   :
                   true))
                 == true,
@@ -789,22 +786,18 @@ namespace internal
         Assert ((dim==structdim
                  ?
                  typename
-                 dealii::internal::DoFHandler::
-                 Iterators<dealii::DoFHandler<dim,spacedim> >::
+                 internal::Triangulation::Iterators<dim,spacedim>::
                  raw_cell_iterator (&dof_handler.get_tria(),
                                     obj_level,
-                                    obj_index,
-                                    &dof_handler)->used()
+                                    obj_index)->used()
                  :
                  (structdim==1
                   ?
                   typename
-                  dealii::internal::DoFHandler::
-                  Iterators<dealii::DoFHandler<dim,spacedim> >::
+                  internal::Triangulation::Iterators<dim,spacedim>::
                   raw_line_iterator (&dof_handler.get_tria(),
                                      obj_level,
-                                     obj_index,
-                                     &dof_handler)->used()
+                                     obj_index)->used()
                   :
                   true))
                 == true,
@@ -1429,17 +1422,65 @@ namespace internal
           }
       }
 
+      template<class DH, bool lda>
+      static
+      void set_mg_dof_indices (const dealii::DoFAccessor<1,DH,lda> &,
+                               const int,
+                               const std::vector<unsigned int> &,
+                               const unsigned int)
+      {
+        AssertThrow (false, ExcNotImplemented ()); //TODO[TH]: implement
+      }
+
+
+
+      template<class DH, bool lda>
+      static
+      void set_mg_dof_indices (dealii::DoFAccessor<2, DH,lda> &accessor,
+                               const int level,
+                               const std::vector<unsigned int> &dof_indices,
+                               const unsigned int fe_index)
+      {
+        const FiniteElement<DH::dimension, DH::space_dimension> &fe = accessor.get_dof_handler ().get_fe ()[fe_index];
+        std::vector<unsigned int>::const_iterator next = dof_indices.begin ();
+
+        for (unsigned int vertex = 0; vertex < GeometryInfo<2>::vertices_per_cell; ++vertex)
+          for (unsigned int dof = 0; dof < fe.dofs_per_vertex; ++dof)
+            accessor.set_mg_vertex_dof_index(level, vertex, dof, *next++, fe_index);
+
+        for (unsigned int line = 0; line < GeometryInfo<2>::lines_per_cell; ++line)
+          for (unsigned int dof = 0; dof < fe.dofs_per_line; ++dof)
+            accessor.line(line)->set_mg_dof_index(level, dof, *next++);
+
+        for (unsigned int dof = 0; dof < fe.dofs_per_quad; ++dof)
+          accessor.set_mg_dof_index(level, dof, *next++);
+
+        Assert (next == dof_indices.end (), ExcInternalError ());
+      }
+
+
+
+      template<class DH, bool lda>
+      static
+      void set_mg_dof_indices (const dealii::DoFAccessor<3, DH,lda> &,
+                               const int,
+                               const std::vector<unsigned int> &,
+                               const unsigned int)
+      {
+        AssertThrow (false, ExcNotImplemented ()); //TODO[TH]: implement
+      }
+
     };
   }
 }
 
 
 
-template <int dim, class DH>
+template <int dim, class DH, bool lda>
 inline
 unsigned int
-DoFAccessor<dim,DH>::dof_index (const unsigned int i,
-                                const unsigned int fe_index) const
+DoFAccessor<dim,DH,lda>::dof_index (const unsigned int i,
+                                    const unsigned int fe_index) const
 {
   // access the respective DoF
   return dealii::internal::DoFAccessor::Implementation::get_dof_index (*this->dof_handler,
@@ -1451,20 +1492,20 @@ DoFAccessor<dim,DH>::dof_index (const unsigned int i,
 }
 
 
-template<int structdim, class DH>
+template<int structdim, class DH, bool lda>
 inline
-unsigned int DoFAccessor<structdim, DH>::mg_dof_index (const int level, const unsigned int i) const
+unsigned int DoFAccessor<structdim, DH,lda>::mg_dof_index (const int level, const unsigned int i) const
 {
   return this->dof_handler->template get_dof_index<structdim> (level, this->present_index, 0, i);
 }
 
 
-template <int dim, class DH>
+template <int dim, class DH, bool lda>
 inline
 void
-DoFAccessor<dim,DH>::set_dof_index (const unsigned int i,
-                                    const unsigned int index,
-                                    const unsigned int fe_index) const
+DoFAccessor<dim,DH,lda>::set_dof_index (const unsigned int i,
+                                        const unsigned int index,
+                                        const unsigned int fe_index) const
 {
   // access the respective DoF
   dealii::internal::DoFAccessor::Implementation::set_dof_index (*this->dof_handler,
@@ -1478,10 +1519,10 @@ DoFAccessor<dim,DH>::set_dof_index (const unsigned int i,
 
 
 
-template <int dim, class DH>
+template <int dim, class DH, bool lda>
 inline
 unsigned int
-DoFAccessor<dim,DH>::n_active_fe_indices () const
+DoFAccessor<dim,DH,lda>::n_active_fe_indices () const
 {
   // access the respective DoF
   return
@@ -1494,10 +1535,10 @@ DoFAccessor<dim,DH>::n_active_fe_indices () const
 
 
 
-template <int dim, class DH>
+template <int dim, class DH, bool lda>
 inline
 unsigned int
-DoFAccessor<dim,DH>::nth_active_fe_index (const unsigned int n) const
+DoFAccessor<dim,DH,lda>::nth_active_fe_index (const unsigned int n) const
 {
   // access the respective DoF
   return
@@ -1511,10 +1552,10 @@ DoFAccessor<dim,DH>::nth_active_fe_index (const unsigned int n) const
 
 
 
-template <int dim, class DH>
+template <int dim, class DH, bool lda>
 inline
 bool
-DoFAccessor<dim,DH>::fe_index_is_active (const unsigned int fe_index) const
+DoFAccessor<dim,DH,lda>::fe_index_is_active (const unsigned int fe_index) const
 {
   // access the respective DoF
   return
@@ -1528,12 +1569,12 @@ DoFAccessor<dim,DH>::fe_index_is_active (const unsigned int fe_index) const
 
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
 unsigned int
-DoFAccessor<structdim, DH>::vertex_dof_index (const unsigned int vertex,
-                                              const unsigned int i,
-                                              const unsigned int fe_index) const
+DoFAccessor<structdim, DH,lda>::vertex_dof_index (const unsigned int vertex,
+                                                  const unsigned int i,
+                                                  const unsigned int fe_index) const
 {
   return
     dealii::internal::DoFAccessor::Implementation::get_vertex_dof_index
@@ -1544,10 +1585,10 @@ DoFAccessor<structdim, DH>::vertex_dof_index (const unsigned int vertex,
 }
 
 
-template<int structdim, class DH>
+template<int structdim, class DH, bool lda>
 inline
 unsigned
-DoFAccessor<structdim, DH>::mg_vertex_dof_index (const int level, const unsigned int vertex, const unsigned int i, const unsigned int fe_index) const
+DoFAccessor<structdim, DH,lda>::mg_vertex_dof_index (const int level, const unsigned int vertex, const unsigned int i, const unsigned int fe_index) const
 {
   Assert (this->dof_handler != 0, ExcInvalidObject ());
   Assert (&this->dof_handler->get_fe () != 0, ExcInvalidObject ());
@@ -1557,13 +1598,13 @@ DoFAccessor<structdim, DH>::mg_vertex_dof_index (const int level, const unsigned
 }
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
 void
-DoFAccessor<structdim, DH>::set_vertex_dof_index (const unsigned int vertex,
-                                                  const unsigned int i,
-                                                  const unsigned int index,
-                                                  const unsigned int fe_index) const
+DoFAccessor<structdim, DH,lda>::set_vertex_dof_index (const unsigned int vertex,
+                                                      const unsigned int i,
+                                                      const unsigned int index,
+                                                      const unsigned int fe_index) const
 {
   dealii::internal::DoFAccessor::Implementation::set_vertex_dof_index
   (*this->dof_handler,
@@ -1574,10 +1615,10 @@ DoFAccessor<structdim, DH>::set_vertex_dof_index (const unsigned int vertex,
 }
 
 
-template<int structdim, class DH>
+template<int structdim, class DH, bool lda>
 inline
 void
-DoFAccessor<structdim, DH>::set_mg_vertex_dof_index (const int level, const unsigned int vertex, const unsigned int i, const unsigned int index, const unsigned int fe_index) const
+DoFAccessor<structdim, DH,lda>::set_mg_vertex_dof_index (const int level, const unsigned int vertex, const unsigned int i, const unsigned int index, const unsigned int fe_index) const
 {
   Assert (this->dof_handler != 0, ExcInvalidObject ());
   Assert (&this->dof_handler->get_fe () != 0, ExcInvalidObject ());
@@ -1587,10 +1628,10 @@ DoFAccessor<structdim, DH>::set_mg_vertex_dof_index (const int level, const unsi
 }
 
 
-template<int structdim, class DH>
+template<int structdim, class DH, bool lda>
 inline
 void
-DoFAccessor<structdim, DH>::set_mg_dof_index (const int level, const unsigned int i, const unsigned int index) const
+DoFAccessor<structdim, DH,lda>::set_mg_dof_index (const int level, const unsigned int i, const unsigned int index) const
 {
   this->dof_handler->template set_dof_index<structdim> (level, this->present_index, 0, i, index);
 }
@@ -1623,10 +1664,10 @@ namespace internal
 }
 
 
-template <int dim, class DH>
+template <int dim, class DH, bool lda>
 inline
 const FiniteElement<DH::dimension,DH::space_dimension> &
-DoFAccessor<dim,DH>::get_fe (const unsigned int fe_index) const
+DoFAccessor<dim,DH,lda>::get_fe (const unsigned int fe_index) const
 {
   Assert (fe_index_is_active (fe_index) == true,
           ExcMessage ("This function can only be called for active fe indices"));
@@ -1640,8 +1681,8 @@ namespace internal
 {
   namespace DoFAccessor
   {
-    template <class DH>
-    void get_dof_indices (const dealii::DoFAccessor<1,DH>   &accessor,
+    template <class DH, bool lda>
+    void get_dof_indices (const dealii::DoFAccessor<1,DH,lda>   &accessor,
                           std::vector<unsigned int> &dof_indices,
                           const unsigned int         fe_index)
     {
@@ -1657,8 +1698,8 @@ namespace internal
 
 
 
-    template <class DH>
-    void get_dof_indices (const dealii::DoFAccessor<2,DH>   &accessor,
+    template <class DH, bool lda>
+    void get_dof_indices (const dealii::DoFAccessor<2,DH,lda>   &accessor,
                           std::vector<unsigned int> &dof_indices,
                           const unsigned int         fe_index)
     {
@@ -1692,8 +1733,8 @@ namespace internal
 
 
 
-    template <class DH>
-    void get_dof_indices (const dealii::DoFAccessor<3,DH>   &accessor,
+    template <class DH, bool lda>
+    void get_dof_indices (const dealii::DoFAccessor<3,DH,lda>   &accessor,
                           std::vector<unsigned int> &dof_indices,
                           const unsigned int         fe_index)
     {
@@ -1746,10 +1787,20 @@ namespace internal
         *next++ = accessor.dof_index(d,fe_index);
     }
 
-    template<class DH>
-    void get_mg_dof_indices (const dealii::DoFAccessor<1, DH> &accessor, const int level, std::vector<unsigned int> &dof_indices, const unsigned int fe_index)
+
+
+    template<class DH, bool lda>
+    void get_mg_dof_indices (const dealii::DoFAccessor<1, DH,lda> &accessor,
+                             const int level,
+                             std::vector<unsigned int> &dof_indices,
+                             const unsigned int fe_index)
     {
-      const FiniteElement<DH::dimension, DH::space_dimension> &fe = accessor.get_dof_handler ().get_fe ()[fe_index];
+      const DH &handler = accessor.get_dof_handler();
+      Assert(handler.n_dofs(level) != numbers::invalid_unsigned_int,
+             ExcNotInitialized());
+
+      const FiniteElement<DH::dimension, DH::space_dimension> &fe
+        = handler.get_fe ()[fe_index];
       std::vector<unsigned int>::iterator next = dof_indices.begin ();
 
       for (unsigned int vertex = 0; vertex < GeometryInfo<1>::vertices_per_cell; ++vertex)
@@ -1762,10 +1813,19 @@ namespace internal
       Assert (next == dof_indices.end (), ExcInternalError ());
     }
 
-    template<class DH>
-    void get_mg_dof_indices (const dealii::DoFAccessor<2, DH> &accessor, const int level, std::vector<unsigned int> &dof_indices, const unsigned int fe_index)
+
+
+    template<class DH, bool lda>
+    void get_mg_dof_indices (const dealii::DoFAccessor<2, DH,lda> &accessor,
+                             const int level,
+                             std::vector<unsigned int> &dof_indices,
+                             const unsigned int fe_index)
     {
-      const FiniteElement<DH::dimension, DH::space_dimension> &fe = accessor.get_dof_handler ().get_fe ()[fe_index];
+      const DH &handler = accessor.get_dof_handler();
+      Assert(handler.n_dofs(level) != numbers::invalid_unsigned_int,
+             ExcNotInitialized());
+
+      const FiniteElement<DH::dimension, DH::space_dimension> &fe = handler.get_fe ()[fe_index];
       std::vector<unsigned int>::iterator next = dof_indices.begin ();
 
       for (unsigned int vertex = 0; vertex < GeometryInfo<2>::vertices_per_cell; ++vertex)
@@ -1782,10 +1842,19 @@ namespace internal
       Assert (next == dof_indices.end (), ExcInternalError ());
     }
 
-    template<class DH>
-    void get_mg_dof_indices (const dealii::DoFAccessor<3, DH> &accessor, const int level, std::vector<unsigned int> &dof_indices, const unsigned int fe_index)
+
+
+    template<class DH, bool lda>
+    void get_mg_dof_indices (const dealii::DoFAccessor<3, DH,lda> &accessor,
+                             const int level,
+                             std::vector<unsigned int> &dof_indices,
+                             const unsigned int fe_index)
     {
-      const FiniteElement<DH::dimension, DH::space_dimension> &fe = accessor.get_dof_handler ().get_fe ()[fe_index];
+      const DH &handler = accessor.get_dof_handler();
+      Assert(handler.n_dofs(level) != numbers::invalid_unsigned_int,
+             ExcNotInitialized());
+
+      const FiniteElement<DH::dimension, DH::space_dimension> &fe = handler.get_fe ()[fe_index];
       std::vector<unsigned int>::iterator next = dof_indices.begin ();
 
       for (unsigned int vertex = 0; vertex < GeometryInfo<3>::vertices_per_cell; ++vertex)
@@ -1805,21 +1874,20 @@ namespace internal
 
       Assert (next == dof_indices.end (), ExcInternalError ());
     }
+
+
   }
 }
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
 void
-DoFAccessor<structdim,DH>::get_dof_indices (std::vector<unsigned int> &dof_indices,
-                                            const unsigned int         fe_index) const
+DoFAccessor<structdim,DH,lda>::get_dof_indices (std::vector<unsigned int> &dof_indices,
+                                                const unsigned int         fe_index) const
 {
-  Assert (static_cast<unsigned int>(this->level()) < this->dof_handler->levels.size(),
-          ExcMessage ("DoFHandler not initialized"));
-
-  Assert (this->dof_handler != 0, ExcInvalidObject());
-  Assert (&this->dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (this->dof_handler != 0, ExcNotInitialized());
+  Assert (&this->dof_handler->get_fe() != 0, ExcMessage ("DoFHandler not initialized"));
   Assert (static_cast<unsigned int>(this->level()) < this->dof_handler->levels.size(),
           ExcMessage ("DoFHandler not initialized"));
 
@@ -1873,9 +1941,13 @@ DoFAccessor<structdim,DH>::get_dof_indices (std::vector<unsigned int> &dof_indic
   dealii::internal::DoFAccessor::get_dof_indices (*this, dof_indices, fe_index);
 }
 
-template<int structdim, class DH>
+
+
+template<int structdim, class DH, bool lda>
 inline
-void DoFAccessor<structdim, DH>::get_mg_dof_indices (const int level, std::vector<unsigned int> &dof_indices, const unsigned int fe_index) const
+void DoFAccessor<structdim, DH,lda>::get_mg_dof_indices (const int level,
+                                                         std::vector<unsigned int> &dof_indices,
+                                                         const unsigned int fe_index) const
 {
   Assert (this->dof_handler != 0, ExcInvalidObject ());
   Assert (&this->dof_handler->get_fe () != 0, ExcInvalidObject ());
@@ -1884,19 +1956,31 @@ void DoFAccessor<structdim, DH>::get_mg_dof_indices (const int level, std::vecto
     {
     case 1:
     {
-      Assert (dof_indices.size () == 2 * this->dof_handler->get_fe ()[fe_index].dofs_per_vertex + this->dof_handler->get_fe ()[fe_index].dofs_per_line, ExcVectorDoesNotMatch ());
+      Assert (dof_indices.size () ==
+              2 * this->dof_handler->get_fe ()[fe_index].dofs_per_vertex +
+              this->dof_handler->get_fe ()[fe_index].dofs_per_line,
+              ExcVectorDoesNotMatch ());
       break;
     }
 
     case 2:
     {
-      Assert (dof_indices.size () == 4 * (this->dof_handler->get_fe ()[fe_index].dofs_per_vertex + this->dof_handler->get_fe ()[fe_index].dofs_per_line) + this->dof_handler->get_fe ()[fe_index].dofs_per_quad, ExcVectorDoesNotMatch ());
+      Assert (dof_indices.size () ==
+              4 * (this->dof_handler->get_fe ()[fe_index].dofs_per_vertex +
+                   this->dof_handler->get_fe ()[fe_index].dofs_per_line) +
+              this->dof_handler->get_fe ()[fe_index].dofs_per_quad,
+              ExcVectorDoesNotMatch ());
       break;
     }
 
     case 3:
     {
-      Assert (dof_indices.size () == 8 * this->dof_handler->get_fe ()[fe_index].dofs_per_vertex + 12 * this->dof_handler->get_fe ()[fe_index].dofs_per_line + 6 * this->dof_handler->get_fe ()[fe_index].dofs_per_quad + this->dof_handler->get_fe ()[fe_index].dofs_per_hex, ExcVectorDoesNotMatch ());
+      Assert (dof_indices.size () ==
+              8 * this->dof_handler->get_fe ()[fe_index].dofs_per_vertex +
+              12 * this->dof_handler->get_fe ()[fe_index].dofs_per_line +
+              6 * this->dof_handler->get_fe ()[fe_index].dofs_per_quad +
+              this->dof_handler->get_fe ()[fe_index].dofs_per_hex,
+              ExcVectorDoesNotMatch ());
       break;
     }
 
@@ -1904,13 +1988,218 @@ void DoFAccessor<structdim, DH>::get_mg_dof_indices (const int level, std::vecto
       Assert (false, ExcNotImplemented ());
     }
 
-  internal::DoFAccessor::get_mg_dof_indices (*this, level, dof_indices, fe_index);
+  internal::DoFAccessor::get_mg_dof_indices (*this,
+                                             level,
+                                             dof_indices,
+                                             fe_index);
 }
 
-template <int structdim, class DH>
+
+template<int structdim, class DH, bool lda>
 inline
-typename dealii::internal::DoFHandler::Iterators<DH>::line_iterator
-DoFAccessor<structdim,DH>::line (const unsigned int i) const
+void DoFAccessor<structdim, DH,lda>::set_mg_dof_indices (const int level,
+                                                         const std::vector<unsigned int> &dof_indices,
+                                                         const unsigned int fe_index)
+{
+  Assert (this->dof_handler != 0, ExcInvalidObject ());
+  Assert (&this->dof_handler->get_fe () != 0, ExcInvalidObject ());
+
+  switch (structdim)
+    {
+    case 1:
+    {
+      Assert (dof_indices.size () ==
+              2 * this->dof_handler->get_fe ()[fe_index].dofs_per_vertex +
+              this->dof_handler->get_fe ()[fe_index].dofs_per_line,
+              ExcVectorDoesNotMatch ());
+      break;
+    }
+
+    case 2:
+    {
+      Assert (dof_indices.size () ==
+              4 * (this->dof_handler->get_fe ()[fe_index].dofs_per_vertex +
+                   this->dof_handler->get_fe ()[fe_index].dofs_per_line) +
+              this->dof_handler->get_fe ()[fe_index].dofs_per_quad,
+              ExcVectorDoesNotMatch ());
+      break;
+    }
+
+    case 3:
+    {
+      Assert (dof_indices.size () ==
+              8 * this->dof_handler->get_fe ()[fe_index].dofs_per_vertex +
+              12 * this->dof_handler->get_fe ()[fe_index].dofs_per_line +
+              6 * this->dof_handler->get_fe ()[fe_index].dofs_per_quad +
+              this->dof_handler->get_fe ()[fe_index].dofs_per_hex,
+              ExcVectorDoesNotMatch ());
+      break;
+    }
+
+    default:
+      Assert (false, ExcNotImplemented ());
+    }
+
+  internal::DoFAccessor::Implementation::set_mg_dof_indices (*this,
+                                                             level,
+                                                             dof_indices,
+                                                             fe_index);
+}
+
+
+namespace internal
+{
+  namespace DoFAccessor
+  {
+    template <bool lda, class DH>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<DH>::line_iterator
+    get_line(const dealii::Triangulation<DH::dimension, DH::space_dimension> *tria,
+             unsigned int index,
+             DH *dof_handler)
+    {
+      return typename dealii::internal::DoFHandler::Iterators<DH>::line_iterator
+             (
+               tria,
+               0,  // only sub-objects are allowed, which have no level
+               index,
+               dof_handler);
+    }
+
+    template <bool lda, class DH>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<DH, lda>::quad_iterator
+    get_quad(const dealii::Triangulation<DH::dimension, DH::space_dimension> *tria,
+             unsigned int index,
+             DH *dof_handler)
+    {
+      return typename dealii::internal::DoFHandler::Iterators<DH>::quad_iterator
+             (
+               tria,
+               0,  // only sub-objects are allowed, which have no level
+               index,
+               dof_handler);
+    }
+
+    // None of these specializations should ever be called
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<1,1>, lda>::line_iterator
+    get_line(const dealii::Triangulation<1,1> *,
+             unsigned int,
+             dealii::DoFHandler<1,1> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<1,1>, lda>::line_iterator();
+    }
+
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<1,2>, lda>::line_iterator
+    get_line(const dealii::Triangulation<1,2> *,
+             unsigned int,
+             dealii::DoFHandler<1,2> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<1,2>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<1,3>, lda>::line_iterator
+    get_line(const dealii::Triangulation<1,3> *,
+             unsigned int,
+             dealii::DoFHandler<1,3> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<1,3>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<2,2>, lda>::quad_iterator
+    get_quad(const dealii::Triangulation<2,2> *,
+             unsigned int,
+             dealii::DoFHandler<2,2> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<2,2>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<2,3>, lda>::quad_iterator
+    get_quad(const dealii::Triangulation<2,3> *,
+             unsigned int,
+             dealii::DoFHandler<2,3> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::DoFHandler<2,3>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<1,1>, lda>::line_iterator
+    get_line(const dealii::Triangulation<1,1> *,
+             unsigned int,
+             dealii::hp::DoFHandler<1,1> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<1,1>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<1,2>, lda>::line_iterator
+    get_line(const dealii::Triangulation<1,2> *,
+             unsigned int,
+             dealii::hp::DoFHandler<1,2> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<1,2>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<1,3>, lda>::line_iterator
+    get_line(const dealii::Triangulation<1,3> *,
+             unsigned int,
+             dealii::hp::DoFHandler<1,3> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<1,3>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<2,2>, lda>::quad_iterator
+    get_quad(const dealii::Triangulation<2,2> *,
+             unsigned int,
+             dealii::hp::DoFHandler<2,2> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<2,2>, lda>::line_iterator();
+    }
+
+    template<bool lda>
+    inline
+    typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<2,3>, lda>::quad_iterator
+    get_quad(const dealii::Triangulation<2,3> *,
+             unsigned int,
+             dealii::hp::DoFHandler<2,3> *)
+    {
+      Assert(false, ExcNotImplemented());
+      return typename dealii::internal::DoFHandler::Iterators<dealii::hp::DoFHandler<2,3>, lda>::line_iterator();
+    }
+  }
+}
+
+
+template <int structdim, class DH, bool lda>
+inline
+typename dealii::internal::DoFHandler::Iterators<DH,lda>::line_iterator
+DoFAccessor<structdim,DH,lda>::line (const unsigned int i) const
 {
   // if we are asking for a
   // particular line and this object
@@ -1922,7 +2211,7 @@ DoFAccessor<structdim,DH>::line (const unsigned int i) const
       Assert (i==0, ExcMessage ("You can only ask for line zero if the "
                                 "current object is a line itself."));
       return
-        typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+        typename dealii::internal::DoFHandler::Iterators<DH,lda>::cell_iterator
         (&this->get_triangulation(),
          this->level(),
          this->index(),
@@ -1931,21 +2220,14 @@ DoFAccessor<structdim,DH>::line (const unsigned int i) const
 
   // checking of 'i' happens in
   // line_index(i)
-
-  return typename dealii::internal::DoFHandler::Iterators<DH>::line_iterator
-         (
-           this->tria,
-           0,  // only sub-objects are allowed, which have no level
-           this->line_index(i),
-           this->dof_handler
-         );
+  return dealii::internal::DoFAccessor::get_line<lda>(this->tria, this->line_index(i), this->dof_handler);
 }
 
 
-template <int structdim, class DH>
+template <int structdim, class DH, bool lda>
 inline
-typename dealii::internal::DoFHandler::Iterators<DH>::quad_iterator
-DoFAccessor<structdim,DH>::quad (const unsigned int i) const
+typename dealii::internal::DoFHandler::Iterators<DH,lda>::quad_iterator
+DoFAccessor<structdim,DH,lda>::quad (const unsigned int i) const
 {
   // if we are asking for a
   // particular quad and this object
@@ -1970,31 +2252,25 @@ DoFAccessor<structdim,DH>::quad (const unsigned int i) const
   // checking of 'i' happens in
   // quad_index(i)
 
-  return typename dealii::internal::DoFHandler::Iterators<DH>::quad_iterator
-         (
-           this->tria,
-           0,  // only sub-objects are allowed, which have no level
-           this->quad_index (i),
-           this->dof_handler
-         );
+  return dealii::internal::DoFAccessor::get_quad<lda>(this->tria, this->quad_index(i), this->dof_handler);
 }
 
 
 /*------------------------- Functions: DoFAccessor<0,1,spacedim> ---------------------------*/
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
-DoFAccessor<0,DH<1,spacedim> >::DoFAccessor ()
+DoFAccessor<0,DH<1,spacedim>, lda>::DoFAccessor ()
 {
   Assert (false, ExcInvalidObject());
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
-DoFAccessor<0,DH<1,spacedim> >::
+DoFAccessor<0,DH<1,spacedim>, lda>::
 DoFAccessor (const Triangulation<1,spacedim> *tria,
              const typename TriaAccessor<0,1,spacedim>::VertexKind vertex_kind,
              const unsigned int    vertex_index,
@@ -2008,9 +2284,9 @@ DoFAccessor (const Triangulation<1,spacedim> *tria,
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
-DoFAccessor<0,DH<1,spacedim> >::
+DoFAccessor<0,DH<1,spacedim>, lda>::
 DoFAccessor (const Triangulation<1,spacedim> *,
              const int                 ,
              const int                 ,
@@ -2024,29 +2300,29 @@ DoFAccessor (const Triangulation<1,spacedim> *,
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 template <int structdim2, int dim2, int spacedim2>
-DoFAccessor<0,DH<1,spacedim> >::DoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
+DoFAccessor<0,DH<1,spacedim>, lda>::DoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
 {
   Assert (false, ExcInvalidObject());
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
-template <int dim2, class DH2>
+template <template <int, int> class DH, int spacedim, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
-DoFAccessor<0,DH<1,spacedim> >::DoFAccessor (const DoFAccessor<dim2, DH2> &)
+DoFAccessor<0,DH<1,spacedim>, lda>::DoFAccessor (const DoFAccessor<dim2, DH2, lda2> &)
 {
   Assert (false, ExcInvalidObject());
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
 void
-DoFAccessor<0,DH<1,spacedim> >::set_dof_handler (DH<1,spacedim> *dh)
+DoFAccessor<0,DH<1,spacedim>, lda>::set_dof_handler (DH<1,spacedim> *dh)
 {
   Assert (dh != 0, ExcInvalidObject());
   this->dof_handler = dh;
@@ -2054,57 +2330,56 @@ DoFAccessor<0,DH<1,spacedim> >::set_dof_handler (DH<1,spacedim> *dh)
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
 const DH<1,spacedim> &
-DoFAccessor<0,DH<1,spacedim> >::get_dof_handler () const
+DoFAccessor<0,DH<1,spacedim>, lda>::get_dof_handler () const
 {
   return *this->dof_handler;
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
 void
-DoFAccessor<0,DH<1,spacedim> >::
-get_dof_indices (std::vector<unsigned int> &dof_indices,
-                 const unsigned int fe_index) const
+DoFAccessor<0,DH<1,spacedim>, lda>::get_dof_indices (
+  std::vector<unsigned int> &dof_indices,
+  const unsigned int fe_index) const
 {
   for (unsigned int i=0; i<dof_indices.size(); ++i)
     dof_indices[i]
-      = dealii::internal::DoFAccessor::Implementation::
-        get_vertex_dof_index (*dof_handler,
-                              this->global_vertex_index,
-                              fe_index,
-                              i);
+      = dealii::internal::DoFAccessor::Implementation::get_vertex_dof_index (
+          *dof_handler,
+          this->global_vertex_index,
+          fe_index,
+          i);
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
 unsigned int
-DoFAccessor<0,DH<1,spacedim> >::
+DoFAccessor<0,DH<1,spacedim>, lda>::
 vertex_dof_index (const unsigned int vertex,
                   const unsigned int i,
                   const unsigned int fe_index) const
 {
   Assert (vertex == 0, ExcIndexRange (vertex, 0, 1));
-  return dealii::internal::DoFAccessor::Implementation::
-         get_vertex_dof_index (*dof_handler,
-                               this->global_vertex_index,
-                               fe_index,
-                               i);
+  return dealii::internal::DoFAccessor::Implementation::get_vertex_dof_index (
+           *dof_handler,
+           this->global_vertex_index,
+           fe_index,
+           i);
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
 inline
 void
-DoFAccessor<0,DH<1,spacedim> >::copy_from (
-  const TriaAccessorBase<0,1,spacedim> &da)
+DoFAccessor<0,DH<1,spacedim>, lda>::copy_from (const TriaAccessorBase<0,1,spacedim> &da)
 {
   Assert (this->dof_handler != 0, ExcInvalidObject());
   BaseClass::copy_from(da);
@@ -2112,10 +2387,11 @@ DoFAccessor<0,DH<1,spacedim> >::copy_from (
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
+template <bool lda2>
 inline
 void
-DoFAccessor<0,DH<1,spacedim> >::copy_from (const DoFAccessor<0,DH<1,spacedim> > &a)
+DoFAccessor<0,DH<1,spacedim>, lda>::copy_from (const DoFAccessor<0,DH<1,spacedim>, lda2> &a)
 {
   BaseClass::copy_from (a);
   set_dof_handler (a.dof_handler);
@@ -2123,22 +2399,26 @@ DoFAccessor<0,DH<1,spacedim> >::copy_from (const DoFAccessor<0,DH<1,spacedim> >
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
 bool
-DoFAccessor<0,DH<1,spacedim> >::operator == (const DoFAccessor<0,DH<1,spacedim> > &a) const
+DoFAccessor<0,DH<1,spacedim>, lda>::operator == (const DoFAccessor<dim2,DH2,lda2> &a) const
 {
+  Assert (dim2 == 0, ExcCantCompareIterators());
   Assert (this->dof_handler == a.dof_handler, ExcCantCompareIterators());
   return (BaseClass::operator == (a));
 }
 
 
 
-template <template <int, int> class DH, int spacedim>
+template <template <int, int> class DH, int spacedim, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
 bool
-DoFAccessor<0,DH<1,spacedim> >::operator != (const DoFAccessor<0,DH<1,spacedim> > &a) const
+DoFAccessor<0,DH<1,spacedim>, lda>::operator != (const DoFAccessor<dim2,DH2,lda2> &a) const
 {
+  Assert (dim2 == 0, ExcCantCompareIterators());
   Assert (this->dof_handler == a.dof_handler, ExcCantCompareIterators());
   return (BaseClass::operator != (a));
 }
@@ -2171,10 +2451,10 @@ namespace internal
        * implemented for hp::DoFHandler
        * objects.
        */
-      template <int spacedim>
+      template <int spacedim, bool lda>
       static
       void
-      update_cell_dof_indices_cache (const DoFCellAccessor<DoFHandler<1,spacedim> > &accessor)
+      update_cell_dof_indices_cache (const DoFCellAccessor<DoFHandler<1,spacedim>, lda> &accessor)
       {
         // check as in documentation that
         // cell is either active, or dofs
@@ -2216,10 +2496,10 @@ namespace internal
 
 
 
-      template <int spacedim>
+      template <int spacedim, bool lda>
       static
       void
-      update_cell_dof_indices_cache (const DoFCellAccessor<DoFHandler<2,spacedim> > &accessor)
+      update_cell_dof_indices_cache (const DoFCellAccessor<DoFHandler<2,spacedim>, lda> &accessor)
       {
         // check as in documentation that
         // cell is either active, or dofs
@@ -2264,11 +2544,10 @@ namespace internal
       }
 
 
-
-      template <int spacedim>
+      template <int spacedim, bool lda>
       static
       void
-      update_cell_dof_indices_cache (const DoFCellAccessor<DoFHandler<3,spacedim> > &accessor)
+      update_cell_dof_indices_cache (const DoFCellAccessor<DoFHandler<3,spacedim>, lda> &accessor)
       {
         // check as in documentation that
         // cell is either active, or dofs
@@ -2351,10 +2630,10 @@ namespace internal
       // hp::DoFHandler objects. it's
       // not implemented there, for no
       // space dimension
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       void
-      update_cell_dof_indices_cache (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &)
+      update_cell_dof_indices_cache (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &)
       {
 //TODO[WB]: should implement a dof indices cache for hp as well
 
@@ -2370,10 +2649,10 @@ namespace internal
        * implemented for
        * hp::DoFHandler objects.
        */
-      template <int spacedim>
+      template <int spacedim, bool lda>
       static
       void
-      set_dof_indices (DoFCellAccessor<DoFHandler<1,spacedim> > &accessor,
+      set_dof_indices (DoFCellAccessor<DoFHandler<1,spacedim>, lda> &accessor,
                        const std::vector<unsigned int>          &local_dof_indices)
       {
         Assert (accessor.has_children() == false,
@@ -2401,10 +2680,10 @@ namespace internal
 
 
 
-      template <int spacedim>
+      template <int spacedim, bool lda>
       static
       void
-      set_dof_indices (DoFCellAccessor<DoFHandler<2,spacedim> > &accessor,
+      set_dof_indices (DoFCellAccessor<DoFHandler<2,spacedim>, lda> &accessor,
                        const std::vector<unsigned int>          &local_dof_indices)
       {
         Assert (accessor.has_children() == false,
@@ -2437,10 +2716,10 @@ namespace internal
 
 
 
-      template <int spacedim>
+      template <int spacedim, bool lda>
       static
       void
-      set_dof_indices (DoFCellAccessor<DoFHandler<3,spacedim> > &accessor,
+      set_dof_indices (DoFCellAccessor<DoFHandler<3,spacedim>, lda> &accessor,
                        const std::vector<unsigned int>          &local_dof_indices)
       {
         Assert (accessor.has_children() == false,
@@ -2511,10 +2790,10 @@ namespace internal
       // hp::DoFHandler objects. it's
       // not implemented there, for no
       // space dimension
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       void
-      set_dof_indices (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &,
+      set_dof_indices (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &,
                        const std::vector<unsigned int> &)
       {
         Assert (false, ExcNotImplemented());
@@ -2530,17 +2809,13 @@ namespace internal
        * the data out of the cache that
        * we hold for each cell.
        */
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       void
-      get_dof_indices (const DoFCellAccessor<DoFHandler<dim,spacedim> > &accessor,
+      get_dof_indices (const DoFCellAccessor<DoFHandler<dim,spacedim>, lda> &accessor,
                        std::vector<unsigned int>                        &dof_indices)
       {
-        typedef
-        dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> >
-        BaseClass;
-        Assert (dof_indices.size() == accessor.get_fe().dofs_per_cell,
-                typename BaseClass::ExcVectorDoesNotMatch());
+        AssertDimension (dof_indices.size(), accessor.get_fe().dofs_per_cell);
 
         // check as in documentation that
         // cell is either active, or dofs
@@ -2564,23 +2839,22 @@ namespace internal
        * not have a cache for the local
        * DoF indices.
        */
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       void
-      get_dof_indices (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      get_dof_indices (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                        std::vector<unsigned int>                            &dof_indices)
       {
         // no caching for
         // hp::DoFHandler
         // implemented
         typedef
-        dealii::DoFAccessor<dim,dealii::hp::DoFHandler<dim,spacedim> >
+        dealii::DoFAccessor<dim,dealii::hp::DoFHandler<dim,spacedim>, lda>
         DoFAccessor;
         accessor.DoFAccessor::get_dof_indices (dof_indices,
                                                accessor.active_fe_index());
       }
 
-
       /**
        * A function that collects the
        * values of degrees of freedom. This
@@ -2590,15 +2864,15 @@ namespace internal
        * indices that we hold for each
        * cell.
        */
-      template <int dim, int spacedim, class InputVector, typename ForwardIterator>
+      template <int dim, int spacedim, bool lda, class InputVector, typename ForwardIterator>
       static
       void
-      get_dof_values (const DoFCellAccessor<DoFHandler<dim,spacedim> > &accessor,
+      get_dof_values (const DoFCellAccessor<DoFHandler<dim,spacedim>, lda> &accessor,
                       const InputVector &values,
                       ForwardIterator    local_values_begin,
                       ForwardIterator    local_values_end)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (static_cast<unsigned int>(local_values_end-local_values_begin)
                 == accessor.get_fe().dofs_per_cell,
                 typename BaseClass::ExcVectorDoesNotMatch());
@@ -2628,15 +2902,15 @@ namespace internal
        * not have a cache for the local
        * DoF indices.
        */
-      template <int dim, int spacedim, class InputVector, typename ForwardIterator>
+      template <int dim, int spacedim, bool lda, class InputVector, typename ForwardIterator>
       static
       void
-      get_dof_values (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      get_dof_values (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                       const InputVector &values,
                       ForwardIterator    local_values_begin,
                       ForwardIterator    local_values_end)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
 
         // no caching for hp::DoFHandler
         // implemented
@@ -2662,16 +2936,16 @@ namespace internal
        * indices that we hold for each
        * cell.
        */
-      template <int dim, int spacedim, class InputVector, typename ForwardIterator>
+      template <int dim, int spacedim, bool lda, class InputVector, typename ForwardIterator>
       static
       void
-      get_dof_values (const DoFCellAccessor<DoFHandler<dim,spacedim> > &accessor,
+      get_dof_values (const DoFCellAccessor<DoFHandler<dim,spacedim>, lda> &accessor,
                       const ConstraintMatrix &constraints,
                       const InputVector      &values,
                       ForwardIterator         local_values_begin,
                       ForwardIterator         local_values_end)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (static_cast<unsigned int>(local_values_end-local_values_begin)
                 == accessor.get_fe().dofs_per_cell,
                 typename BaseClass::ExcVectorDoesNotMatch());
@@ -2701,10 +2975,10 @@ namespace internal
        * not have a cache for the local
        * DoF indices.
        */
-      template <int dim, int spacedim, class InputVector, typename ForwardIterator>
+      template <int dim, int spacedim, bool lda, class InputVector, typename ForwardIterator>
       static
       void
-      get_dof_values (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      get_dof_values (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                       const ConstraintMatrix &constraints,
                       const InputVector      &values,
                       ForwardIterator         local_values_begin,
@@ -2712,7 +2986,7 @@ namespace internal
       {
         // no caching for hp::DoFHandler
         // implemented
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (static_cast<unsigned int>(local_values_end-local_values_begin)
                 == accessor.get_fe().dofs_per_cell,
                 typename BaseClass::ExcVectorDoesNotMatch());
@@ -2731,14 +3005,14 @@ namespace internal
        * except that it sets rather than
        * gets values
        */
-      template <int dim, int spacedim, class OutputVector, typename number>
+      template <int dim, int spacedim, bool lda, class OutputVector, typename number>
       static
       void
-      set_dof_values (const DoFCellAccessor<DoFHandler<dim,spacedim> > &accessor,
+      set_dof_values (const DoFCellAccessor<DoFHandler<dim,spacedim>, lda> &accessor,
                       const dealii::Vector<number> &local_values,
                       OutputVector &values)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (local_values.size() == accessor.get_fe().dofs_per_cell,
                 typename BaseClass::ExcVectorDoesNotMatch());
         Assert (values.size() == accessor.get_dof_handler().n_dofs(),
@@ -2761,10 +3035,10 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, class OutputVector, typename number>
+      template <int dim, int spacedim, bool lda, class OutputVector, typename number>
       static
       void
-      set_dof_values (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      set_dof_values (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                       const dealii::Vector<number> &local_values,
                       OutputVector &values)
       {
@@ -2785,10 +3059,10 @@ namespace internal
        * function in the parent class
        * is supposed to do.
        */
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       unsigned int
-      active_fe_index (const DoFCellAccessor<DoFHandler<dim,spacedim> > &)
+      active_fe_index (const DoFCellAccessor<DoFHandler<dim,spacedim>, lda> &)
       {
         // ::DoFHandler only supports a
         // single active fe with index
@@ -2798,10 +3072,10 @@ namespace internal
 
 
 
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       unsigned int
-      active_fe_index (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor)
+      active_fe_index (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor)
       {
         Assert (static_cast<unsigned int>(accessor.level()) < accessor.dof_handler->levels.size(),
                 ExcMessage ("DoFHandler not initialized"));
@@ -2821,28 +3095,28 @@ namespace internal
        * in the parent class is
        * supposed to do.
        */
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       void
-      set_active_fe_index (const DoFCellAccessor<DoFHandler<dim,spacedim> > &,
+      set_active_fe_index (const DoFCellAccessor<DoFHandler<dim,spacedim>, lda> &,
                            const unsigned int                                i)
       {
         // ::DoFHandler only supports a
         // single active fe with index
         // zero
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (i == 0, typename BaseClass::ExcInvalidObject());
       }
 
 
 
-      template <int dim, int spacedim>
+      template <int dim, int spacedim, bool lda>
       static
       void
-      set_active_fe_index (DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      set_active_fe_index (DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                            const unsigned int                                      i)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (static_cast<unsigned int>(accessor.level()) <
@@ -2858,15 +3132,15 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename ForwardIterator, class OutputVector>
+      template <int dim, int spacedim, bool lda, typename ForwardIterator, class OutputVector>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim>, lda> &accessor,
                                   ForwardIterator local_source_begin,
                                   ForwardIterator local_source_end,
                                   OutputVector   &global_destination)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -2898,15 +3172,15 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename ForwardIterator, class OutputVector>
+      template <int dim, int spacedim, bool lda, typename ForwardIterator, class OutputVector>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                                   ForwardIterator local_source_begin,
                                   ForwardIterator local_source_end,
                                   OutputVector   &global_destination)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -2930,16 +3204,16 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename ForwardIterator, class OutputVector>
+      template <int dim, int spacedim, bool lda, typename ForwardIterator, class OutputVector>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim>, lda> &accessor,
                                   const ConstraintMatrix &constraints,
                                   ForwardIterator         local_source_begin,
                                   ForwardIterator         local_source_end,
                                   OutputVector           &global_destination)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -2970,16 +3244,16 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename ForwardIterator, class OutputVector>
+      template <int dim, int spacedim, bool lda, typename ForwardIterator, class OutputVector>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                                   const ConstraintMatrix &constraints,
                                   ForwardIterator         local_source_begin,
                                   ForwardIterator         local_source_end,
                                   OutputVector           &global_destination)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -3004,14 +3278,14 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename number, class OutputMatrix>
+      template <int dim, int spacedim, bool lda, typename number, class OutputMatrix>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim>, lda> &accessor,
                                   const dealii::FullMatrix<number> &local_source,
                                   OutputMatrix                     &global_destination)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -3047,14 +3321,14 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename number, class OutputMatrix>
+      template <int dim, int spacedim, bool lda, typename number, class OutputMatrix>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                                   const dealii::FullMatrix<number> &local_source,
                                   OutputMatrix                     &global_destination)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -3082,17 +3356,17 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename number,
+      template <int dim, int spacedim, bool lda, typename number,
                class OutputMatrix, typename OutputVector>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::DoFHandler<dim,spacedim>, lda> &accessor,
                                   const dealii::FullMatrix<number> &local_matrix,
                                   const dealii::Vector<number>     &local_vector,
                                   OutputMatrix                     &global_matrix,
                                   OutputVector                     &global_vector)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -3133,17 +3407,17 @@ namespace internal
 
 
 
-      template <int dim, int spacedim, typename number,
+      template <int dim, int spacedim, bool lda, typename number,
                class OutputMatrix, typename OutputVector>
       static
       void
-      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim> > &accessor,
+      distribute_local_to_global (const DoFCellAccessor<dealii::hp::DoFHandler<dim,spacedim>, lda> &accessor,
                                   const dealii::FullMatrix<number> &local_matrix,
                                   const dealii::Vector<number>     &local_vector,
                                   OutputMatrix                     &global_matrix,
                                   OutputVector                     &global_vector)
       {
-        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim> > BaseClass;
+        typedef dealii::DoFAccessor<dim,DoFHandler<dim,spacedim>, lda> BaseClass;
         Assert (accessor.dof_handler != 0,
                 typename BaseClass::ExcInvalidObject());
         Assert (&accessor.get_fe() != 0,
@@ -3163,7 +3437,10 @@ namespace internal
 
         const unsigned int n_dofs = local_matrix.size();
 
-//TODO[WB/MK]: This function could me made more efficient because it allocates memory, which could be avoided by passing in another argument as a scratch array.
+//TODO[WB/MK]: This function could me made more efficient because it
+//allocates memory, which could be avoided by passing in another
+//argument as a scratch array. Comment(GK) Do not bother and leva this
+//to ConstraintMatrix or MeshWorker::Assembler
 
         // get indices of dofs
         std::vector<unsigned int> dofs (n_dofs);
@@ -3178,48 +3455,43 @@ namespace internal
 }
 
 
-
-
-template <class DH>
+template <class DH, bool lda>
 inline
-DoFCellAccessor<DH>::
-DoFCellAccessor (const Triangulation<DH::dimension,DH::space_dimension> *tria,
-                 const int                 level,
-                 const int                 index,
-                 const AccessorData       *local_data)
+DoFCellAccessor<DH,lda>::DoFCellAccessor (
+  const Triangulation<DH::dimension,DH::space_dimension> *tria,
+  const int                 level,
+  const int                 index,
+  const AccessorData       *local_data)
   :
-  DoFAccessor<DH::dimension,DH> (tria,level,index,local_data)
+  DoFAccessor<DH::dimension,DH,lda> (tria,level,index, local_data)
 {}
 
 
-
-template <class DH>
+template <class DH, bool lda>
 template <int structdim2, int dim2, int spacedim2>
 inline
-DoFCellAccessor<DH>::
-DoFCellAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
+DoFCellAccessor<DH,lda>::DoFCellAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
 {
   Assert (false, typename BaseClass::ExcInvalidObject());
 }
 
 
 
-template <class DH>
-template <int dim2, class DH2>
+template <class DH, bool lda>
+template <int dim2, class DH2, bool lda2>
 inline
-DoFCellAccessor<DH>::
-DoFCellAccessor (const DoFAccessor<dim2,DH2> &)
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
+DoFCellAccessor<DH,lda>::DoFCellAccessor (const DoFAccessor<dim2,DH2,lda2> &other)
+  :
+  BaseClass(other)
+{}
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
-typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
-DoFCellAccessor<DH>::neighbor (const unsigned int i) const
+TriaIterator<DoFCellAccessor<DH,lda> >
+DoFCellAccessor<DH,lda>::neighbor (const unsigned int i) const
 {
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH,lda> >
   q (this->tria,
      this->neighbor_level (i),
      this->neighbor_index (i),
@@ -3233,12 +3505,12 @@ DoFCellAccessor<DH>::neighbor (const unsigned int i) const
 }
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
-typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
-DoFCellAccessor<DH>::child (const unsigned int i) const
+TriaIterator<DoFCellAccessor<DH,lda> >
+DoFCellAccessor<DH,lda>::child (const unsigned int i) const
 {
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH,lda> >
   q (this->tria,
      this->level()+1,
      this->child_index (i),
@@ -3252,12 +3524,12 @@ DoFCellAccessor<DH>::child (const unsigned int i) const
 }
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
-typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
-DoFCellAccessor<DH>::parent () const
+TriaIterator<DoFCellAccessor<DH,lda> >
+DoFCellAccessor<DH,lda>::parent () const
 {
-  typename dealii::internal::DoFHandler::Iterators<DH>::cell_iterator
+  TriaIterator<DoFCellAccessor<DH,lda> >
   q (this->tria,
      this->level() - 1,
      this->parent_index (),
@@ -3271,14 +3543,14 @@ namespace internal
 {
   namespace DoFCellAccessor
   {
-    template <class DH>
+    template <class DH, bool lda>
     inline
-    typename dealii::internal::DoFHandler::Iterators<DH>::face_iterator
-    get_face (const dealii::DoFCellAccessor<DH> &cell,
+    TriaIterator<dealii::DoFAccessor<DH::dimension-1,DH,lda> >
+    get_face (const dealii::DoFCellAccessor<DH,lda> &cell,
               const unsigned int i,
               const dealii::internal::int2type<1>)
     {
-      dealii::DoFAccessor<0, DH>
+      dealii::DoFAccessor<0, DH,lda>
       a (&cell.get_triangulation(),
          ((i == 0) && cell.at_boundary(0)
           ?
@@ -3291,14 +3563,14 @@ namespace internal
            dealii::TriaAccessor<0, 1, DH::space_dimension>::interior_vertex)),
          cell.vertex_index(i),
          &cell.get_dof_handler());
-      return typename dealii::internal::DoFHandler::Iterators<DH>::face_iterator(a);
+      return typename dealii::TriaIterator<dealii::DoFAccessor<DH::dimension-1,DH,lda> > (a);
     }
 
 
-    template <class DH>
+    template <class DH, bool lda>
     inline
-    typename dealii::internal::DoFHandler::Iterators<DH>::face_iterator
-    get_face (const dealii::DoFCellAccessor<DH> &cell,
+    TriaIterator<dealii::DoFAccessor<DH::dimension-1,DH,lda> >
+    get_face (const dealii::DoFCellAccessor<DH,lda> &cell,
               const unsigned int i,
               const dealii::internal::int2type<2>)
     {
@@ -3306,10 +3578,10 @@ namespace internal
     }
 
 
-    template <class DH>
+    template <class DH, bool lda>
     inline
-    typename dealii::internal::DoFHandler::Iterators<DH>::face_iterator
-    get_face (const dealii::DoFCellAccessor<DH> &cell,
+    TriaIterator<dealii::DoFAccessor<DH::dimension-1,DH,lda> >
+    get_face (const dealii::DoFCellAccessor<DH,lda> &cell,
               const unsigned int i,
               const dealii::internal::int2type<3>)
     {
@@ -3319,9 +3591,9 @@ namespace internal
 }
 
 
-template <class DH>
-typename dealii::internal::DoFHandler::Iterators<DH>::face_iterator
-DoFCellAccessor<DH>::face (const unsigned int i) const
+template <class DH, bool lda>
+TriaIterator<DoFAccessor<DH::dimension-1,DH,lda> >
+DoFCellAccessor<DH,lda>::face (const unsigned int i) const
 {
   Assert (i<GeometryInfo<dim>::faces_per_cell, ExcIndexRange (i, 0, GeometryInfo<dim>::faces_per_cell));
   Assert (static_cast<unsigned int>(this->level()) < this->dof_handler->levels.size(),
@@ -3333,11 +3605,10 @@ DoFCellAccessor<DH>::face (const unsigned int i) const
 
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
 void
-DoFCellAccessor<DH>::
-get_dof_indices (std::vector<unsigned int> &dof_indices) const
+DoFCellAccessor<DH,lda>::get_dof_indices (std::vector<unsigned int> &dof_indices) const
 {
   Assert (this->is_artificial() == false,
           ExcMessage ("Can't ask for DoF indices on artificial cells."));
@@ -3347,19 +3618,38 @@ get_dof_indices (std::vector<unsigned int> &dof_indices) const
 }
 
 
-template<class DH>
+template<class DH, bool lda>
 inline
-void DoFCellAccessor<DH>::get_mg_dof_indices (std::vector<unsigned int> &dof_indices) const
+void DoFCellAccessor<DH,lda>::get_mg_dof_indices (std::vector<unsigned int> &dof_indices) const
 {
-  DoFAccessor<dim, DH>::get_mg_dof_indices (this->level (), dof_indices);
+  DoFAccessor<dim, DH,lda>::get_mg_dof_indices (this->level (), dof_indices);
 }
 
+template<class DH, bool lda>
+inline
+void DoFCellAccessor<DH,lda>::set_mg_dof_indices (const std::vector<unsigned int> &dof_indices)
+{
+  DoFAccessor<dim, DH,lda>::set_mg_dof_indices (this->level (), dof_indices);
+}
+
+
+template<class DH, bool lda>
+inline
+void DoFCellAccessor<DH,lda>::dof_indices (std::vector<unsigned int> &dof_indices) const
+{
+  if (lda)
+    get_mg_dof_indices (dof_indices);
+  else
+    get_dof_indices (dof_indices);
+}
+
+
 
-template <class DH>
+template <class DH, bool lda>
 template <class InputVector, typename number>
 void
-DoFCellAccessor<DH>::get_dof_values (const InputVector &values,
-                                     Vector<number>    &local_values) const
+DoFCellAccessor<DH,lda>::get_dof_values (const InputVector &values,
+                                         Vector<number>    &local_values) const
 {
   Assert (this->is_artificial() == false,
           ExcMessage ("Can't ask for DoF indices on artificial cells."));
@@ -3371,12 +3661,12 @@ DoFCellAccessor<DH>::get_dof_values (const InputVector &values,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <class InputVector, typename ForwardIterator>
 void
-DoFCellAccessor<DH>::get_dof_values (const InputVector &values,
-                                     ForwardIterator    local_values_begin,
-                                     ForwardIterator    local_values_end) const
+DoFCellAccessor<DH,lda>::get_dof_values (const InputVector &values,
+                                         ForwardIterator    local_values_begin,
+                                         ForwardIterator    local_values_end) const
 {
   Assert (this->is_artificial() == false,
           ExcMessage ("Can't ask for DoF indices on artificial cells."));
@@ -3386,13 +3676,13 @@ DoFCellAccessor<DH>::get_dof_values (const InputVector &values,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <class InputVector, typename ForwardIterator>
 void
-DoFCellAccessor<DH>::get_dof_values (const ConstraintMatrix &constraints,
-                                     const InputVector      &values,
-                                     ForwardIterator         local_values_begin,
-                                     ForwardIterator         local_values_end) const
+DoFCellAccessor<DH,lda>::get_dof_values (const ConstraintMatrix &constraints,
+                                         const InputVector      &values,
+                                         ForwardIterator         local_values_begin,
+                                         ForwardIterator         local_values_end) const
 {
   Assert (this->is_artificial() == false,
           ExcMessage ("Can't ask for DoF indices on artificial cells."));
@@ -3403,11 +3693,11 @@ DoFCellAccessor<DH>::get_dof_values (const ConstraintMatrix &constraints,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <class OutputVector, typename number>
 void
-DoFCellAccessor<DH>::set_dof_values (const Vector<number> &local_values,
-                                     OutputVector         &values) const
+DoFCellAccessor<DH,lda>::set_dof_values (const Vector<number> &local_values,
+                                         OutputVector         &values) const
 {
   Assert (this->is_artificial() == false,
           ExcMessage ("Can't ask for DoF indices on artificial cells."));
@@ -3417,30 +3707,30 @@ DoFCellAccessor<DH>::set_dof_values (const Vector<number> &local_values,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
 const FiniteElement<DH::dimension,DH::space_dimension> &
-DoFCellAccessor<DH>::get_fe () const
+DoFCellAccessor<DH,lda>::get_fe () const
 {
   return dealii::internal::DoFAccessor::get_fe (this->dof_handler->get_fe(), active_fe_index());
 }
 
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
 unsigned int
-DoFCellAccessor<DH>::active_fe_index () const
+DoFCellAccessor<DH,lda>::active_fe_index () const
 {
   return dealii::internal::DoFCellAccessor::Implementation::active_fe_index (*this);
 }
 
 
 
-template <class DH>
+template <class DH, bool lda>
 inline
 void
-DoFCellAccessor<DH>::set_active_fe_index (const unsigned int i)
+DoFCellAccessor<DH,lda>::set_active_fe_index (const unsigned int i)
 {
   dealii::internal::DoFCellAccessor::Implementation::set_active_fe_index (*this, i);
 }
@@ -3448,13 +3738,13 @@ DoFCellAccessor<DH>::set_active_fe_index (const unsigned int i)
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <typename number, typename OutputVector>
 inline
 void
-DoFCellAccessor<DH>::
-distribute_local_to_global (const Vector<number> &local_source,
-                            OutputVector         &global_destination) const
+DoFCellAccessor<DH,lda>::distribute_local_to_global (
+  const Vector<number> &local_source,
+  OutputVector         &global_destination) const
 {
   dealii::internal::DoFCellAccessor::Implementation::
   distribute_local_to_global (*this, local_source.begin(),
@@ -3463,14 +3753,14 @@ distribute_local_to_global (const Vector<number> &local_source,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <typename ForwardIterator, typename OutputVector>
 inline
 void
-DoFCellAccessor<DH>::
-distribute_local_to_global (ForwardIterator  local_source_begin,
-                            ForwardIterator  local_source_end,
-                            OutputVector    &global_destination) const
+DoFCellAccessor<DH,lda>::distribute_local_to_global (
+  ForwardIterator  local_source_begin,
+  ForwardIterator  local_source_end,
+  OutputVector    &global_destination) const
 {
   dealii::internal::DoFCellAccessor::Implementation::
   distribute_local_to_global (*this, local_source_begin,
@@ -3479,15 +3769,15 @@ distribute_local_to_global (ForwardIterator  local_source_begin,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <typename ForwardIterator, typename OutputVector>
 inline
 void
-DoFCellAccessor<DH>::
-distribute_local_to_global (const ConstraintMatrix &constraints,
-                            ForwardIterator         local_source_begin,
-                            ForwardIterator         local_source_end,
-                            OutputVector           &global_destination) const
+DoFCellAccessor<DH,lda>::distribute_local_to_global (
+  const ConstraintMatrix &constraints,
+  ForwardIterator         local_source_begin,
+  ForwardIterator         local_source_end,
+  OutputVector           &global_destination) const
 {
   dealii::internal::DoFCellAccessor::Implementation::
   distribute_local_to_global (*this, constraints, local_source_begin,
@@ -3496,13 +3786,13 @@ distribute_local_to_global (const ConstraintMatrix &constraints,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <typename number, typename OutputMatrix>
 inline
 void
-DoFCellAccessor<DH>::
-distribute_local_to_global (const FullMatrix<number> &local_source,
-                            OutputMatrix             &global_destination) const
+DoFCellAccessor<DH,lda>::distribute_local_to_global (
+  const FullMatrix<number> &local_source,
+  OutputMatrix             &global_destination) const
 {
   dealii::internal::DoFCellAccessor::Implementation::
   distribute_local_to_global (*this,local_source,global_destination);
@@ -3510,15 +3800,15 @@ distribute_local_to_global (const FullMatrix<number> &local_source,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <typename number, typename OutputMatrix, typename OutputVector>
 inline
 void
-DoFCellAccessor<DH>::
-distribute_local_to_global (const FullMatrix<number> &local_matrix,
-                            const Vector<number>     &local_vector,
-                            OutputMatrix             &global_matrix,
-                            OutputVector             &global_vector) const
+DoFCellAccessor<DH,lda>::distribute_local_to_global (
+  const FullMatrix<number> &local_matrix,
+  const Vector<number>     &local_vector,
+  OutputMatrix             &global_matrix,
+  OutputVector             &global_vector) const
 {
   dealii::internal::DoFCellAccessor::Implementation::
   distribute_local_to_global (*this,local_matrix,local_vector,
index 39335c7abc464c131f1e66fab35ae74c058e52dc..baf45648b22b22f28715e7fd457e5ecadf3ee012 100644 (file)
@@ -165,304 +165,339 @@ namespace internal
  * serialization archive.
  *
  * @ingroup dofs
- * @author Wolfgang Bangerth
+ * @author Wolfgang Bangerth, Markus Buerg, Timo Heister, Guido Kanschat,
+ * @date 1998, 1999, 2000, 2012
  */
 template <int dim, int spacedim=dim>
 class DoFHandler  :  public Subscriptor
 {
-  typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim> > IteratorSelector;
+  typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim>, false> ActiveSelector;
+  typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim>, true> LevelSelector;
 public:
-  typedef typename IteratorSelector::CellAccessor         cell_accessor;
-  typedef typename IteratorSelector::FaceAccessor         face_accessor;
+  typedef typename ActiveSelector::CellAccessor         cell_accessor;
+  typedef typename ActiveSelector::FaceAccessor         face_accessor;
 
-  typedef typename IteratorSelector::line_iterator        line_iterator;
-  typedef typename IteratorSelector::active_line_iterator active_line_iterator;
+  typedef typename ActiveSelector::line_iterator        line_iterator;
+  typedef typename ActiveSelector::active_line_iterator active_line_iterator;
 
-  typedef typename IteratorSelector::quad_iterator        quad_iterator;
-  typedef typename IteratorSelector::active_quad_iterator active_quad_iterator;
+  typedef typename ActiveSelector::quad_iterator        quad_iterator;
+  typedef typename ActiveSelector::active_quad_iterator active_quad_iterator;
 
-  typedef typename IteratorSelector::hex_iterator        hex_iterator;
-  typedef typename IteratorSelector::active_hex_iterator active_hex_iterator;
+  typedef typename ActiveSelector::hex_iterator         hex_iterator;
+  typedef typename ActiveSelector::active_hex_iterator  active_hex_iterator;
 
-  typedef typename IteratorSelector::cell_iterator        cell_iterator;
-  typedef typename IteratorSelector::active_cell_iterator active_cell_iterator;
+  typedef typename ActiveSelector::active_cell_iterator active_cell_iterator;
 
-  typedef typename IteratorSelector::face_iterator        face_iterator;
-  typedef typename IteratorSelector::active_face_iterator active_face_iterator;
+  typedef typename ActiveSelector::face_iterator        face_iterator;
+  typedef typename ActiveSelector::active_face_iterator active_face_iterator;
+
+  typedef typename LevelSelector::CellAccessor          level_cell_accessor;
+  typedef typename LevelSelector::FaceAccessor          level_face_accessor;
+
+  typedef typename LevelSelector::cell_iterator         level_cell_iterator;
+  typedef typename LevelSelector::face_iterator         level_face_iterator;
+
+  typedef typename ActiveSelector::cell_iterator        cell_iterator;
 
   /**
-   * Alias the @p FunctionMap type
-   * declared elsewhere.
-   */
+  * Alias the @p FunctionMap type
+  * declared elsewhere.
+  */
   typedef typename dealii::FunctionMap<spacedim>::type FunctionMap;
 
   /**
-   * Make the dimension available
-   * in function templates.
-   */
+  * Make the dimension available
+  * in function templates.
+  */
   static const unsigned int dimension = dim;
 
   /**
-   * Make the space dimension available
-   * in function templates.
-   */
+  * Make the space dimension available
+  * in function templates.
+  */
   static const unsigned int space_dimension = spacedim;
 
   /**
-   * When the arrays holding the
-   * DoF indices are set up, but
-   * before they are filled with
-   * actual values, they are set to
-   * an invalid value, in order to
-   * monitor possible
-   * problems. This invalid value
-   * is the constant defined here.
-   *
-   * Please note that you should
-   * not rely on it having a
-   * certain value, but rather take
-   * its symbolic name.
-   */
+  * When the arrays holding the
+  * DoF indices are set up, but
+  * before they are filled with
+  * actual values, they are set to
+  * an invalid value, in order to
+  * monitor possible
+  * problems. This invalid value
+  * is the constant defined here.
+  *
+  * Please note that you should
+  * not rely on it having a
+  * certain value, but rather take
+  * its symbolic name.
+  */
   static const unsigned int invalid_dof_index = numbers::invalid_unsigned_int;
 
   /**
-   * The default index of the
-   * finite element to be used on a
-   * given cell. Since the present
-   * class only supports the same
-   * finite element to be used on
-   * all cells, the index of the
-   * finite element needs to be the
-   * same on all cells anyway, and
-   * by convention we pick zero for
-   * this value. The situation is
-   * different for hp objects
-   * (i.e. the hp::DoFHandler
-   * class) where different finite
-   * element indices may be used on
-   * different cells, and the
-   * default index there
-   * corresponds to an invalid
-   * value.
-   */
+  * The default index of the
+  * finite element to be used on a
+  * given cell. Since the present
+  * class only supports the same
+  * finite element to be used on
+  * all cells, the index of the
+  * finite element needs to be the
+  * same on all cells anyway, and
+  * by convention we pick zero for
+  * this value. The situation is
+  * different for hp objects
+  * (i.e. the hp::DoFHandler
+  * class) where different finite
+  * element indices may be used on
+  * different cells, and the
+  * default index there
+  * corresponds to an invalid
+  * value.
+  */
   static const unsigned int default_fe_index = 0;
 
   /**
-   * Standard constructor, not
-   * initializing any data. After
-   * constructing an object with
-   * this constructor, use
-   * initialize() to make a valid
-   * DoFHandler.
-   */
+  * Standard constructor, not
+  * initializing any data. After
+  * constructing an object with
+  * this constructor, use
+  * initialize() to make a valid
+  * DoFHandler.
+  */
   DoFHandler ();
 
   /**
-   * Constructor. Take @p tria as the
-   * triangulation to work on.
-   */
+  * Constructor. Take @p tria as the
+  * triangulation to work on.
+  */
   DoFHandler ( const Triangulation<dim,spacedim> &tria);
 
   /**
-   * Destructor.
-   */
+  * Destructor.
+  */
   virtual ~DoFHandler ();
 
   /**
-   * Assign a Triangulation and a
-   * FiniteElement to the
-   * DoFHandler and compute the
-   * distribution of degrees of
-   * freedom over the mesh.
-   */
+  * Assign a Triangulation and a
+  * FiniteElement to the
+  * DoFHandler and compute the
+  * distribution of degrees of
+  * freedom over the mesh.
+  */
   void initialize(const Triangulation<dim,spacedim> &tria,
                   const FiniteElement<dim,spacedim> &fe);
 
   /**
-   * Go through the triangulation and
-   * distribute the degrees of freedoms
-   * needed for the given finite element
-   * according to the given distribution
-   * method. The purpose of this function
-   * is first discussed in the introduction
-   * to the step-2 tutorial program.
-   *
-   * A pointer of the transferred
-   * finite element is
-   * stored. Therefore, the
-   * lifetime of the finite element
-   * object shall be longer than
-   * that of this object. If you
-   * don't want this behaviour, you
-   * may want to call the @p clear
-   * member function which also
-   * releases the lock of this
-   * object to the finite element.
-   */
+  * Go through the triangulation and
+  * distribute the degrees of freedoms
+  * needed for the given finite element
+  * according to the given distribution
+  * method. The purpose of this function
+  * is first discussed in the introduction
+  * to the step-2 tutorial program.
+  *
+  * A pointer of the transferred
+  * finite element is
+  * stored. Therefore, the
+  * lifetime of the finite element
+  * object shall be longer than
+  * that of this object. If you
+  * don't want this behaviour, you
+  * may want to call the @p clear
+  * member function which also
+  * releases the lock of this
+  * object to the finite element.
+  */
   virtual void distribute_dofs (const FiniteElement<dim,spacedim> &fe);
 
   virtual void distribute_mg_dofs (const FiniteElement<dim, spacedim> &fe);
 
   /**
-   * After distribute_dofs() with
-   * an FESystem element, the block
-   * structure of global and level
-   * vectors is stored in a
-   * BlockInfo object accessible
-   * with block_info(). This
-   * function initializes the local
-   * block structure on each cell
-   * in the same object.
+   * This function returns whether
+   * this DoFHandler has DoFs
+   * distributed on each multigrid
+   * level or in other words if
+   * distribute_mg_dofs() has been
+   * called.
    */
-  void initialize_local_block_info();
+  bool has_level_dofs() const;
 
   /**
-   * Clear all data of this object and
-   * especially delete the lock this object
-   * has to the finite element used the last
-   * time when @p distribute_dofs was called.
+   * This function returns whether
+   * this DoFHandler has active
+   * DoFs or in other words if
+   * distribute_dofs() has been
+   * called.
    */
+  bool has_active_dofs() const;
+  /**
+  * After distribute_dofs() with
+  * an FESystem element, the block
+  * structure of global and level
+  * vectors is stored in a
+  * BlockInfo object accessible
+  * with block_info(). This
+  * function initializes the local
+  * block structure on each cell
+  * in the same object.
+  */
+  void initialize_local_block_info();
+
+  /**
+  * Clear all data of this object and
+  * especially delete the lock this object
+  * has to the finite element used the last
+  * time when @p distribute_dofs was called.
+  */
   virtual void clear ();
 
   /**
-   * Renumber degrees of freedom based on
-   * a list of new dof numbers for all the
-   * dofs.
-   *
-   * This function is called by
-   * the functions in
-   * DoFRenumbering function
-   * after computing the ordering
-   * of the degrees of freedom.
-   * This function is called, for
-   * example, by the functions in
-   * the DoFRenumbering
-   * namespace, but it can of
-   * course also be called from
-   * user code.
-   *
-   * @arg new_number This array
-   * must have a size equal to
-   * the number of degrees of
-   * freedom owned by the current
-   * processor, i.e. the size
-   * must be equal to what
-   * n_locally_owned_dofs()
-   * returns. If only one
-   * processor participates in
-   * storing the current mesh,
-   * then this equals the total
-   * number of degrees of
-   * freedom, i.e. the result of
-   * n_dofs(). The contents of
-   * this array are the new
-   * global indices for each
-   * freedom listed in the
-   * IndexSet returned by
-   * locally_owned_dofs(). In the
-   * case of a sequential mesh
-   * this means that the array is
-   * a list of new indices for
-   * each of the degrees of
-   * freedom on the current
-   * mesh. In the case that we
-   * have a
-   * parallel::distributed::Triangulation
-   * underlying this DoFHandler
-   * object, the array is a list
-   * of new indices for all the
-   * locally owned degrees of
-   * freedom, enumerated in the
-   * same order as the currently
-   * locally owned DoFs. In other
-   * words, assume that degree of
-   * freedom <code>i</code> is
-   * currently locally owned,
-   * then
-   * <code>new_numbers[locally_owned_dofs().index_within_set(i)]</code>
-   * returns the new global DoF
-   * index of
-   * <code>i</code>. Since the
-   * IndexSet of
-   * locally_owned_dofs() is
-   * complete in the sequential
-   * case, the latter convention
-   * for the content of the array
-   * reduces to the former in the
-   * case that only one processor
-   * participates in the mesh.
-   */
+  * Renumber degrees of freedom based on
+  * a list of new dof numbers for all the
+  * dofs.
+  *
+  * This function is called by
+  * the functions in
+  * DoFRenumbering function
+  * after computing the ordering
+  * of the degrees of freedom.
+  * This function is called, for
+  * example, by the functions in
+  * the DoFRenumbering
+  * namespace, but it can of
+  * course also be called from
+  * user code.
+  *
+  * @arg new_number This array
+  * must have a size equal to
+  * the number of degrees of
+  * freedom owned by the current
+  * processor, i.e. the size
+  * must be equal to what
+  * n_locally_owned_dofs()
+  * returns. If only one
+  * processor participates in
+  * storing the current mesh,
+  * then this equals the total
+  * number of degrees of
+  * freedom, i.e. the result of
+  * n_dofs(). The contents of
+  * this array are the new
+  * global indices for each
+  * freedom listed in the
+  * IndexSet returned by
+  * locally_owned_dofs(). In the
+  * case of a sequential mesh
+  * this means that the array is
+  * a list of new indices for
+  * each of the degrees of
+  * freedom on the current
+  * mesh. In the case that we
+  * have a
+  * parallel::distributed::Triangulation
+  * underlying this DoFHandler
+  * object, the array is a list
+  * of new indices for all the
+  * locally owned degrees of
+  * freedom, enumerated in the
+  * same order as the currently
+  * locally owned DoFs. In other
+  * words, assume that degree of
+  * freedom <code>i</code> is
+  * currently locally owned,
+  * then
+  * <code>new_numbers[locally_owned_dofs().index_within_set(i)]</code>
+  * returns the new global DoF
+  * index of
+  * <code>i</code>. Since the
+  * IndexSet of
+  * locally_owned_dofs() is
+  * complete in the sequential
+  * case, the latter convention
+  * for the content of the array
+  * reduces to the former in the
+  * case that only one processor
+  * participates in the mesh.
+  */
   void renumber_dofs (const std::vector<unsigned int> &new_numbers);
 
   /**
-   * @deprecated Use
-   * CompressedSparsityPattern instead of
-   * initializing SparsityPattern with this
-   * value, see the discussion in step-2
-   * and the @ref Sparsity module.
-   *
-   * Return the maximum number of
-   * degrees of freedom a degree of freedom
-   * in the given triangulation with the
-   * given finite element may couple with.
-   * This is the maximum number of entries
-   * per line in the system matrix; this
-   * information can therefore be used upon
-   * construction of the SparsityPattern
-   * object.
-   *
-   * The returned number is not really the
-   * maximum number but an estimate based
-   * on the finite element and the maximum
-   * number of cells meeting at a vertex.
-   * The number holds for the constrained
-   * matrix as well.
-   *
-   * The determination of the number of
-   * couplings can be done by simple
-   * picture drawing. An example can be
-   * found in the implementation of this
-   * function.
-   *
-   * Note that this function is most often
-   * used to determine the maximal row
-   * length for sparsity
-   * patterns. Unfortunately, while the
-   * estimates returned by this function
-   * are rather accurate in 1d and 2d, they
-   * are often significantly too high in
-   * 3d, leading the SparsityPattern class
-   * to allocate much too much memory in
-   * some cases. Unless someone comes
-   * around to improving the present
-   * function for 3d, there is not very
-   * much one can do about these cases. The
-   * typical way to work around this
-   * problem is to use an intermediate
-   * compressed sparsity pattern that only
-   * allocates memory on demand. Refer to
-   * the step-2 and step-11 example
-   * programs on how to do this. The problem
-   * is also discussed in the documentation
-   * of the module on @ref Sparsity.
+   * The same function as above, but
+   * renumber the degrees of freedom of a
+   * single level of a multigrid hierarchy.
    */
+  void renumber_dofs (const unsigned int level,
+                      const std::vector<unsigned int> &new_numbers);
+
+  /**
+  * @deprecated Use
+  * CompressedSparsityPattern instead of
+  * initializing SparsityPattern with this
+  * value, see the discussion in step-2
+  * and the @ref Sparsity module.
+  *
+  * Return the maximum number of
+  * degrees of freedom a degree of freedom
+  * in the given triangulation with the
+  * given finite element may couple with.
+  * This is the maximum number of entries
+  * per line in the system matrix; this
+  * information can therefore be used upon
+  * construction of the SparsityPattern
+  * object.
+  *
+  * The returned number is not really the
+  * maximum number but an estimate based
+  * on the finite element and the maximum
+  * number of cells meeting at a vertex.
+  * The number holds for the constrained
+  * matrix as well.
+  *
+  * The determination of the number of
+  * couplings can be done by simple
+  * picture drawing. An example can be
+  * found in the implementation of this
+  * function.
+  *
+  * Note that this function is most often
+  * used to determine the maximal row
+  * length for sparsity
+  * patterns. Unfortunately, while the
+  * estimates returned by this function
+  * are rather accurate in 1d and 2d, they
+  * are often significantly too high in
+  * 3d, leading the SparsityPattern class
+  * to allocate much too much memory in
+  * some cases. Unless someone comes
+  * around to improving the present
+  * function for 3d, there is not very
+  * much one can do about these cases. The
+  * typical way to work around this
+  * problem is to use an intermediate
+  * compressed sparsity pattern that only
+  * allocates memory on demand. Refer to
+  * the step-2 and step-11 example
+  * programs on how to do this. The problem
+  * is also discussed in the documentation
+  * of the module on @ref Sparsity.
+  */
   unsigned int max_couplings_between_dofs () const;
 
   /**
-   * @deprecated Use
-   * CompressedSparsityPattern
-   * instead of initializing
-   * SparsityPattern with this
-   * value.
-   *
-   * Return the number of degrees of freedom
-   * located on the boundary another dof on
-   * the boundary can couple with.
-   *
-   * The number is the same as for
-   * max_couplings_between_dofs() in one
-   * dimension less.
-   */
+  * @deprecated Use
+  * CompressedSparsityPattern
+  * instead of initializing
+  * SparsityPattern with this
+  * value.
+  *
+  * Return the number of degrees of freedom
+  * located on the boundary another dof on
+  * the boundary can couple with.
+  *
+  * The number is the same as for
+  * max_couplings_between_dofs() in one
+  * dimension less.
+  */
   unsigned int max_couplings_between_boundary_dofs () const;
 
   /*--------------------------------------*/
@@ -475,7 +510,7 @@ public:
    * Iterator to the first used
    * cell on level @p level.
    */
-  cell_iterator        begin       (const unsigned int level = 0) const;
+  cell_iterator begin (const unsigned int level = 0) const;
 
   /**
    * Iterator to the first active
@@ -493,13 +528,12 @@ public:
   cell_iterator        end () const;
 
   /**
-   * Return an iterator which is
-   * the first iterator not on
-   * level. If @p level is the
-   * last level, then this returns
-   * <tt>end()</tt>.
-   */
-  cell_iterator        end (const unsigned int level) const;
+  * Return an iterator which is the first
+  * iterator not on the given level. If @p level is
+  * the last level, then this returns
+  * <tt>end()</tt>.
+  */
+  cell_iterator end (const unsigned int level) const;
 
   /**
    * Return an active iterator
@@ -510,65 +544,101 @@ public:
    */
   active_cell_iterator end_active (const unsigned int level) const;
 
-  //@}
 
-  /*---------------------------------------*/
+  /**
+   * Iterator to the first used
+   * cell on level @p level. This returns a level_cell_iterator
+   * that returns level dofs when dof_indices() is called.
+   */
+  level_cell_iterator begin_mg (const unsigned int level = 0) const;
 
+  /**
+   * Iterator past the last
+   * cell on level @p level. This returns a level_cell_iterator
+   * that returns level dofs when dof_indices() is called.
+   */
+  level_cell_iterator end_mg (const unsigned int level) const;
 
   /**
-   * Return the global number of
-   * degrees of freedom. If the
-   * current object handles all
-   * degrees of freedom itself
-   * (even if you may intend to
-   * solve your linear system in
-   * parallel, such as in step-17
-   * or step-18), then this number
-   * equals the number of locally
-   * owned degrees of freedom since
-   * this object doesn't know
-   * anything about what you want
-   * to do with it and believes
-   * that it owns every degree of
-   * freedom it knows about.
-   *
-   * On the other hand, if this
-   * object operates on a
-   * parallel::distributed::Triangulation
-   * object, then this function
-   * returns the global number of
-   * degrees of freedom,
-   * accumulated over all
-   * processors.
-   *
-   * In either case, included in
-   * the returned number are those
-   * DoFs which are constrained by
-   * hanging nodes, see @ref constraints.
+   * Iterator past the end; this
+   * iterator serves for
+   * comparisons of iterators with
+   * past-the-end or
+   * before-the-beginning states.
    */
+  level_cell_iterator end_mg () const;
+
+
+  //@}
+
+  /*---------------------------------------*/
+
+  /**
+  * Return the global number of
+  * degrees of freedom. If the
+  * current object handles all
+  * degrees of freedom itself
+  * (even if you may intend to
+  * solve your linear system in
+  * parallel, such as in step-17
+  * or step-18), then this number
+  * equals the number of locally
+  * owned degrees of freedom since
+  * this object doesn't know
+  * anything about what you want
+  * to do with it and believes
+  * that it owns every degree of
+  * freedom it knows about.
+  *
+  * On the other hand, if this
+  * object operates on a
+  * parallel::distributed::Triangulation
+  * object, then this function
+  * returns the global number of
+  * degrees of freedom,
+  * accumulated over all
+  * processors.
+  *
+  * In either case, included in
+  * the returned number are those
+  * DoFs which are constrained by
+  * hanging nodes, see @ref constraints.
+  */
   unsigned int n_dofs () const;
 
+  /**
+  * The (global) number of multilevel
+  * degrees of freedom on a
+  * given level.
+  *
+  * If no level degrees of
+  * freedom have been assigned
+  * to this level, returns
+  * numbers::invalid_unsigned_int. Else
+  * returns the number of
+  * degrees of freedom on this level.
+  */
   unsigned int n_dofs (const unsigned int level) const;
 
   /**
-   * Return the number of degrees of freedom
-   * located on the boundary.
-   */
+  * Return the number of degrees of freedom
+  * located on the boundary.
+  */
   unsigned int n_boundary_dofs () const;
 
   /**
-   * Return the number of degrees
-   * of freedom located on those
-   * parts of the boundary which
-   * have a boundary indicator
-   * listed in the given set. The
-   * reason that a @p map rather
-   * than a @p set is used is the
-   * same as described in the
-   * section on the
-   * @p make_boundary_sparsity_pattern
-   * function.
-   */
+  * Return the number of degrees
+  * of freedom located on those
+  * parts of the boundary which
+  * have a boundary indicator
+  * listed in the given set. The
+  * reason that a @p map rather
+  * than a @p set is used is the
+  * same as described in the
+  * section on the
+  * @p make_boundary_sparsity_pattern
+  * function.
+  */
   unsigned int
   n_boundary_dofs (const FunctionMap &boundary_indicators) const;
 
@@ -584,75 +654,76 @@ public:
   n_boundary_dofs (const std::set<types::boundary_id> &boundary_indicators) const;
 
   /**
-   * Access to an object informing
-   * of the block structure of the
-   * dof handler.
-   *
-   * If an FESystem is used in
-   * distribute_dofs(), degrees of
-   * freedom naturally split into
-   * several @ref GlossBlock
-   * "blocks". For each base element
-   * as many blocks appear as its
-   * multiplicity.
-   *
-   * At the end of
-   * distribute_dofs(), the number
-   * of degrees of freedom in each
-   * block is counted, and stored
-   * in a BlockInfo object, which
-   * can be accessed here. In an
-   * MGDoFHandler, the same is done
-   * on each level. Additionally,
-   * the block structure on each
-   * cell can be generated in this
-   * object by calling
-   * initialize_local_block_info().
-   */
+  * Access to an object informing
+  * of the block structure of the
+  * dof handler.
+  *
+  * If an FESystem is used in
+  * distribute_dofs(), degrees of
+  * freedom naturally split into
+  * several @ref GlossBlock
+  * "blocks". For each base element
+  * as many blocks appear as its
+  * multiplicity.
+  *
+  * At the end of
+  * distribute_dofs(), the number
+  * of degrees of freedom in each
+  * block is counted, and stored
+  * in a BlockInfo object, which
+  * can be accessed here. In an
+  * MGDoFHandler, the same is done
+  * on each level. Additionally,
+  * the block structure on each
+  * cell can be generated in this
+  * object by calling
+  * initialize_local_block_info().
+  */
   const BlockInfo &block_info() const;
 
 
   /**
-   * Return the number of
-   * degrees of freedom that
-   * belong to this
-   * process.
-   *
-   * If this is a sequential job,
-   * then the result equals that
-   * produced by n_dofs(). On the
-   * other hand, if we are
-   * operating on a
-   * parallel::distributed::Triangulation,
-   * then it includes only the
-   * degrees of freedom that the
-   * current processor owns. Note
-   * that in this case this does
-   * not include all degrees of
-   * freedom that have been
-   * distributed on the current
-   * processor's image of the mesh:
-   * in particular, some of the
-   * degrees of freedom on the
-   * interface between the cells
-   * owned by this processor and
-   * cells owned by other
-   * processors may be theirs, and
-   * degrees of freedom on ghost
-   * cells are also not necessarily
-   * included.
-   */
+  * Return the number of
+  * degrees of freedom that
+  * belong to this
+  * process.
+  *
+  * If this is a sequential job,
+  * then the result equals that
+  * produced by n_dofs(). On the
+  * other hand, if we are
+  * operating on a
+  * parallel::distributed::Triangulation,
+  * then it includes only the
+  * degrees of freedom that the
+  * current processor owns. Note
+  * that in this case this does
+  * not include all degrees of
+  * freedom that have been
+  * distributed on the current
+  * processor's image of the mesh:
+  * in particular, some of the
+  * degrees of freedom on the
+  * interface between the cells
+  * owned by this processor and
+  * cells owned by other
+  * processors may be theirs, and
+  * degrees of freedom on ghost
+  * cells are also not necessarily
+  * included.
+  */
   unsigned int n_locally_owned_dofs() const;
 
   /**
-   * Return an IndexSet describing
-   * the set of locally owned DoFs
-   * as a subset of
-   * 0..n_dofs(). The number of
-   * elements of this set equals
-   * n_locally_owned_dofs().
-   */
+  * Return an IndexSet describing
+  * the set of locally owned DoFs
+  * as a subset of
+  * 0..n_dofs(). The number of
+  * elements of this set equals
+  * n_locally_owned_dofs().
+  */
   const IndexSet &locally_owned_dofs() const;
+  const IndexSet &locally_owned_mg_dofs(const unsigned int level) const;
 
 
   /**
@@ -674,126 +745,129 @@ public:
   const std::vector<IndexSet> &
   locally_owned_dofs_per_processor () const;
 
+  const std::vector<IndexSet> &
+  locally_owned_mg_dofs_per_processor (const unsigned int level) const;
+
   /**
-   * Return a vector that
-   * stores the number of
-   * degrees of freedom each
-   * processor that
-   * participates in this
-   * triangulation owns
-   * locally. The sum of all
-   * these numbers equals the
-   * number of degrees of
-   * freedom that exist
-   * globally, i.e. what
-   * n_dofs() returns.
-   *
-   * Each element of the vector
-   * returned by this function
-   * equals the number of
-   * elements of the
-   * corresponding sets
-   * returned by
-   * global_dof_indices().
-   *
-   * If this is a sequential job,
-   * then the vector has a single
-   * element equal to n_dofs().
-   */
+  * Return a vector that
+  * stores the number of
+  * degrees of freedom each
+  * processor that
+  * participates in this
+  * triangulation owns
+  * locally. The sum of all
+  * these numbers equals the
+  * number of degrees of
+  * freedom that exist
+  * globally, i.e. what
+  * n_dofs() returns.
+  *
+  * Each element of the vector
+  * returned by this function
+  * equals the number of
+  * elements of the
+  * corresponding sets
+  * returned by
+  * global_dof_indices().
+  *
+  * If this is a sequential job,
+  * then the vector has a single
+  * element equal to n_dofs().
+  */
   const std::vector<unsigned int> &
   n_locally_owned_dofs_per_processor () const;
 
   /**
-   * Return a constant reference to
-   * the selected finite element
-   * object.
-   */
+  * Return a constant reference to
+  * the selected finite element
+  * object.
+  */
   const FiniteElement<dim,spacedim> &get_fe () const;
 
   /**
-   * Return a constant reference to
-   * the triangulation underlying
-   * this object.
-   */
+  * Return a constant reference to
+  * the triangulation underlying
+  * this object.
+  */
   const Triangulation<dim,spacedim> &get_tria () const;
 
   /**
-   * Determine an estimate for the
-   * memory consumption (in bytes)
-   * of this object.
-   *
-   * This function is made virtual,
-   * since a dof handler object
-   * might be accessed through a
-   * pointers to this base class,
-   * although the actual object
-   * might be a derived class.
-   */
+  * Determine an estimate for the
+  * memory consumption (in bytes)
+  * of this object.
+  *
+  * This function is made virtual,
+  * since a dof handler object
+  * might be accessed through a
+  * pointers to this base class,
+  * although the actual object
+  * might be a derived class.
+  */
   virtual std::size_t memory_consumption () const;
 
   /**
-   * Write the data of this object to a
-   * stream for the purpose of
-   * serialization.
-   */
+  * Write the data of this object to a
+  * stream for the purpose of
+  * serialization.
+  */
   template <class Archive>
   void save (Archive &ar, const unsigned int version) const;
 
   /**
-   * Read the data of this object from a
-   * stream for the purpose of
-   * serialization.
-   */
+  * Read the data of this object from a
+  * stream for the purpose of
+  * serialization.
+  */
   template <class Archive>
   void load (Archive &ar, const unsigned int version);
 
   BOOST_SERIALIZATION_SPLIT_MEMBER()
 
   /**
-   * We are trying to renumber the
-   * degrees of freedom, but
-   * somehow did not count
-   * correctly.
-   *
-   * @ingroup Exceptions
-   */
+  * We are trying to renumber the
+  * degrees of freedom, but
+  * somehow did not count
+  * correctly.
+  *
+  * @ingroup Exceptions
+  */
   DeclException0 (ExcRenumberingIncomplete);
   /**
-   * Exception
-   * @ingroup Exceptions
-   */
+  * Exception
+  * @ingroup Exceptions
+  */
   DeclException0 (ExcGridsDoNotMatch);
   /**
-   * Exception
-   * @ingroup Exceptions
-   */
+  * Exception
+  * @ingroup Exceptions
+  */
   DeclException0 (ExcInvalidBoundaryIndicator);
   /**
-   * Exception
-   * @ingroup Exceptions
-   */
+  * Exception
+  * @ingroup Exceptions
+  */
   DeclException1 (ExcNewNumbersNotConsecutive,
                   int,
                   << "The given list of new dof indices is not consecutive: "
                   << "the index " << arg1 << " does not exist.");
   /**
-   *  Exception
-   * @ingroup Exceptions
-   */
+  *  Exception
+  * @ingroup Exceptions
+  */
   DeclException1 (ExcInvalidLevel,
                   int,
                   << "The given level " << arg1
                   << " is not in the valid range!");
   /**
-   * Exception
-   * @ingroup Exceptions
-   */
+  * Exception
+  * @ingroup Exceptions
+  */
   DeclException0 (ExcFacesHaveNoLevel);
   /**
-   * The triangulation level you
-   * accessed is empty.
-   * @ingroup Exceptions
-   */
+  * The triangulation level you
+  * accessed is empty.
+  * @ingroup Exceptions
+  */
   DeclException1 (ExcEmptyLevel,
                   int,
                   << "You tried to do something on level " << arg1
@@ -802,84 +876,89 @@ public:
 
 protected:
   /**
-   * The object containing
-   * information on the block structure.
-   */
+  * The object containing
+  * information on the block structure.
+  */
   BlockInfo block_info_object;
 
   /**
-   * Array to store the indices for
-   * degrees of freedom located at
-   * vertices.
-   */
+  * Array to store the indices for
+  * degrees of freedom located at
+  * vertices.
+  */
   std::vector<unsigned int>      vertex_dofs;
 
 
 
   /**
-   * Address of the triangulation to
-   * work on.
-   */
+  * Address of the triangulation to
+  * work on.
+  */
   SmartPointer<const Triangulation<dim,spacedim>,DoFHandler<dim,spacedim> >
   tria;
 
   /**
-   * Store a pointer to the finite element
-   * given latest for the distribution of
-   * dofs. In order to avoid destruction of
-   * the object before the lifetime of
-   * the DoF handler, we subscribe to
-   * the finite element object. To unlock
-   * the FE before the end of the lifetime
-   * of this DoF handler, use the <tt>clear()</tt>
-   * function (this clears all data of
-   * this object as well, though).
-   */
+  * Store a pointer to the finite element
+  * given latest for the distribution of
+  * dofs. In order to avoid destruction of
+  * the object before the lifetime of
+  * the DoF handler, we subscribe to
+  * the finite element object. To unlock
+  * the FE before the end of the lifetime
+  * of this DoF handler, use the <tt>clear()</tt>
+  * function (this clears all data of
+  * this object as well, though).
+  */
   SmartPointer<const FiniteElement<dim,spacedim>,DoFHandler<dim,spacedim> >
   selected_fe;
 
   /**
-   * An object that describes how degrees
-   * of freedom should be distributed and
-   * renumbered.
-   */
+  * An object that describes how degrees
+  * of freedom should be distributed and
+  * renumbered.
+  */
   std_cxx1x::shared_ptr<dealii::internal::DoFHandler::Policy::PolicyBase<dim,spacedim> > policy;
 
   /**
-   * A structure that contains all
-   * sorts of numbers that
-   * characterize the degrees of
-   * freedom this object works on.
-   *
-   * For most members of this
-   * structure, there is an
-   * accessor function in this
-   * class that returns its value.
-   */
+  * A structure that contains all
+  * sorts of numbers that
+  * characterize the degrees of
+  * freedom this object works on.
+  *
+  * For most members of this
+  * structure, there is an
+  * accessor function in this
+  * class that returns its value.
+  */
   dealii::internal::DoFHandler::NumberCache number_cache;
 
+  /**
+   * Datastructure like number_cache, but for each Multigrid level.
+   */
+  std::vector<dealii::internal::DoFHandler::NumberCache> mg_number_cache;
+
 private:
 
   /**
-   * Copy constructor. I can see no reason
-   * why someone might want to use it, so
-   * I don't provide it. Since this class
-   * has pointer members, making it private
-   * prevents the compiler to provide it's
-   * own, incorrect one if anyone chose to
-   * copy such an object.
-   */
+  * Copy constructor. I can see no reason
+  * why someone might want to use it, so
+  * I don't provide it. Since this class
+  * has pointer members, making it private
+  * prevents the compiler to provide it's
+  * own, incorrect one if anyone chose to
+  * copy such an object.
+  */
   DoFHandler (const DoFHandler &);
 
   /**
-   * Copy operator. I can see no reason
-   * why someone might want to use it, so
-   * I don't provide it. Since this class
-   * has pointer members, making it private
-   * prevents the compiler to provide it's
-   * own, incorrect one if anyone chose to
-   * copy such an object.
-   */
+  * Copy operator. I can see no reason
+  * why someone might want to use it, so
+  * I don't provide it. Since this class
+  * has pointer members, making it private
+  * prevents the compiler to provide it's
+  * own, incorrect one if anyone chose to
+  * copy such an object.
+  */
   DoFHandler &operator = (const DoFHandler &);
 
   class MGVertexDoFs
@@ -904,8 +983,8 @@ private:
   void clear_mg_space ();
 
   /**
-   * Free all used memory.
-   */
+  * Free all used memory.
+  */
   void clear_space ();
 
   void reserve_space ();
@@ -917,37 +996,35 @@ private:
   void set_dof_index (const unsigned int obj_level, const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index, const unsigned int global_index) const;
 
   /**
-   * Space to store the DoF numbers
-   * for the different
-   * levels. Analogous to the
-   * <tt>levels[]</tt> tree of the
-   * Triangulation objects.
-   */
+  * Space to store the DoF numbers
+  * for the different
+  * levels. Analogous to the
+  * <tt>levels[]</tt> tree of the
+  * Triangulation objects.
+  */
   std::vector<dealii::internal::DoFHandler::DoFLevel<dim>*> levels;
 
   std::vector<dealii::internal::DoFHandler::DoFLevel<dim>*> mg_levels;
 
   /**
-   * Space to store DoF numbers of
-   * faces. They are not stored in
-   * <tt>levels</tt> since faces
-   * are not organized
-   * hierarchically, but in a flat
-   * array.
-   */
+  * Space to store DoF numbers of
+  * faces. They are not stored in
+  * <tt>levels</tt> since faces
+  * are not organized
+  * hierarchically, but in a flat
+  * array.
+  */
   dealii::internal::DoFHandler::DoFFaces<dim> *faces;
 
   dealii::internal::DoFHandler::DoFFaces<dim> *mg_faces;
 
   std::vector<MGVertexDoFs> mg_vertex_dofs;
 
-  std::vector<unsigned int> mg_used_dofs;
-
   /**
-   * Make accessor objects friends.
-   */
-  template <int, class> friend class DoFAccessor;
-  template <class> friend class DoFCellAccessor;
+  * Make accessor objects friends.
+  */
+  template <int, class, bool> friend class DoFAccessor;
+  template <class, bool> friend class DoFCellAccessor;
   friend struct dealii::internal::DoFAccessor::Implementation;
   friend struct dealii::internal::DoFCellAccessor::Implementation;
 
@@ -966,10 +1043,30 @@ 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> &) const;
 
+template <> void DoFHandler<1>::renumber_dofs(unsigned int,const std::vector<unsigned int>  &new_numbers);
+template <> void DoFHandler<2>::renumber_dofs(unsigned int,const std::vector<unsigned int>  &new_numbers);
+template <> void DoFHandler<3>::renumber_dofs(unsigned int,const std::vector<unsigned int>  &new_numbers);
+
 
 /* ----------------------- Inline functions ---------------------------------- */
 
 
+template <int dim, int spacedim>
+inline
+bool
+DoFHandler<dim,spacedim>::has_level_dofs() const
+{
+  return mg_number_cache.size()>0;
+}
+
+template <int dim, int spacedim>
+inline
+bool
+DoFHandler<dim,spacedim>::has_active_dofs() const
+{
+  return number_cache.n_global_dofs>0;
+}
+
 template <int dim, int spacedim>
 inline
 unsigned int
@@ -982,10 +1079,12 @@ template<int dim, int spacedim>
 inline
 unsigned int DoFHandler<dim, spacedim>::n_dofs (const unsigned int level) const
 {
-  Assert (level < mg_used_dofs.size (), ExcInvalidLevel (level));
-  return mg_used_dofs[level];
+  Assert(has_level_dofs(), ExcMessage("n_dofs(level) can only be called after distribute_mg_dofs()"));
+  Assert (level < mg_number_cache.size (), ExcInvalidLevel (level));
+  return mg_number_cache[level].n_global_dofs;
 }
 
+
 template <int dim, int spacedim>
 unsigned int
 DoFHandler<dim, spacedim>::n_locally_owned_dofs() const
@@ -1001,6 +1100,13 @@ DoFHandler<dim, spacedim>::locally_owned_dofs() const
   return number_cache.locally_owned_dofs;
 }
 
+template <int dim, int spacedim>
+const IndexSet &
+DoFHandler<dim, spacedim>::locally_owned_mg_dofs(const unsigned int level) const
+{
+  Assert(level < this->get_tria().n_global_levels(), ExcMessage("invalid level in locally_owned_mg_dofs"));
+  return mg_number_cache[level].locally_owned_dofs;
+}
 
 template <int dim, int spacedim>
 const std::vector<unsigned int> &
@@ -1017,6 +1123,13 @@ DoFHandler<dim, spacedim>::locally_owned_dofs_per_processor () const
   return number_cache.locally_owned_dofs_per_processor;
 }
 
+template <int dim, int spacedim>
+const std::vector<IndexSet> &
+DoFHandler<dim, spacedim>::locally_owned_mg_dofs_per_processor (const unsigned int level) const
+{
+  Assert(level < this->get_tria().n_global_levels(), ExcMessage("invalid level in locally_owned_mg_dofs_per_processor"));
+  return mg_number_cache[level].locally_owned_dofs_per_processor;
+}
 
 
 template <int dim, int spacedim>
@@ -1113,7 +1226,9 @@ void DoFHandler<dim,spacedim>::load (Archive &ar,
 
 template<int dim, int spacedim>
 inline
-unsigned int DoFHandler<dim, spacedim>::MGVertexDoFs::get_index (const unsigned int level, const unsigned int dof_number) const
+unsigned int DoFHandler<dim, spacedim>::MGVertexDoFs::get_index (
+  const unsigned int level,
+  const unsigned int dof_number) const
 {
   Assert ((level >= coarsest_level) && (level <= finest_level), ExcInvalidLevel (level));
   return indices[indices_offset[level - coarsest_level] + dof_number];
@@ -1122,7 +1237,10 @@ unsigned int DoFHandler<dim, spacedim>::MGVertexDoFs::get_index (const unsigned
 
 template<int dim, int spacedim>
 inline
-void DoFHandler<dim, spacedim>::MGVertexDoFs::set_index (const unsigned int level, const unsigned int dof_number, const unsigned int index)
+void DoFHandler<dim, spacedim>::MGVertexDoFs::set_index (
+  const unsigned int level,
+  const unsigned int dof_number,
+  const unsigned int index)
 {
   Assert ((level >= coarsest_level) && (level <= finest_level), ExcInvalidLevel (level));
   indices[indices_offset[level - coarsest_level] + dof_number] = index;
@@ -1132,6 +1250,4 @@ void DoFHandler<dim, spacedim>::MGVertexDoFs::set_index (const unsigned int leve
 
 DEAL_II_NAMESPACE_CLOSE
 
-/*----------------------------   dof_handler.h     ---------------------------*/
 #endif
-/*----------------------------   dof_handler.h     ---------------------------*/
index 4dfb1c85d504d0b69ae08f909ab1f67aafabd0a4..bd3627de3a47bde33b7fc662df622c4bcc14f9b8 100644 (file)
@@ -67,6 +67,14 @@ namespace internal
         NumberCache
         distribute_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler) const = 0;
 
+        /**
+         * Distribute the mg dofs
+         */
+        virtual
+        void
+        distribute_mg_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler,
+                            std::vector<NumberCache> &number_caches) const = 0;
+
         /**
          * Renumber degrees of freedom as
          * specified by the first argument.
@@ -96,6 +104,14 @@ namespace internal
         NumberCache
         distribute_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler) const;
 
+        /**
+         * TODO
+         */
+        virtual
+        void
+        distribute_mg_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler,
+                            std::vector<NumberCache> &number_caches) const;
+
         /**
          * Renumber degrees of freedom as
          * specified by the first argument.
@@ -126,6 +142,14 @@ namespace internal
         NumberCache
         distribute_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler) const;
 
+        /**
+         * TODO
+         */
+        virtual
+        void
+        distribute_mg_dofs (dealii::DoFHandler<dim,spacedim> &dof_handler,
+                            std::vector<NumberCache> &number_caches) const;
+
         /**
          * Renumber degrees of freedom as
          * specified by the first argument.
index 25382b7824056a809e396f5b1e014c6442df92b8..554ead6c85c132d783e6f0e7b2a0c4ff3719a5fb 100644 (file)
@@ -19,8 +19,8 @@ DEAL_II_NAMESPACE_OPEN
 
 template <int, int, int> class InvalidAccessor;
 
-template <int structdim, class DH> class DoFAccessor;
-template <class DH> class DoFCellAccessor;
+template <int structdim, class DH, bool lda> class DoFAccessor;
+template <class DH, bool lda> class DoFCellAccessor;
 
 template <int dim, int spacedim> class FiniteElement;
 template <typename Accessor> class TriaRawIterator;
@@ -34,7 +34,7 @@ namespace internal
 {
   namespace DoFHandler
   {
-    template <class DH>
+    template <class DH, bool lda=false>
     struct Iterators;
 
 
@@ -48,12 +48,12 @@ namespace internal
      *
      * @author Wolfgang Bangerth, Oliver Kayser-Herold, Guido Kanschat, 1998, 2003, 2008, 2010
      */
-    template <template <int, int> class DH, int spacedim>
-    struct Iterators<DH<1, spacedim> >
+    template <template <int, int> class DH, int spacedim, bool lda>
+    struct Iterators<DH<1, spacedim>, lda>
     {
       typedef DH<1,spacedim> DoFHandler_type;
-      typedef dealii::DoFCellAccessor<DoFHandler_type> CellAccessor;
-      typedef dealii::DoFAccessor<0,DoFHandler_type> FaceAccessor;
+      typedef dealii::DoFCellAccessor<DoFHandler_type, lda> CellAccessor;
+      typedef dealii::DoFAccessor<0,DoFHandler_type, lda> FaceAccessor;
 
       typedef TriaRawIterator   <CellAccessor> raw_line_iterator;
       typedef TriaIterator      <CellAccessor> line_iterator;
@@ -89,12 +89,12 @@ namespace internal
      *
      * @author Wolfgang Bangerth, Oliver Kayser-Herold, Guido Kanschat, 1998, 2003, 2008, 2010
      */
-    template <template <int, int> class DH, int spacedim>
-    struct Iterators<DH<2, spacedim> >
+    template <template <int, int> class DH, int spacedim, bool lda>
+    struct Iterators<DH<2, spacedim>, lda>
     {
       typedef DH<2,spacedim> DoFHandler_type;
-      typedef dealii::DoFCellAccessor<DoFHandler_type> CellAccessor;
-      typedef dealii::DoFAccessor<1, DoFHandler_type> FaceAccessor;
+      typedef dealii::DoFCellAccessor<DoFHandler_type, lda> CellAccessor;
+      typedef dealii::DoFAccessor<1, DoFHandler_type, lda> FaceAccessor;
 
       typedef TriaRawIterator   <FaceAccessor> raw_line_iterator;
       typedef TriaIterator      <FaceAccessor> line_iterator;
@@ -130,16 +130,16 @@ namespace internal
      *
      * @author Wolfgang Bangerth, Oliver Kayser-Herold, Guido Kanschat, 1998, 2003, 2008, 2010
      */
-    template <template <int, int> class DH, int spacedim>
-    struct Iterators<DH<3, spacedim> >
+    template <template <int, int> class DH, int spacedim, bool lda>
+    struct Iterators<DH<3, spacedim>, lda>
     {
       typedef DH<3, spacedim> DoFHandler_type;
-      typedef dealii::DoFCellAccessor<DoFHandler_type> CellAccessor;
-      typedef dealii::DoFAccessor<2, DoFHandler_type> FaceAccessor;
+      typedef dealii::DoFCellAccessor<DoFHandler_type, lda> CellAccessor;
+      typedef dealii::DoFAccessor<2, DoFHandler_type, lda> FaceAccessor;
 
-      typedef TriaRawIterator   <dealii::DoFAccessor<1, DoFHandler_type> > raw_line_iterator;
-      typedef TriaIterator      <dealii::DoFAccessor<1, DoFHandler_type> > line_iterator;
-      typedef TriaActiveIterator<dealii::DoFAccessor<1, DoFHandler_type> > active_line_iterator;
+      typedef TriaRawIterator   <dealii::DoFAccessor<1, DoFHandler_type, lda> > raw_line_iterator;
+      typedef TriaIterator      <dealii::DoFAccessor<1, DoFHandler_type, lda> > line_iterator;
+      typedef TriaActiveIterator<dealii::DoFAccessor<1, DoFHandler_type, lda> > active_line_iterator;
 
       typedef TriaRawIterator   <FaceAccessor> raw_quad_iterator;
       typedef TriaIterator      <FaceAccessor> quad_iterator;
index d5f789cf8950dd730eae2820977258f6abdb4a81..b0431b59e296f57a203e81ca14de2d04eab6a077 100644 (file)
@@ -683,9 +683,9 @@ namespace DoFRenumbering
    * of this class for details on
    * the different methods.
    */
-  template <int dim>
+  template <class DH>
   void
-  Cuthill_McKee (MGDoFHandler<dim>          &dof_handler,
+  Cuthill_McKee (DH &dof_handler,
                  const unsigned int          level,
                  const bool                  reversed_numbering = false,
                  const std::vector<unsigned int> &starting_indices   = std::vector<unsigned int> ());
@@ -750,6 +750,13 @@ namespace DoFRenumbering
    * non-primitive base element,
    * this function is the identity
    * operation.
+  *
+  * @note A similar function, which
+  * renumbered all levels existed
+  * for MGDoFHandler. This function
+  * was deleted. Thus, you have to
+  * call the level function for each
+  * level now.
    */
   template <int dim, int spacedim>
   void
@@ -778,10 +785,10 @@ namespace DoFRenumbering
    * non-multigrid part of the
    * MGDoFHandler is not touched.
    */
-  template <int dim>
+  template <class DH>
   void
-  component_wise (MGDoFHandler<dim>               &dof_handler,
-                  const unsigned int               level,
+  component_wise (DH &dof_handler,
+                  const unsigned int level,
                   const std::vector<unsigned int> &target_component = std::vector<unsigned int>());
 
 
@@ -952,33 +959,7 @@ namespace DoFRenumbering
   template <class DH>
   void
   cell_wise (DH &dof_handler,
-             const std::vector<typename DH::cell_iterator> &cell_order);
-
-  /**
-   * @deprecated Use cell_wise() instead.
-   *
-   * Cell-wise numbering only for DG.
-   */
-  template <class DH>
-  void
-  cell_wise_dg (DH &dof_handler,
-                const std::vector<typename DH::cell_iterator> &cell_order);
-
-  /**
-   * Computes the renumbering
-   * vector needed by the
-   * cell_wise_dg() function. Does
-   * not perform the renumbering on
-   * the DoFHandler dofs but
-   * returns the renumbering
-   * vector.
-   */
-  template <class DH>
-  void
-  compute_cell_wise_dg (std::vector<unsigned int> &renumbering,
-                        std::vector<unsigned int> &inverse_renumbering,
-                        const DH &dof_handler,
-                        const std::vector<typename DH::cell_iterator> &cell_order);
+             const std::vector<typename DH::active_cell_iterator> &cell_order);
 
   /**
    * Computes the renumbering
@@ -994,67 +975,35 @@ namespace DoFRenumbering
   compute_cell_wise (std::vector<unsigned int> &renumbering,
                      std::vector<unsigned int> &inverse_renumbering,
                      const DH &dof_handler,
-                     const std::vector<typename DH::cell_iterator> &cell_order);
+                     const std::vector<typename DH::active_cell_iterator> &cell_order);
 
   /**
    * Cell-wise renumbering on one
    * level. See the other function
    * with the same name.
    */
-  template <int dim>
-  void
-  cell_wise (MGDoFHandler<dim>   &dof_handler,
-             const unsigned int   level,
-             const std::vector<typename MGDoFHandler<dim>::cell_iterator> &cell_order);
-
-  /**
-   * @deprecated Use cell_wise() instead.
-   *
-   * Cell-wise renumbering on one
-   * level for DG elements. See the
-   * other function with the same
-   * name.
-   */
-  template <int dim>
-  void
-  cell_wise_dg (MGDoFHandler<dim>   &dof_handler,
-                const unsigned int   level,
-                const std::vector<typename MGDoFHandler<dim>::cell_iterator> &cell_order);
-
-  /**
-   * Computes the renumbering
-   * vector needed by the
-   * cell_wise_dg() level renumbering function. Does
-   * not perform the renumbering on
-   * the MGDoFHandler dofs but
-   * returns the renumbering
-   * vector.
-   */
-  template <int dim>
+  template <class DH>
   void
-  compute_cell_wise_dg (std::vector<unsigned int> &renumbering,
-                        std::vector<unsigned int> &inverse_renumbering,
-                        const MGDoFHandler<dim>   &dof_handler,
-                        const unsigned int         level,
-                        const std::vector<typename MGDoFHandler<dim>::cell_iterator> &cell_order);
-
+  cell_wise (DH &dof_handler,
+             const unsigned int level,
+             const std::vector<typename DH::level_cell_iterator> &cell_order);
 
   /**
    * Computes the renumbering
    * vector needed by the
    * cell_wise() level renumbering function. Does
    * not perform the renumbering on
-   * the MGDoFHandler dofs but
+   * the DoFHandler dofs but
    * returns the renumbering
    * vector.
    */
-  template <int dim>
+  template <class DH>
   void
   compute_cell_wise (std::vector<unsigned int> &renumbering,
                      std::vector<unsigned int> &inverse_renumbering,
-                     const MGDoFHandler<dim>   &dof_handler,
+                     const DH   &dof_handler,
                      const unsigned int         level,
-                     const std::vector<typename MGDoFHandler<dim>::cell_iterator> &cell_order);
+                     const std::vector<typename DH::level_cell_iterator> &cell_order);
 
   /**
    * @}
@@ -1108,19 +1057,12 @@ namespace DoFRenumbering
    * direction, or several dofs within a
    * FESystem) will be unaffected.
    */
-  template <class DH, int dim>
+  template <class DH>
   void
   downstream (DH               &dof_handler,
-              const Point<dim> &direction,
+              const Point<DH::space_dimension> &direction,
               const bool        dof_wise_renumbering = false);
 
-  /**
-   * @deprecated Use downstream() instead.
-   */
-  template <class DH, int dim>
-  void
-  downstream_dg (DH               &dof_handler,
-                 const Point<dim> &direction);
 
   /**
    * Cell-wise downstream numbering
@@ -1129,103 +1071,72 @@ namespace DoFRenumbering
    * level. See the other function
    * with the same name.
    */
-  template <int dim>
+  template <class DH>
   void
-  downstream (MGDoFHandler<dim> &dof_handler,
+  downstream (DH &dof_handler,
               const unsigned int level,
-              const Point<dim>  &direction,
+              const Point<DH::space_dimension>  &direction,
               const bool         dof_wise_renumbering = false);
 
-  /**
-   * @deprecated Use downstream()
-   * instead.
-   */
-  template <int dim>
+  // The following three are only temporary for compatibility reasons and will be removed in 8.0
+  template <int dim, int spacedim>
   void
-  downstream_dg (MGDoFHandler<dim> &dof_handler,
-                 const unsigned int level,
-                 const Point<dim>  &direction);
+  downstream (MGDoFHandler<dim,spacedim>               &dof_handler,
+              const Point<spacedim> &direction,
+              const bool        dof_wise_renumbering = false);
 
-  /**
-   * @deprecated The new function
-   * of this name computes the
-   * renumbering and its inverse at
-   * the same time. So, at least if
-   * you need both, you should use
-   * the other one.
-   *
-   * Computes the renumbering
-   * vector needed by the
-   * downstream_dg() function. Does
-   * not perform the renumbering on
-   * the DoFHandler dofs but
-   * returns the renumbering
-   * vector.
-   */
-  template <class DH, int dim>
+  template <class DH>
+  void
+  downstream_dg (DH &dof,
+                 const Point<DH::space_dimension> &direction)
+  {
+    downstream(dof, direction);
+  }
+
+  template <class DH>
   void
-  compute_downstream_dg (std::vector<unsigned int> &new_dof_indices,
-                         const DH                  &dof_handler,
-                         const Point<dim>          &direction);
+  downstream_dg (DH &dof,
+                 unsigned int level,
+                 const Point<DH::space_dimension> &direction)
+  {
+    downstream(dof, level, direction);
+  }
 
   /**
    * Computes the renumbering
    * vector needed by the
-   * downstream_dg() function. Does
+   * downstream() function. Does
    * not perform the renumbering on
    * the DoFHandler dofs but
    * returns the renumbering
    * vector.
    */
-  template <class DH, int dim>
+  template <class DH>
   void
   compute_downstream (std::vector<unsigned int> &new_dof_indices,
                       std::vector<unsigned int> &reverse,
                       const DH                  &dof_handler,
-                      const Point<dim>          &direction,
+                      const Point<DH::space_dimension>          &direction,
                       const bool                 dof_wise_renumbering);
 
-  /**
-   * @deprecated Use
-   * compute_downstream() instead
-   */
-  template <class DH, int dim>
-  void
-  compute_downstream_dg (std::vector<unsigned int> &new_dof_indices,
-                         std::vector<unsigned int> &reverse,
-                         const DH                  &dof_handler,
-                         const Point<dim>          &direction);
-
   /**
    * Computes the renumbering
    * vector needed by the
-   * downstream_dg() function. Does
+   * downstream() function. Does
    * not perform the renumbering on
-   * the MGDoFHandler dofs but
+   * the DoFHandler dofs but
    * returns the renumbering
    * vector.
    */
-  template <int dim>
+  template <class DH>
   void
   compute_downstream (std::vector<unsigned int> &new_dof_indices,
                       std::vector<unsigned int> &reverse,
-                      const MGDoFHandler<dim>   &dof_handler,
+                      const DH &dof_handler,
                       const unsigned int         level,
-                      const Point<dim>          &direction,
+                      const Point<DH::space_dimension>          &direction,
                       const bool                 dof_wise_renumbering);
 
-  /**
-   * @deprecated Use
-   * compute_downstream() instead
-   */
-  template <int dim>
-  void
-  compute_downstream_dg (std::vector<unsigned int> &new_dof_indices,
-                         std::vector<unsigned int> &reverse,
-                         const MGDoFHandler<dim>   &dof_handler,
-                         const unsigned int         level,
-                         const Point<dim>          &direction);
-
   /**
    * Cell-wise clockwise numbering.
    *
@@ -1233,17 +1144,17 @@ namespace DoFRenumbering
    * (counter)clockwise ordering of
    * the mesh cells with respect to
    * the hub @p center and calls
-   * cell_wise_dg().  Therefore, it
+   * cell_wise().  Therefore, it
    * only works with Discontinuous
    * Galerkin Finite Elements,
    * i.e. all degrees of freedom
    * have to be associated with the
    * interior of the cell.
    */
-  template <class DH, int dim>
+  template <class DH>
   void
   clockwise_dg (DH               &dof_handler,
-                const Point<dim> &center,
+                const Point<DH::space_dimension> &center,
                 const bool        counter = false);
 
   /**
@@ -1251,11 +1162,11 @@ namespace DoFRenumbering
    * on one level. See the other
    * function with the same name.
    */
-  template <int dim>
+  template <class DH>
   void
-  clockwise_dg (MGDoFHandler<dim>  &dof_handler,
+  clockwise_dg (DH &dof_handler,
                 const unsigned int level,
-                const Point<dim> &center,
+                const Point<DH::space_dimension> &center,
                 const bool counter = false);
 
   /**
@@ -1267,11 +1178,11 @@ namespace DoFRenumbering
    * returns the renumbering
    * vector.
    */
-  template <class DH, int dim>
+  template <class DH>
   void
   compute_clockwise_dg (std::vector<unsigned int> &new_dof_indices,
                         const DH                  &dof_handler,
-                        const Point<dim>          &center,
+                        const Point<DH::space_dimension>          &center,
                         const bool                 counter);
 
   /**
index a80a9aaadbde40b55c988f79b261d45250e6fffb..489358a97668ed9687c33db8f6d330bce60cc027 100644 (file)
@@ -1473,7 +1473,7 @@ namespace DoFTools
    *          will contain the indices of degrees of freedom that are
    *          located on the boundary (and correspond to the selected
    *          vector components and boundary indicators, depending on
-   *          the values of the @p component_select and @p boundary_indicators
+   *          the values of the @p component_mask and @p boundary_indicators
    *          arguments).
    * @param boundary_indicators If empty, this function extracts the
    *          indices of the degrees of freedom for all parts of the boundary.
@@ -2620,9 +2620,19 @@ namespace DoFTools
    * or the like. Otherwise, an
    * exception is thrown.
    *
-   * The given array must have a
+   * @pre The given array must have a
    * length of as many elements as
    * there are degrees of freedom.
+   *
+   * @note The precondition to this function
+   * that the output argument needs to have
+   * size equal to the total number of degrees
+   * of freedom makes this function
+   * unsuitable for the case that the given
+   * DoFHandler object derives from a
+   * parallel::distributed::Triangulation object.
+   * Consequently, this function will produce an
+   * error if called with such a DoFHandler.
    */
   template <int dim, int spacedim>
   void
@@ -2631,7 +2641,7 @@ namespace DoFTools
                               std::vector<Point<spacedim> >     &support_points);
 
   /**
-   * Same as above for the hp case.
+   * Same as the previous function but for the hp case.
    */
 
   template <int dim, int spacedim>
@@ -2640,6 +2650,49 @@ namespace DoFTools
                               const hp::DoFHandler<dim,spacedim>    &dof_handler,
                               std::vector<Point<spacedim> > &support_points);
 
+  /**
+   * This function is a version of the above map_dofs_to_support_points
+   * function that doesn't simply return a vector of support points (see
+   * this @ref GlossSupport "glossary entry") with one
+   * entry for each global degree of freedom, but instead a map that
+   * maps from the DoFs index to its location. The point of this
+   * function is that it is also usable in cases where the DoFHandler
+   * is based on a parallel::distributed::Triangulation object. In such cases,
+   * each processor will not be able to determine the support point location
+   * of all DoFs, and worse no processor may be able to hold a vector that
+   * would contain the locations of all DoFs even if they were known. As
+   * a consequence, this function constructs a map from those DoFs for which
+   * we can know the locations (namely, those DoFs that are
+   * locally relevant (see @ref GlossLocallyRelevantDof "locally relevant DoFs")
+   * to their locations.
+   *
+   * For non-distributed triangulations, the map returned as @p support_points
+   * is of course dense, i.e., every DoF is to be found in it.
+   *
+   * @param mapping The mapping from the reference cell to the real cell on
+   *        which DoFs are defined.
+   * @param dof_handler The object that describes which DoF indices live on
+   *        which cell of the triangulation.
+   * @param support_points A map that for every locally relevant DoF index
+   *        contains the corresponding location in real space coordinates.
+   *        Previous content of this object is deleted in this function.
+   */
+  template <int dim, int spacedim>
+  void
+  map_dofs_to_support_points (const Mapping<dim,spacedim>       &mapping,
+                              const DoFHandler<dim,spacedim>    &dof_handler,
+                              std::map<unsigned int, Point<spacedim> >     &support_points);
+
+  /**
+   * Same as the previous function but for the hp case.
+   */
+  template <int dim, int spacedim>
+  void
+  map_dofs_to_support_points (const dealii::hp::MappingCollection<dim,spacedim>   &mapping,
+                              const hp::DoFHandler<dim,spacedim>    &dof_handler,
+                              std::map<unsigned int, Point<spacedim> > &support_points);
+
+
   /**
    * This is the opposite function
    * to the one above. It generates
index 62d3d2429528fe98da544ee2c7dfa7d802988bb7..708250c034f2b6ce60bb5f8e5108e67f2492c0fd 100644 (file)
@@ -3194,37 +3194,8 @@ public:
    * used by this FEValues
    * object.
    */
-  void reinit (const typename DoFHandler<dim,spacedim>::cell_iterator &cell);
-
-  /**
-   * Reinitialize the gradients,
-   * Jacobi determinants, etc for
-   * the given cell of type
-   * "iterator into a hp::DoFHandler
-   * object", and the finite
-   * element associated with this
-   * object. It is assumed that the
-   * finite element used by the
-   * given cell is also the one
-   * used by this @p FEValues
-   * object.
-   */
-  void reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell);
-
-  /**
-   * Reinitialize the gradients,
-   * Jacobi determinants, etc for
-   * the given cell of type
-   * "iterator into a MGDoFHandler
-   * object", and the finite
-   * element associated with this
-   * object. It is assumed that the
-   * finite element used by the
-   * given cell is also the one
-   * used by this FEValues
-   * object.
-   */
-  void reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell);
+  template <class DH, bool level_dof_access>
+  void reinit (const TriaIterator<DoFCellAccessor<DH,level_dof_access> > cell);
 
   /**
    * Reinitialize the gradients,
@@ -3485,40 +3456,9 @@ public:
    * number @p face_no of @p cell
    * and the given finite element.
    */
-  void reinit (const typename DoFHandler<dim,spacedim>::cell_iterator &cell,
-               const unsigned int                                      face_no);
-
-  /**
-   * Reinitialize the gradients,
-   * Jacobi determinants, etc for
-   * the given cell of type
-   * "iterator into a hp::DoFHandler
-   * object", and the finite
-   * element associated with this
-   * object. It is assumed that the
-   * finite element used by the
-   * given cell is also the one
-   * used by this FEValues
-   * object.
-   */
-  void reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-               const unsigned int                                          face_no);
-
-  /**
-   * Reinitialize the gradients,
-   * Jacobi determinants, etc for
-   * the given cell of type
-   * "iterator into a MGDoFHandler
-   * object", and the finite
-   * element associated with this
-   * object. It is assumed that the
-   * finite element used by the
-   * given cell is also the one
-   * used by this FEValues
-   * object.
-   */
-  void reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
-               const unsigned int                                        face_no);
+  template <class DH, bool level_dof_access>
+  void reinit (const TriaIterator<DoFCellAccessor<DH,level_dof_access> > cell,
+               const unsigned int face_no);
 
   /**
    * Reinitialize the gradients,
@@ -3672,41 +3612,8 @@ public:
    * used by this
    * FESubfaceValues object.
    */
-  void reinit (const typename DoFHandler<dim,spacedim>::cell_iterator &cell,
-               const unsigned int                    face_no,
-               const unsigned int                    subface_no);
-
-  /**
-   * Reinitialize the gradients,
-   * Jacobi determinants, etc for
-   * the given cell of type
-   * "iterator into a hp::DoFHandler
-   * object", and the finite
-   * element associated with this
-   * object. It is assumed that the
-   * finite element used by the
-   * given cell is also the one
-   * used by this FEValues
-   * object.
-   */
-  void reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-               const unsigned int                    face_no,
-               const unsigned int                    subface_no);
-
-  /**
-   * Reinitialize the gradients,
-   * Jacobi determinants, etc for
-   * the given cell of type
-   * "iterator into a MGDoFHandler
-   * object", and the finite
-   * element associated with this
-   * object. It is assumed that the
-   * finite element used by the
-   * given cell is also the one
-   * used by this FEValues
-   * object.
-   */
-  void reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
+  template <class DH, bool level_dof_access>
+  void reinit (const TriaIterator<DoFCellAccessor<DH,level_dof_access> > cell,
                const unsigned int                    face_no,
                const unsigned int                    subface_no);
 
@@ -4184,11 +4091,11 @@ namespace FEValuesViews
   namespace
   {
     /**
-     * Return the symmetrized version of a
-     * tensor whose n'th row equals the
-     * second argument, with all other rows
-     * equal to zero.
-     */
+    * Return the symmetrized version of a
+    * tensor whose n'th row equals the
+    * second argument, with all other rows
+    * equal to zero.
+    */
     inline
     dealii::SymmetricTensor<2,1>
     symmetrize_single_row (const unsigned int n,
index e47add785f49c7629773d9ebbba7b9f60ca934c9..703116ba20deb3186eb4d371b19b439502f29fcb 100644 (file)
@@ -2837,6 +2837,14 @@ public:
    */
   unsigned int n_levels () const;
 
+  /**
+   * Return the number of levels in use. This function is equivalent to
+   * n_levels() for a serial Triangulation, but gives the maximum of
+   * n_levels() over all processors for a parallel::distributed::Triangulation
+   * and therefore can be larger than n_levels().
+   */
+  virtual unsigned int n_global_levels () const;
+
   /**
    * Return the total number of
    * vertices.  Some of them may
@@ -3678,6 +3686,12 @@ unsigned int Triangulation<dim, spacedim>::n_levels () const
   return number_cache.n_levels;
 }
 
+template <int dim, int spacedim>
+inline
+unsigned int Triangulation<dim, spacedim>::n_global_levels () const
+{
+  return number_cache.n_levels;
+}
 
 
 template <int dim, int spacedim>
index 14492a89b0fefdfd59c45c1343a3e15300f7b061..9f4ed86563f68224ee9360d07ea2dd93d9392aaa 100644 (file)
 
 
 
-#include <base/config.h>
-#include <base/exceptions.h>
-#include <base/template_constraints.h>
-#include <base/smartpointer.h>
-#include <dofs/function_map.h>
-#include <dofs/dof_iterator_selector.h>
-#include <dofs/number_cache.h>
-#include <hp/fe_collection.h>
+#include <deal.II/base/config.h>
+#include <deal.II/base/exceptions.h>
+#include <deal.II/base/template_constraints.h>
+#include <deal.II/base/smartpointer.h>
+#include <deal.II/dofs/function_map.h>
+#include <deal.II/dofs/dof_iterator_selector.h>
+#include <deal.II/dofs/number_cache.h>
+#include <deal.II/hp/fe_collection.h>
 
 #include <vector>
 #include <map>
@@ -73,28 +73,35 @@ namespace hp
    * @ingroup hp
    */
   template <int dim, int spacedim=dim>
-  class DoFHandler : public Subscriptor,
-    protected Triangulation<dim,spacedim>::RefinementListener
+  class DoFHandler : public Subscriptor
   {
-    typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim> > IteratorSelector;
+    typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim>, false> ActiveSelector;
+    typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim>, true> LevelSelector;
   public:
-    typedef typename IteratorSelector::CellAccessor         cell_accessor;
-    typedef typename IteratorSelector::FaceAccessor         face_accessor;
+    typedef typename ActiveSelector::CellAccessor         cell_accessor;
+    typedef typename ActiveSelector::FaceAccessor         face_accessor;
 
-    typedef typename IteratorSelector::line_iterator line_iterator;
-    typedef typename IteratorSelector::active_line_iterator active_line_iterator;
+    typedef typename ActiveSelector::line_iterator        line_iterator;
+    typedef typename ActiveSelector::active_line_iterator active_line_iterator;
 
-    typedef typename IteratorSelector::quad_iterator quad_iterator;
-    typedef typename IteratorSelector::active_quad_iterator active_quad_iterator;
+    typedef typename ActiveSelector::quad_iterator        quad_iterator;
+    typedef typename ActiveSelector::active_quad_iterator active_quad_iterator;
 
-    typedef typename IteratorSelector::hex_iterator hex_iterator;
-    typedef typename IteratorSelector::active_hex_iterator active_hex_iterator;
+    typedef typename ActiveSelector::hex_iterator         hex_iterator;
+    typedef typename ActiveSelector::active_hex_iterator  active_hex_iterator;
 
-    typedef typename IteratorSelector::cell_iterator cell_iterator;
-    typedef typename IteratorSelector::active_cell_iterator active_cell_iterator;
+    typedef typename ActiveSelector::active_cell_iterator active_cell_iterator;
 
-    typedef typename IteratorSelector::face_iterator face_iterator;
-    typedef typename IteratorSelector::active_face_iterator active_face_iterator;
+    typedef typename ActiveSelector::face_iterator        face_iterator;
+    typedef typename ActiveSelector::active_face_iterator active_face_iterator;
+
+    typedef typename LevelSelector::CellAccessor          level_cell_accessor;
+    typedef typename LevelSelector::FaceAccessor          level_face_accessor;
+
+    typedef typename LevelSelector::cell_iterator         level_cell_iterator;
+    typedef typename LevelSelector::face_iterator         level_face_iterator;
+
+    typedef level_cell_iterator                           cell_iterator;
 
     /**
      * Alias the @p FunctionMap type
@@ -286,8 +293,8 @@ namespace hp
     unsigned int max_couplings_between_boundary_dofs () const;
 
     /**
-    *  @name Cell iterator functions
-    */
+     *  @name Cell iterator functions
+     */
     /*@{*/
     /**
     * Iterator to the first used
@@ -328,7 +335,7 @@ namespace hp
     */
     active_cell_iterator end_active (const unsigned int level) const;
 
-    //@}
+    /*@}*/
 
     /*---------------------------------------*/
 
@@ -366,6 +373,17 @@ namespace hp
      */
     unsigned int n_dofs () const;
 
+    /**
+    * The number of multilevel
+    * dofs on given level. Since
+    * hp::DoFHandler does not
+    * support multilevel methods
+    * yet, this function returns
+    * numbers::invalid_unsigned
+    * int independent of its argument.
+    */
+    unsigned int n_dofs(const unsigned int level) const;
+
     /**
      * Return the number of degrees of freedom
      * located on the boundary.
@@ -681,8 +699,8 @@ namespace hp
      *  active_fe_fields during the
      *  spatial refinement.
      */
-    virtual void pre_refinement_action ();
-    virtual void post_refinement_action ();
+    void pre_refinement_action ();
+    void post_refinement_action ();
 
     /**
      * Compute identities between
@@ -852,8 +870,8 @@ namespace hp
     /**
      * Make accessor objects friends.
      */
-    template <int, class> friend class dealii::DoFAccessor;
-    template <class> friend class dealii::DoFCellAccessor;
+    template <int, class, bool> friend class dealii::DoFAccessor;
+    template <class, bool> friend class dealii::DoFCellAccessor;
     friend struct dealii::internal::DoFAccessor::Implementation;
     friend struct dealii::internal::DoFCellAccessor::Implementation;
 
@@ -885,6 +903,15 @@ namespace hp
   }
 
 
+  template <int dim, int spacedim>
+  inline
+  unsigned int
+  DoFHandler<dim,spacedim>::n_dofs (const unsigned int) const
+  {
+    return numbers::invalid_unsigned_int;
+  }
+
+
   template <int dim, int spacedim>
   unsigned int
   DoFHandler<dim, spacedim>::n_locally_owned_dofs() const
index 7ad98f4cad265fe5797dba44edce9e37554849f4..51377aba2d5a009a6c1f6379cb25a8c7c72c3113 100644 (file)
@@ -59,64 +59,64 @@ namespace internal
     {
     public:
       /**
-       * Constructor. Set the fields
-       * of this class to the values
-       * indicated by the parameters
-       * to the constructor.
-       */
+      * Constructor. Set the fields
+      * of this class to the values
+      * indicated by the parameters
+      * to the constructor.
+      */
       FEValuesBase (const dealii::hp::MappingCollection<dim,FEValues::space_dimension> &mapping_collection,
                     const dealii::hp::FECollection<dim,FEValues::space_dimension>      &fe_collection,
                     const dealii::hp::QCollection<q_dim>     &q_collection,
                     const UpdateFlags             update_flags);
       /**
-       * Constructor. Set the fields
-       * of this class to the values
-       * indicated by the parameters
-       * to the constructor, and
-       * choose a @p MappingQ1
-       * object for the mapping
-       * object.
-       */
+      * Constructor. Set the fields
+      * of this class to the values
+      * indicated by the parameters
+      * to the constructor, and
+      * choose a @p MappingQ1
+      * object for the mapping
+      * object.
+      */
       FEValuesBase (const dealii::hp::FECollection<dim,FEValues::space_dimension> &fe_collection,
                     const dealii::hp::QCollection<q_dim> &q_collection,
                     const UpdateFlags         update_flags);
 
       /**
-       * Get a reference to the
-       * collection of finite
-       * element objects used here.
-       */
+      * Get a reference to the
+      * collection of finite
+      * element objects used here.
+      */
       const dealii::hp::FECollection<dim,FEValues::space_dimension> &
       get_fe_collection () const;
 
       /**
-       * Return a reference to the @p
-       * FEValues object selected by the
-       * last call to
-       * select_fe_values(). select_fe_values()
-       * in turn is called when you called
-       * the @p reinit function of the
-       * <tt>hp::FE*Values</tt> class the
-       * last time.
-       */
+      * Return a reference to the @p
+      * FEValues object selected by the
+      * last call to
+      * select_fe_values(). select_fe_values()
+      * in turn is called when you called
+      * the @p reinit function of the
+      * <tt>hp::FE*Values</tt> class the
+      * last time.
+      */
       const FEValues &get_present_fe_values () const;
 
     protected:
 
       /**
-       * Select a FEValues object
-       * suitable for the given FE,
-       * quadrature, and mapping
-       * indices. If such an object
-       * doesn't yet exist, create
-       * one.
-       *
-       * The function returns a
-       * writable reference so that
-       * derived classes can also
-       * reinit() the selected
-       * FEValues object.
-       */
+      * Select a FEValues object
+      * suitable for the given FE,
+      * quadrature, and mapping
+      * indices. If such an object
+      * doesn't yet exist, create
+      * one.
+      *
+      * The function returns a
+      * writable reference so that
+      * derived classes can also
+      * reinit() the selected
+      * FEValues object.
+      */
       FEValues &
       select_fe_values (const unsigned int fe_index,
                         const unsigned int mapping_index,
@@ -124,69 +124,69 @@ namespace internal
 
     protected:
       /**
-       * A pointer to the
-       * collection of finite
-       * elements to be used.
-       */
+      * A pointer to the
+      * collection of finite
+      * elements to be used.
+      */
       const SmartPointer<const dealii::hp::FECollection<dim,FEValues::space_dimension>,
             FEValuesBase<dim,q_dim,FEValues> > fe_collection;
 
       /**
-       * A pointer to the
-       * collection of mappings to
-       * be used.
-       */
+      * A pointer to the
+      * collection of mappings to
+      * be used.
+      */
       const SmartPointer<const dealii::hp::MappingCollection<dim, FEValues::space_dimension>,
             FEValuesBase<dim,q_dim,FEValues> > mapping_collection;
 
       /**
-       * Copy of the quadrature
-       * collection object
-       * provided to the
-       * constructor.
-       */
+      * Copy of the quadrature
+      * collection object
+      * provided to the
+      * constructor.
+      */
       const dealii::hp::QCollection<q_dim> q_collection;
 
     private:
       /**
-       * A table in which we store
-       * pointers to fe_values
-       * objects for different
-       * finite element, mapping,
-       * and quadrature objects
-       * from our collection. The
-       * first index indicates the
-       * index of the finite
-       * element within the
-       * fe_collection, the second
-       * the index of the mapping
-       * within the mapping
-       * collection, and the last
-       * one the index of the
-       * quadrature formula within
-       * the q_collection.
-       *
-       * Initially, all entries
-       * have zero pointers, and we
-       * will allocate them lazily
-       * as needed in
-       * select_fe_values().
-       */
+      * A table in which we store
+      * pointers to fe_values
+      * objects for different
+      * finite element, mapping,
+      * and quadrature objects
+      * from our collection. The
+      * first index indicates the
+      * index of the finite
+      * element within the
+      * fe_collection, the second
+      * the index of the mapping
+      * within the mapping
+      * collection, and the last
+      * one the index of the
+      * quadrature formula within
+      * the q_collection.
+      *
+      * Initially, all entries
+      * have zero pointers, and we
+      * will allocate them lazily
+      * as needed in
+      * select_fe_values().
+      */
       Table<3,std_cxx1x::shared_ptr<FEValues> > fe_values_table;
 
       /**
-       * Set of indices pointing at
-       * the fe_values object
-       * selected last time the
-       * select_fe_value() function
-       * was called.
-       */
+      * Set of indices pointing at
+      * the fe_values object
+      * selected last time the
+      * select_fe_value() function
+      * was called.
+      */
       TableIndices<3> present_fe_values_index;
 
       /**
-       * Values of the update flags as
-       * given to the constructor.
-       */
+      * Values of the update flags as
+      * given to the constructor.
+      */
       const UpdateFlags update_flags;
     };
 
@@ -405,78 +405,9 @@ namespace hp
      * unless a different value for
      * this argument is specified.
      */
+    template <class DH, bool lda>
     void
-    reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-            const unsigned int q_index = numbers::invalid_unsigned_int,
-            const unsigned int mapping_index = numbers::invalid_unsigned_int,
-            const unsigned int fe_index = numbers::invalid_unsigned_int);
-
-    /**
-     * Like the previous function,
-     * but for non-hp
-     * iterators. The reason this
-     * (and the other non-hp
-     * iterator) function exists is
-     * so that one can use
-     * hp::FEValues not only for
-     * hp::DoFhandler objects, but
-     * for all sorts of DoFHandler
-     * objects, and triangulations
-     * not associated with
-     * DoFHandlers in general.
-     *
-     * Since
-     * <code>cell-@>active_fe_index()</code>
-     * always returns zero for
-     * non-hp iterators, this
-     * function chooses the zero-th
-     * finite element, mapping, and
-     * quadrature object from the
-     * relevant constructions
-     * passed to the constructor of
-     * this object. The only
-     * exception is if you specify
-     * a value different from the
-     * default value for any of
-     * these last three arguments.
-     */
-    void
-    reinit (const typename dealii::DoFHandler<dim,spacedim>::cell_iterator &cell,
-            const unsigned int q_index = numbers::invalid_unsigned_int,
-            const unsigned int mapping_index = numbers::invalid_unsigned_int,
-            const unsigned int fe_index = numbers::invalid_unsigned_int);
-
-    /**
-     * Like the previous function,
-     * but for non-hp
-     * iterators. The reason this
-     * (and the other non-hp
-     * iterator) function exists is
-     * so that one can use
-     * hp::FEValues not only for
-     * hp::DoFhandler objects, but
-     * for all sorts of DoFHandler
-     * objects, and triangulations
-     * not associated with
-     * DoFHandlers in general.
-     *
-     * Since
-     * <code>cell-@>active_fe_index()</code>
-     * always returns zero for
-     * non-hp iterators, this
-     * function chooses the zero-th
-     * finite element, mapping, and
-     * quadrature object from the
-     * relevant constructions
-     * passed to the constructor of
-     * this object. The only
-     * exception is if you specify
-     * a value different from the
-     * default value for any of
-     * these last three arguments.
-     */
-    void
-    reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
+    reinit (const TriaIterator<DoFCellAccessor<DH,lda> > cell,
             const unsigned int q_index = numbers::invalid_unsigned_int,
             const unsigned int mapping_index = numbers::invalid_unsigned_int,
             const unsigned int fe_index = numbers::invalid_unsigned_int);
@@ -700,80 +631,9 @@ namespace hp
      * unless a different value for
      * this argument is specified.
      */
+    template <class DH, bool lda>
     void
-    reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-            const unsigned int face_no,
-            const unsigned int q_index = numbers::invalid_unsigned_int,
-            const unsigned int mapping_index = numbers::invalid_unsigned_int,
-            const unsigned int fe_index = numbers::invalid_unsigned_int);
-
-    /**
-     * Like the previous function,
-     * but for non-hp
-     * iterators. The reason this
-     * (and the other non-hp
-     * iterator) function exists is
-     * so that one can use
-     * hp::FEValues not only for
-     * hp::DoFhandler objects, but
-     * for all sorts of DoFHandler
-     * objects, and triangulations
-     * not associated with
-     * DoFHandlers in general.
-     *
-     * Since
-     * <code>cell-@>active_fe_index()</code>
-     * always returns zero for
-     * non-hp iterators, this
-     * function chooses the zero-th
-     * finite element, mapping, and
-     * quadrature object from the
-     * relevant constructions
-     * passed to the constructor of
-     * this object. The only
-     * exception is if you specify
-     * a value different from the
-     * default value for any of
-     * these last three arguments.
-     */
-    void
-    reinit (const typename dealii::DoFHandler<dim,spacedim>::cell_iterator &cell,
-            const unsigned int face_no,
-            const unsigned int q_index = numbers::invalid_unsigned_int,
-            const unsigned int mapping_index = numbers::invalid_unsigned_int,
-            const unsigned int fe_index = numbers::invalid_unsigned_int);
-
-    /**
-     * Like the previous function,
-     * but for non-hp
-     * iterators. The reason this
-     * (and the other non-hp
-     * iterator) function exists is
-     * so that one can use
-     * hp::FEValues not only for
-     * hp::DoFhandler objects, but
-     * for all sorts of DoFHandler
-     * objects, and triangulations
-     * not associated with
-     * DoFHandlers in general.
-     *
-     * Since
-     * <code>cell-@>active_fe_index()</code>
-     * always returns zero for
-     * non-hp iterators, this
-     * function chooses the zero-th
-     * finite element, mapping, and
-     * quadrature object from the
-     * relevant constructions
-     * passed to the constructor of
-     * this object. The only
-     * exception is if you specify
-     * a value different from the
-     * default value for any of
-     * these last three arguments.
-     */
-    void
-    reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
+    reinit (const TriaIterator<DoFCellAccessor<DH,lda> > cell,
             const unsigned int face_no,
             const unsigned int q_index = numbers::invalid_unsigned_int,
             const unsigned int mapping_index = numbers::invalid_unsigned_int,
@@ -960,82 +820,9 @@ namespace hp
      * unless a different value for
      * this argument is specified.
      */
+    template <class DH, bool lda>
     void
-    reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-            const unsigned int face_no,
-            const unsigned int subface_no,
-            const unsigned int q_index = numbers::invalid_unsigned_int,
-            const unsigned int mapping_index = numbers::invalid_unsigned_int,
-            const unsigned int fe_index = numbers::invalid_unsigned_int);
-
-    /**
-     * Like the previous function,
-     * but for non-hp
-     * iterators. The reason this
-     * (and the other non-hp
-     * iterator) function exists is
-     * so that one can use
-     * hp::FEValues not only for
-     * hp::DoFhandler objects, but
-     * for all sorts of DoFHandler
-     * objects, and triangulations
-     * not associated with
-     * DoFHandlers in general.
-     *
-     * Since
-     * <code>cell-@>active_fe_index()</code>
-     * always returns zero for
-     * non-hp iterators, this
-     * function chooses the zero-th
-     * finite element, mapping, and
-     * quadrature object from the
-     * relevant constructions
-     * passed to the constructor of
-     * this object. The only
-     * exception is if you specify
-     * a value different from the
-     * default value for any of
-     * these last three arguments.
-     */
-    void
-    reinit (const typename dealii::DoFHandler<dim,spacedim>::cell_iterator &cell,
-            const unsigned int face_no,
-            const unsigned int subface_no,
-            const unsigned int q_index = numbers::invalid_unsigned_int,
-            const unsigned int mapping_index = numbers::invalid_unsigned_int,
-            const unsigned int fe_index = numbers::invalid_unsigned_int);
-
-    /**
-     * Like the previous function,
-     * but for non-hp
-     * iterators. The reason this
-     * (and the other non-hp
-     * iterator) function exists is
-     * so that one can use
-     * hp::FEValues not only for
-     * hp::DoFhandler objects, but
-     * for all sorts of DoFHandler
-     * objects, and triangulations
-     * not associated with
-     * DoFHandlers in general.
-     *
-     * Since
-     * <code>cell-@>active_fe_index()</code>
-     * always returns zero for
-     * non-hp iterators, this
-     * function chooses the zero-th
-     * finite element, mapping, and
-     * quadrature object from the
-     * relevant constructions
-     * passed to the constructor of
-     * this object. The only
-     * exception is if you specify
-     * a value different from the
-     * default value for any of
-     * these last three arguments.
-     */
-    void
-    reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
+    reinit (const TriaIterator<DoFCellAccessor<DH,lda> > cell,
             const unsigned int face_no,
             const unsigned int subface_no,
             const unsigned int q_index = numbers::invalid_unsigned_int,
index f1c1b41d0ee5cb0e3ad9966fbfebd51786b407c2..26c49da75cb8965b0bd736bc2f0ef720724cead5 100644 (file)
@@ -59,146 +59,328 @@ namespace TrilinosWrappers
   /**
    * Iterators for Trilinos matrices
    */
-  namespace MatrixIterators
+  namespace SparseMatrixIterators
   {
+    // forward declaration
+    template <bool Constness> class Iterator;
+
     /**
-     * STL conforming iterator. This class acts as an iterator walking
-     * over the elements of Trilinos matrices. The implementation of this
-     * class is similar to the one for PETSc matrices.
+     * Exception
+     */
+    DeclException0 (ExcBeyondEndOfMatrix);
+
+    /**
+     * Exception
+     */
+    DeclException3 (ExcAccessToNonlocalRow,
+                    int, int, int,
+                    << "You tried to access row " << arg1
+                    << " of a distributed sparsity pattern, "
+                    << " but only rows " << arg2 << " through " << arg3
+                    << " are stored locally and can be accessed.");
+
+    /**
+     * Handling of indices for both
+     * constant and non constant
+     * Accessor objects
      *
-     * Note that Trilinos stores the elements within each row in ascending
-     * order. This is opposed to the deal.II sparse matrix style where the
-     * diagonal element (if it exists) is stored before all other values, and
-     * the PETSc sparse matrices, where one can't guarantee a certain order of
-     * the elements.
+     * For a regular
+     * dealii::SparseMatrix, we would
+     * use an accessor for the sparsity
+     * pattern. For Trilinos matrices,
+     * this does not seem so simple,
+     * therefore, we write a little
+     * base class here.
      *
-     * @ingroup TrilinosWrappers
-     * @author Martin Kronbichler, Wolfgang Bangerth, 2008
+     * @author Guido Kanschat
+     * @date 2012
+     */
+    class AccessorBase
+    {
+    public:
+      /**
+       * Constructor.
+       */
+      AccessorBase (SparseMatrix *matrix,
+                    const unsigned int  row,
+                    const unsigned int  index);
+
+      /**
+       * Row number of the element
+       * represented by this object.
+       */
+      unsigned int row() const;
+
+      /**
+       * Index in row of the element
+       * represented by this object.
+       */
+      unsigned int index() const;
+
+      /**
+       * Column number of the element
+       * represented by this object.
+       */
+      unsigned int column() const;
+
+    protected:
+      /**
+       * Pointer to the matrix
+       * object. This object should
+       * be handled as a const
+       * pointer or non-const by the
+       * appropriate derived
+       * classes. In order to be able
+       * to implement both, it is not
+       * const here, so handle with
+       * care!
+       */
+      mutable SparseMatrix *matrix;
+      /**
+       * Current row number.
+       */
+      unsigned int a_row;
+
+      /**
+       * Current index in row.
+       */
+      unsigned int a_index;
+
+      /**
+       * Discard the old row caches
+       * (they may still be used by
+       * other accessors) and
+       * generate new ones for the
+       * row pointed to presently by
+       * this accessor.
+       */
+      void visit_present_row ();
+
+      /**
+       * Cache where we store the
+       * column indices of the
+       * present row. This is
+       * necessary, since Trilinos
+       * makes access to the elements
+       * of its matrices rather hard,
+       * and it is much more
+       * efficient to copy all column
+       * entries of a row once when
+       * we enter it than repeatedly
+       * asking Trilinos for
+       * individual ones. This also
+       * makes some sense since it is
+       * likely that we will access
+       * them sequentially anyway.
+       *
+       * In order to make copying of
+       * iterators/accessor of
+       * acceptable performance, we
+       * keep a shared pointer to
+       * these entries so that more
+       * than one accessor can access
+       * this data if necessary.
+       */
+      std_cxx1x::shared_ptr<std::vector<unsigned int> > colnum_cache;
+
+      /**
+       * Cache for the values
+       * of this row.
+       */
+      std_cxx1x::shared_ptr<std::vector<TrilinosScalar> > value_cache;
+    };
+
+    /**
+     * General template for sparse matrix accessors. The first template
+     * argument denotes the underlying numeric type, the second the
+     * constness of the matrix.
+     *
+     * The general template is not implemented, only the specializations
+     * for the two possible values of the second template
+     * argument. Therefore, the interface listed here only serves as a
+     * template provided since doxygen does not link the specializations.
      */
-    class const_iterator
+    template <bool Constess>
+    class Accessor : public AccessorBase
     {
+      /**
+      * Value of this matrix entry.
+      */
+      TrilinosScalar value() const;
+
+      /**
+       * Value of this matrix entry.
+       */
+      TrilinosScalar &value();
+    };
+
+    /**
+     * The specialization for a const Accessor.
+     */
+    template<>
+    class Accessor<true> : public AccessorBase
+    {
+    public:
+      /**
+       * Typedef for the type (including
+       * constness) of the matrix to be
+       * used here.
+       */
+      typedef const SparseMatrix MatrixType;
+
+      /**
+       * Constructor. Since we use
+       * accessors only for read
+       * access, a const matrix
+       * pointer is sufficient.
+       */
+      Accessor (MatrixType *matrix,
+                const unsigned int  row,
+                const unsigned int  index);
+
+      /**
+       * Copy constructor to get from a
+       * const or non-const accessor to a const
+       * accessor.
+       */
+      template <bool Other>
+      Accessor (const Accessor<Other> &a);
+
+      /**
+       * Value of this matrix entry.
+       */
+      TrilinosScalar value() const;
+
     private:
       /**
-       * Accessor class for iterators
+       * Make iterator class a
+       * friend.
        */
-      class Accessor
+      template <bool> friend class Iterator;
+    };
+
+    /**
+     * The specialization for a mutable Accessor.
+     */
+    template<>
+    class Accessor<false> : public AccessorBase
+    {
+      class Reference
       {
       public:
         /**
-         * Constructor. Since we use
-         * accessors only for read
-         * access, a const matrix
-         * pointer is sufficient.
+         * Constructor.
          */
-        Accessor (const SparseMatrix *matrix,
-                  const unsigned int  row,
-                  const unsigned int  index);
+        Reference (const Accessor<false> &accessor);
 
         /**
-         * Row number of the element
-         * represented by this object.
+         * Conversion operator to the
+         * data type of the matrix.
          */
-        unsigned int row() const;
+        operator TrilinosScalar () const;
 
         /**
-         * Index in row of the element
-         * represented by this object.
+         * Set the element of the matrix
+         * we presently point to to @p n.
          */
-        unsigned int index() const;
+        const Reference &operator = (const TrilinosScalar n) const;
 
         /**
-         * Column number of the element
-         * represented by this object.
+         * Add @p n to the element of the
+         * matrix we presently point to.
          */
-        unsigned int column() const;
+        const Reference &operator += (const TrilinosScalar n) const;
 
         /**
-         * Value of this matrix entry.
+         * Subtract @p n from the element
+         * of the matrix we presently
+         * point to.
          */
-        TrilinosScalar value() const;
+        const Reference &operator -= (const TrilinosScalar n) const;
 
         /**
-         * Exception
+         * Multiply the element of the
+         * matrix we presently point to
+         * by @p n.
          */
-        DeclException0 (ExcBeyondEndOfMatrix);
+        const Reference &operator *= (const TrilinosScalar n) const;
 
         /**
-         * Exception
+         * Divide the element of the
+         * matrix we presently point to
+         * by @p n.
          */
-        DeclException3 (ExcAccessToNonlocalRow,
-                        int, int, int,
-                        << "You tried to access row " << arg1
-                        << " of a distributed matrix, but only rows "
-                        << arg2 << " through " << arg3
-                        << " are stored locally and can be accessed.");
+        const Reference &operator /= (const TrilinosScalar n) const;
 
       private:
         /**
-         * The matrix accessed.
+         * Pointer to the accessor that
+         * denotes which element we
+         * presently point to.
          */
-        mutable SparseMatrix *matrix;
-
-        /**
-         * Current row number.
-         */
-        unsigned int a_row;
-
-        /**
-         * Current index in row.
-         */
-        unsigned int a_index;
+        Accessor &accessor;
+      };
 
-        /**
-         * Cache where we store the
-         * column indices of the
-         * present row. This is
-         * necessary, since Trilinos
-         * makes access to the elements
-         * of its matrices rather hard,
-         * and it is much more
-         * efficient to copy all column
-         * entries of a row once when
-         * we enter it than repeatedly
-         * asking Trilinos for
-         * individual ones. This also
-         * makes some sense since it is
-         * likely that we will access
-         * them sequentially anyway.
-         *
-         * In order to make copying of
-         * iterators/accessor of
-         * acceptable performance, we
-         * keep a shared pointer to
-         * these entries so that more
-         * than one accessor can access
-         * this data if necessary.
-         */
-        std_cxx1x::shared_ptr<std::vector<unsigned int> > colnum_cache;
+    public:
+      /**
+       * Typedef for the type (including
+       * constness) of the matrix to be
+       * used here.
+       */
+      typedef SparseMatrix MatrixType;
 
-        /**
-         * Similar cache for the values
-         * of this row.
-         */
-        std_cxx1x::shared_ptr<std::vector<TrilinosScalar> > value_cache;
+      /**
+       * Constructor. Since we use
+       * accessors only for read
+       * access, a const matrix
+       * pointer is sufficient.
+       */
+      Accessor (MatrixType *matrix,
+                const unsigned int  row,
+                const unsigned int  index);
 
-        /**
-         * Discard the old row caches
-         * (they may still be used by
-         * other accessors) and
-         * generate new ones for the
-         * row pointed to presently by
-         * this accessor.
-         */
-        void visit_present_row ();
+      /**
+       * Value of this matrix entry.
+       */
+      Reference value() const;
 
-        /**
-         * Make enclosing class a
-         * friend.
-         */
-        friend class const_iterator;
-      };
+    private:
+      /**
+       * Make iterator class a
+       * friend.
+       */
+      template <bool> friend class Iterator;
+      /**
+       * Make Reference object a
+       * friend.
+       */
+      friend class Reference;
+    };
 
+    /**
+     * STL conforming iterator. This class acts as an iterator walking
+     * over the elements of Trilinos matrices. The implementation of this
+     * class is similar to the one for PETSc matrices.
+     *
+     * Note that Trilinos stores the elements within each row in ascending
+     * order. This is opposed to the deal.II sparse matrix style where the
+     * diagonal element (if it exists) is stored before all other values, and
+     * the PETSc sparse matrices, where one can't guarantee a certain order of
+     * the elements.
+     *
+     * @ingroup TrilinosWrappers
+     * @author Martin Kronbichler, Wolfgang Bangerth, 2008
+     */
+    template <bool Constness>
+    class Iterator
+    {
     public:
+      /**
+       * Typedef for the matrix type
+       * (including constness) we are to
+       * operate on.
+       */
+      typedef typename Accessor<Constness>::MatrixType MatrixType;
 
       /**
        * Constructor. Create an
@@ -206,41 +388,48 @@ namespace TrilinosWrappers
        * matrix for the given row and
        * the index within it.
        */
-      const_iterator (const SparseMatrix *matrix,
-                      const unsigned int  row,
-                      const unsigned int  index);
+      Iterator (MatrixType *matrix,
+                const unsigned int  row,
+                const unsigned int  index);
+
+      /**
+       * Copy constructor with
+       * optional change of constness.
+       */
+      template <bool Other>
+      Iterator(const Iterator<Other> &other);
 
       /**
        * Prefix increment.
        */
-      const_iterator &operator++ ();
+      Iterator<Constness> &operator++ ();
 
       /**
        * Postfix increment.
        */
-      const_iterator operator++ (int);
+      Iterator<Constness> operator++ (int);
 
       /**
        * Dereferencing operator.
        */
-      const Accessor &operator* () const;
+      const Accessor<Constness> &operator* () const;
 
       /**
        * Dereferencing operator.
        */
-      const Accessor *operator-> () const;
+      const Accessor<Constness> *operator-> () const;
 
       /**
        * Comparison. True, if both
        * iterators point to the same
        * matrix position.
        */
-      bool operator == (const const_iterator &) const;
+      bool operator == (const Iterator<Constness> &) const;
 
       /**
        * Inverse of <tt>==</tt>.
        */
-      bool operator != (const const_iterator &) const;
+      bool operator != (const Iterator<Constness> &) const;
 
       /**
        * Comparison operator. Result
@@ -250,7 +439,12 @@ namespace TrilinosWrappers
        * and the first index is
        * smaller.
        */
-      bool operator < (const const_iterator &) const;
+      bool operator < (const Iterator<Constness> &) const;
+
+      /**
+       * Comparison operator. The opposite of the previous operator
+       */
+      bool operator > (const Iterator<Constness> &) const;
 
       /**
        * Exception
@@ -266,7 +460,9 @@ namespace TrilinosWrappers
        * Store an object of the
        * accessor class.
        */
-      Accessor accessor;
+      Accessor<Constness> accessor;
+
+      template <bool Other> friend class Iterator;
     };
 
   }
@@ -331,7 +527,13 @@ namespace TrilinosWrappers
      * Declare a typedef for the
      * iterator class.
      */
-    typedef MatrixIterators::const_iterator const_iterator;
+    typedef SparseMatrixIterators::Iterator<false> iterator;
+
+    /**
+     * Declare a typedef for the
+     * const iterator class.
+     */
+    typedef SparseMatrixIterators::Iterator<true> const_iterator;
 
     /**
      * Declare a typedef in analogy
@@ -1932,60 +2134,60 @@ namespace TrilinosWrappers
                              const VectorBase &b) const;
 
     /**
-     * Perform the matrix-matrix
-     * multiplication <tt>C = A * B</tt>,
-     * or, if an optional vector argument
-     * is given, <tt>C = A * diag(V) *
-     * B</tt>, where <tt>diag(V)</tt>
-     * defines a diagonal matrix with the
-     * vector entries.
-     *
-     * This function assumes that the
-     * calling matrix <tt>A</tt> and
-     * <tt>B</tt> have compatible
-     * sizes. The size of <tt>C</tt> will
-     * be set within this function.
-     *
-     * The content as well as the sparsity
-     * pattern of the matrix C will be
-     * changed by this function, so make
-     * sure that the sparsity pattern is
-     * not used somewhere else in your
-     * program. This is an expensive
-     * operation, so think twice before you
-     * use this function.
-     */
+    * Perform the matrix-matrix
+    * multiplication <tt>C = A * B</tt>,
+    * or, if an optional vector argument
+    * is given, <tt>C = A * diag(V) *
+    * B</tt>, where <tt>diag(V)</tt>
+    * defines a diagonal matrix with the
+    * vector entries.
+    *
+    * This function assumes that the
+    * calling matrix <tt>A</tt> and
+    * <tt>B</tt> have compatible
+    * sizes. The size of <tt>C</tt> will
+    * be set within this function.
+    *
+    * The content as well as the sparsity
+    * pattern of the matrix C will be
+    * changed by this function, so make
+    * sure that the sparsity pattern is
+    * not used somewhere else in your
+    * program. This is an expensive
+    * operation, so think twice before you
+    * use this function.
+    */
     void mmult (SparseMatrix       &C,
                 const SparseMatrix &B,
                 const VectorBase   &V = VectorBase()) const;
 
 
     /**
-     * Perform the matrix-matrix
-     * multiplication with the transpose of
-     * <tt>this</tt>, i.e., <tt>C =
-     * A<sup>T</sup> * B</tt>, or, if an
-     * optional vector argument is given,
-     * <tt>C = A<sup>T</sup> * diag(V) *
-     * B</tt>, where <tt>diag(V)</tt>
-     * defines a diagonal matrix with the
-     * vector entries.
-     *
-     * This function assumes that the
-     * calling matrix <tt>A</tt> and
-     * <tt>B</tt> have compatible
-     * sizes. The size of <tt>C</tt> will
-     * be set within this function.
-     *
-     * The content as well as the sparsity
-     * pattern of the matrix C will be
-     * changed by this function, so make
-     * sure that the sparsity pattern is
-     * not used somewhere else in your
-     * program. This is an expensive
-     * operation, so think twice before you
-     * use this function.
-     */
+    * Perform the matrix-matrix
+    * multiplication with the transpose of
+    * <tt>this</tt>, i.e., <tt>C =
+    * A<sup>T</sup> * B</tt>, or, if an
+    * optional vector argument is given,
+    * <tt>C = A<sup>T</sup> * diag(V) *
+    * B</tt>, where <tt>diag(V)</tt>
+    * defines a diagonal matrix with the
+    * vector entries.
+    *
+    * This function assumes that the
+    * calling matrix <tt>A</tt> and
+    * <tt>B</tt> have compatible
+    * sizes. The size of <tt>C</tt> will
+    * be set within this function.
+    *
+    * The content as well as the sparsity
+    * pattern of the matrix C will be
+    * changed by this function, so make
+    * sure that the sparsity pattern is
+    * not used somewhere else in your
+    * program. This is an expensive
+    * operation, so think twice before you
+    * use this function.
+    */
     void Tmmult (SparseMatrix       &C,
                  const SparseMatrix &B,
                  const VectorBase   &V = VectorBase()) const;
@@ -2152,6 +2354,49 @@ namespace TrilinosWrappers
      */
     const_iterator end (const unsigned int r) const;
 
+    /**
+     * STL-like iterator with the
+     * first entry.
+     */
+    iterator begin ();
+
+    /**
+     * Final iterator.
+     */
+    iterator end ();
+
+    /**
+     * STL-like iterator with the
+     * first entry of row @p r.
+     *
+     * Note that if the given row
+     * is empty, i.e. does not
+     * contain any nonzero entries,
+     * then the iterator returned
+     * by this function equals
+     * <tt>end(r)</tt>. Note also
+     * that the iterator may not be
+     * dereferencable in that case.
+     */
+    iterator begin (const unsigned int r);
+
+    /**
+     * Final iterator of row
+     * <tt>r</tt>. It points to the
+     * first element past the end
+     * of line @p r, or past the
+     * end of the entire sparsity
+     * pattern.
+     *
+     * Note that the end iterator
+     * is not necessarily
+     * dereferencable. This is in
+     * particular the case if it is
+     * the end iterator for the
+     * last row of a matrix.
+     */
+    iterator end (const unsigned int r);
+
 //@}
     /**
      * @name Input/Output
@@ -2371,16 +2616,12 @@ namespace TrilinosWrappers
 
 #ifndef DOXYGEN
 
-  namespace MatrixIterators
+  namespace SparseMatrixIterators
   {
-
     inline
-    const_iterator::Accessor::
-    Accessor (const SparseMatrix *matrix,
-              const unsigned int  row,
-              const unsigned int  index)
+    AccessorBase::AccessorBase(SparseMatrix *matrix, unsigned int row, unsigned int index)
       :
-      matrix(const_cast<SparseMatrix *>(matrix)),
+      matrix(matrix),
       a_row(row),
       a_index(index)
     {
@@ -2390,58 +2631,168 @@ namespace TrilinosWrappers
 
     inline
     unsigned int
-    const_iterator::Accessor::row() const
+    AccessorBase::row() const
     {
       Assert (a_row < matrix->m(), ExcBeyondEndOfMatrix());
       return a_row;
     }
 
 
-
     inline
     unsigned int
-    const_iterator::Accessor::column() const
+    AccessorBase::column() const
     {
       Assert (a_row < matrix->m(), ExcBeyondEndOfMatrix());
       return (*colnum_cache)[a_index];
     }
 
 
-
     inline
     unsigned int
-    const_iterator::Accessor::index() const
+    AccessorBase::index() const
     {
       Assert (a_row < matrix->m(), ExcBeyondEndOfMatrix());
       return a_index;
     }
 
 
+    inline
+    Accessor<true>::Accessor (MatrixType *matrix,
+                              const unsigned int  row,
+                              const unsigned int  index)
+      :
+      AccessorBase(const_cast<SparseMatrix *>(matrix), row, index)
+    {}
+
+
+    template <bool Other>
+    inline
+    Accessor<true>::Accessor(const Accessor<Other> &other)
+      :
+      AccessorBase(other)
+    {}
+
 
     inline
     TrilinosScalar
-    const_iterator::Accessor::value() const
+    Accessor<true>::value() const
     {
       Assert (a_row < matrix->m(), ExcBeyondEndOfMatrix());
       return (*value_cache)[a_index];
     }
 
 
+    inline
+    Accessor<false>::Reference::Reference (
+      const Accessor<false> &acc)
+      :
+      accessor(const_cast<Accessor<false>&>(acc))
+    {}
+
 
     inline
-    const_iterator::
-    const_iterator(const SparseMatrix *matrix,
-                   const unsigned int  row,
-                   const unsigned int  index)
+    Accessor<false>::Reference::operator TrilinosScalar () const
+    {
+      return (*accessor.value_cache)[accessor.a_index];
+    }
+
+    inline
+    const Accessor<false>::Reference &
+    Accessor<false>::Reference::operator = (const TrilinosScalar n) const
+    {
+      (*accessor.value_cache)[accessor.a_index] = n;
+      accessor.matrix->set(accessor.row(), accessor.column(),
+                           static_cast<TrilinosScalar>(*this));
+      return *this;
+    }
+
+
+    inline
+    const Accessor<false>::Reference &
+    Accessor<false>::Reference::operator += (const TrilinosScalar n) const
+    {
+      (*accessor.value_cache)[accessor.a_index] += n;
+      accessor.matrix->set(accessor.row(), accessor.column(),
+                           static_cast<TrilinosScalar>(*this));
+      return *this;
+    }
+
+
+    inline
+    const Accessor<false>::Reference &
+    Accessor<false>::Reference::operator -= (const TrilinosScalar n) const
+    {
+      (*accessor.value_cache)[accessor.a_index] -= n;
+      accessor.matrix->set(accessor.row(), accessor.column(),
+                           static_cast<TrilinosScalar>(*this));
+      return *this;
+    }
+
+
+    inline
+    const Accessor<false>::Reference &
+    Accessor<false>::Reference::operator *= (const TrilinosScalar n) const
+    {
+      (*accessor.value_cache)[accessor.a_index] *= n;
+      accessor.matrix->set(accessor.row(), accessor.column(),
+                           static_cast<TrilinosScalar>(*this));
+      return *this;
+    }
+
+
+    inline
+    const Accessor<false>::Reference &
+    Accessor<false>::Reference::operator /= (const TrilinosScalar n) const
+    {
+      (*accessor.value_cache)[accessor.a_index] /= n;
+      accessor.matrix->set(accessor.row(), accessor.column(),
+                           static_cast<TrilinosScalar>(*this));
+      return *this;
+    }
+
+
+    inline
+    Accessor<false>::Accessor (MatrixType *matrix,
+                               const unsigned int  row,
+                               const unsigned int  index)
+      :
+      AccessorBase(matrix, row, index)
+    {}
+
+
+    inline
+    Accessor<false>::Reference
+    Accessor<false>::value() const
+    {
+      Assert (a_row < matrix->m(), ExcBeyondEndOfMatrix());
+      return Reference(*this);
+    }
+
+
+
+    template <bool Constness>
+    inline
+    Iterator<Constness>::Iterator(MatrixType *matrix,
+                                  const unsigned int  row,
+                                  const unsigned int  index)
       :
       accessor(matrix, row, index)
     {}
 
 
+    template <bool Constness>
+    template <bool Other>
+    inline
+    Iterator<Constness>::Iterator(const Iterator<Other> &other)
+      :
+      accessor(other.accessor)
+    {}
 
+
+    template <bool Constness>
     inline
-    const_iterator &
-    const_iterator::operator++ ()
+    Iterator<Constness> &
+    Iterator<Constness>::operator++ ()
     {
       Assert (accessor.a_row < accessor.matrix->m(), ExcIteratorPastEnd());
 
@@ -2467,40 +2818,42 @@ namespace TrilinosWrappers
     }
 
 
-
+    template <bool Constness>
     inline
-    const_iterator
-    const_iterator::operator++ (int)
+    Iterator<Constness>
+    Iterator<Constness>::operator++ (int)
     {
-      const const_iterator old_state = *this;
+      const Iterator<Constness> old_state = *this;
       ++(*this);
       return old_state;
     }
 
 
 
+    template <bool Constness>
     inline
-    const const_iterator::Accessor &
-    const_iterator::operator* () const
+    const Accessor<Constness> &
+    Iterator<Constness>::operator* () const
     {
       return accessor;
     }
 
 
 
+    template <bool Constness>
     inline
-    const const_iterator::Accessor *
-    const_iterator::operator-> () const
+    const Accessor<Constness> *
+    Iterator<Constness>::operator-> () const
     {
       return &accessor;
     }
 
 
 
+    template <bool Constness>
     inline
     bool
-    const_iterator::
-    operator == (const const_iterator &other) const
+    Iterator<Constness>::operator == (const Iterator<Constness> &other) const
     {
       return (accessor.a_row == other.accessor.a_row &&
               accessor.a_index == other.accessor.a_index);
@@ -2508,26 +2861,35 @@ namespace TrilinosWrappers
 
 
 
+    template <bool Constness>
     inline
     bool
-    const_iterator::
-    operator != (const const_iterator &other) const
+    Iterator<Constness>::operator != (const Iterator<Constness> &other) const
     {
       return ! (*this == other);
     }
 
 
 
+    template <bool Constness>
     inline
     bool
-    const_iterator::
-    operator < (const const_iterator &other) const
+    Iterator<Constness>::operator < (const Iterator<Constness> &other) const
     {
       return (accessor.row() < other.accessor.row() ||
               (accessor.row() == other.accessor.row() &&
                accessor.index() < other.accessor.index()));
     }
 
+
+    template <bool Constness>
+    inline
+    bool
+    Iterator<Constness>::operator > (const Iterator<Constness> &other) const
+    {
+      return (other < *this);
+    }
+
   }
 
 
@@ -2583,6 +2945,57 @@ namespace TrilinosWrappers
 
 
 
+  inline
+  SparseMatrix::iterator
+  SparseMatrix::begin()
+  {
+    return iterator(this, 0, 0);
+  }
+
+
+
+  inline
+  SparseMatrix::iterator
+  SparseMatrix::end()
+  {
+    return iterator(this, m(), 0);
+  }
+
+
+
+  inline
+  SparseMatrix::iterator
+  SparseMatrix::begin(const unsigned int r)
+  {
+    Assert (r < m(), ExcIndexRange(r, 0, m()));
+    if (row_length(r) > 0)
+      return iterator(this, r, 0);
+    else
+      return end (r);
+  }
+
+
+
+  inline
+  SparseMatrix::iterator
+  SparseMatrix::end(const unsigned int r)
+  {
+    Assert (r < m(), ExcIndexRange(r, 0, m()));
+
+    // place the iterator on the first entry
+    // past this line, or at the end of the
+    // matrix
+    for (unsigned int i=r+1; i<m(); ++i)
+      if (row_length(i) > 0)
+        return iterator(this, i, 0);
+
+    // if there is no such line, then take the
+    // end iterator of the matrix
+    return end();
+  }
+
+
+
   inline
   bool
   SparseMatrix::in_local_range (const unsigned int index) const
index 0967442a6f02f06f2a7466dff70922fe9bdc9398..5c25456e03dc90c108ad69278d818fc0d0c90594 100644 (file)
@@ -51,125 +51,131 @@ namespace TrilinosWrappers
 
   namespace SparsityPatternIterators
   {
+    // forward declaration
+    class Iterator;
+
     /**
-     * STL conforming iterator. This class acts as an iterator walking
-     * over the elements of Trilinos sparsity pattern.
+     * Accessor class for iterators into sparsity patterns. This class is
+     * also the base class for both const and non-const accessor classes
+     * into sparse matrices.
+     *
+     * Note that this class only allows read access to elements, providing
+     * their row and column number. It does not allow modifying the
+     * sparsity pattern itself.
      *
-     * @ingroup TrilinosWrappers
-     * @author Martin Kronbichler, Wolfgang Bangerth, 2008
+     * @author Wolfgang Bangerth, Martin Kronbichler, Guido Kanschat
+     * @date 2004, 2008, 2012
      */
-    class const_iterator
+    class Accessor
     {
+    public:
+      /**
+       * Constructor.
+       */
+      Accessor (const SparsityPattern *sparsity_pattern,
+                const unsigned int     row,
+                const unsigned int     index);
+
+      /**
+       * Row number of the element
+       * represented by this object.
+       */
+      unsigned int row() const;
+
+      /**
+       * Index in row of the element
+       * represented by this object.
+       */
+      unsigned int index() const;
+
+      /**
+       * Column number of the element
+       * represented by this object.
+       */
+      unsigned int column() const;
+
+      /**
+       * Exception
+       */
+      DeclException0 (ExcBeyondEndOfSparsityPattern);
+
+      /**
+       * Exception
+       */
+      DeclException3 (ExcAccessToNonlocalRow,
+                      int, int, int,
+                      << "You tried to access row " << arg1
+                      << " of a distributed sparsity pattern, "
+                      << " but only rows " << arg2 << " through " << arg3
+                      << " are stored locally and can be accessed.");
+
     private:
       /**
-       * Accessor class for iterators
+       * The matrix accessed.
+       */
+      mutable SparsityPattern *sparsity_pattern;
+
+      /**
+       * Current row number.
+       */
+      unsigned int a_row;
+
+      /**
+       * Current index in row.
+       */
+      unsigned int a_index;
+
+      /**
+       * Cache where we store the
+       * column indices of the
+       * present row. This is
+       * necessary, since Trilinos
+       * makes access to the elements
+       * of its matrices rather hard,
+       * and it is much more
+       * efficient to copy all column
+       * entries of a row once when
+       * we enter it than repeatedly
+       * asking Trilinos for
+       * individual ones. This also
+       * makes some sense since it is
+       * likely that we will access
+       * them sequentially anyway.
+       *
+       * In order to make copying of
+       * iterators/accessor of
+       * acceptable performance, we
+       * keep a shared pointer to
+       * these entries so that more
+       * than one accessor can access
+       * this data if necessary.
        */
-      class Accessor
-      {
-      public:
-        /**
-         * Constructor. Since we use
-         * accessors only for read
-         * access, a const matrix
-         * pointer is sufficient.
-         */
-        Accessor (const SparsityPattern *sparsity_pattern,
-                  const unsigned int     row,
-                  const unsigned int     index);
-
-        /**
-         * Row number of the element
-         * represented by this object.
-         */
-        unsigned int row() const;
-
-        /**
-         * Index in row of the element
-         * represented by this object.
-         */
-        unsigned int index() const;
-
-        /**
-         * Column number of the element
-         * represented by this object.
-         */
-        unsigned int column() const;
-
-        /**
-         * Exception
-         */
-        DeclException0 (ExcBeyondEndOfSparsityPattern);
-
-        /**
-         * Exception
-         */
-        DeclException3 (ExcAccessToNonlocalRow,
-                        int, int, int,
-                        << "You tried to access row " << arg1
-                        << " of a distributed sparsity pattern, "
-                        << " but only rows " << arg2 << " through " << arg3
-                        << " are stored locally and can be accessed.");
-
-      private:
-        /**
-         * The matrix accessed.
-         */
-        mutable SparsityPattern *sparsity_pattern;
-
-        /**
-         * Current row number.
-         */
-        unsigned int a_row;
-
-        /**
-         * Current index in row.
-         */
-        unsigned int a_index;
-
-        /**
-         * Cache where we store the
-         * column indices of the
-         * present row. This is
-         * necessary, since Trilinos
-         * makes access to the elements
-         * of its matrices rather hard,
-         * and it is much more
-         * efficient to copy all column
-         * entries of a row once when
-         * we enter it than repeatedly
-         * asking Trilinos for
-         * individual ones. This also
-         * makes some sense since it is
-         * likely that we will access
-         * them sequentially anyway.
-         *
-         * In order to make copying of
-         * iterators/accessor of
-         * acceptable performance, we
-         * keep a shared pointer to
-         * these entries so that more
-         * than one accessor can access
-         * this data if necessary.
-         */
-        std_cxx1x::shared_ptr<const std::vector<unsigned int> > colnum_cache;
-
-        /**
-         * Discard the old row caches
-         * (they may still be used by
-         * other accessors) and
-         * generate new ones for the
-         * row pointed to presently by
-         * this accessor.
-         */
-        void visit_present_row ();
-
-        /**
-         * Make enclosing class a
-         * friend.
-         */
-        friend class const_iterator;
-      };
+      std_cxx1x::shared_ptr<const std::vector<unsigned int> > colnum_cache;
 
+      /**
+       * Discard the old row caches
+       * (they may still be used by
+       * other accessors) and
+       * generate new ones for the
+       * row pointed to presently by
+       * this accessor.
+       */
+      void visit_present_row ();
+
+      /**
+       * Make enclosing class a
+       * friend.
+       */
+      friend class Iterator;
+    };
+
+    /**
+     * Iterator class for sparsity patterns of type TrilinosWrappers::SparsityPattern.
+     * Access to individual elements of the sparsity pattern is handled by the
+     * Accessor class in this namespace.
+     */
+    class Iterator
+    {
     public:
 
       /**
@@ -178,19 +184,19 @@ namespace TrilinosWrappers
        * matrix for the given row and
        * the index within it.
        */
-      const_iterator (const SparsityPattern *sparsity_pattern,
-                      const unsigned int     row,
-                      const unsigned int     index);
+      Iterator (const SparsityPattern *sparsity_pattern,
+                const unsigned int     row,
+                const unsigned int     index);
 
       /**
        * Prefix increment.
        */
-      const_iterator &operator++ ();
+      Iterator &operator++ ();
 
       /**
        * Postfix increment.
        */
-      const_iterator operator++ (int);
+      Iterator operator++ (int);
 
       /**
        * Dereferencing operator.
@@ -207,12 +213,12 @@ namespace TrilinosWrappers
        * iterators point to the same
        * matrix position.
        */
-      bool operator == (const const_iterator &) const;
+      bool operator == (const Iterator &) const;
 
       /**
        * Inverse of <tt>==</tt>.
        */
-      bool operator != (const const_iterator &) const;
+      bool operator != (const Iterator &) const;
 
       /**
        * Comparison operator. Result
@@ -222,7 +228,7 @@ namespace TrilinosWrappers
        * and the first index is
        * smaller.
        */
-      bool operator < (const const_iterator &) const;
+      bool operator < (const Iterator &) const;
 
       /**
        * Exception
@@ -274,7 +280,7 @@ namespace TrilinosWrappers
      * Declare a typedef for the
      * iterator class.
      */
-    typedef SparsityPatternIterators::const_iterator const_iterator;
+    typedef SparsityPatternIterators::Iterator const_iterator;
 
     /**
      * @name Basic constructors and initalization.
@@ -1359,8 +1365,8 @@ namespace TrilinosWrappers
      */
     std_cxx1x::shared_ptr<Epetra_FECrsGraph> graph;
 
-    friend class SparsityPatternIterators::const_iterator;
-    friend class SparsityPatternIterators::const_iterator::Accessor;
+    friend class SparsityPatternIterators::Accessor;
+    friend class SparsityPatternIterators::Iterator;
   };
 
 
@@ -1374,10 +1380,9 @@ namespace TrilinosWrappers
   {
 
     inline
-    const_iterator::Accessor::
-    Accessor (const SparsityPattern *sp,
-              const unsigned int     row,
-              const unsigned int     index)
+    Accessor::Accessor (const SparsityPattern *sp,
+                        const unsigned int     row,
+                        const unsigned int     index)
       :
       sparsity_pattern(const_cast<SparsityPattern *>(sp)),
       a_row(row),
@@ -1389,7 +1394,7 @@ namespace TrilinosWrappers
 
     inline
     unsigned int
-    const_iterator::Accessor::row() const
+    Accessor::row() const
     {
       Assert (a_row < sparsity_pattern->n_rows(), ExcBeyondEndOfSparsityPattern());
       return a_row;
@@ -1399,7 +1404,7 @@ namespace TrilinosWrappers
 
     inline
     unsigned int
-    const_iterator::Accessor::column() const
+    Accessor::column() const
     {
       Assert (a_row < sparsity_pattern->n_rows(), ExcBeyondEndOfSparsityPattern());
       return (*colnum_cache)[a_index];
@@ -1409,7 +1414,7 @@ namespace TrilinosWrappers
 
     inline
     unsigned int
-    const_iterator::Accessor::index() const
+    Accessor::index() const
     {
       Assert (a_row < sparsity_pattern->n_rows(), ExcBeyondEndOfSparsityPattern());
       return a_index;
@@ -1418,10 +1423,9 @@ namespace TrilinosWrappers
 
 
     inline
-    const_iterator::
-    const_iterator(const SparsityPattern *sp,
-                   const unsigned int     row,
-                   const unsigned int     index)
+    Iterator::Iterator(const SparsityPattern *sp,
+                       const unsigned int     row,
+                       const unsigned int     index)
       :
       accessor(sp, row, index)
     {}
@@ -1429,8 +1433,8 @@ namespace TrilinosWrappers
 
 
     inline
-    const_iterator &
-    const_iterator::operator++ ()
+    Iterator &
+    Iterator::operator++ ()
     {
       Assert (accessor.a_row < accessor.sparsity_pattern->n_rows(),
               ExcIteratorPastEnd());
@@ -1459,10 +1463,10 @@ namespace TrilinosWrappers
 
 
     inline
-    const_iterator
-    const_iterator::operator++ (int)
+    Iterator
+    Iterator::operator++ (int)
     {
-      const const_iterator old_state = *this;
+      const Iterator old_state = *this;
       ++(*this);
       return old_state;
     }
@@ -1470,8 +1474,8 @@ namespace TrilinosWrappers
 
 
     inline
-    const const_iterator::Accessor &
-    const_iterator::operator* () const
+    const Accessor &
+    Iterator::operator* () const
     {
       return accessor;
     }
@@ -1479,8 +1483,8 @@ namespace TrilinosWrappers
 
 
     inline
-    const const_iterator::Accessor *
-    const_iterator::operator-> () const
+    const Accessor *
+    Iterator::operator-> () const
     {
       return &accessor;
     }
@@ -1489,8 +1493,7 @@ namespace TrilinosWrappers
 
     inline
     bool
-    const_iterator::
-    operator == (const const_iterator &other) const
+    Iterator::operator == (const Iterator &other) const
     {
       return (accessor.a_row == other.accessor.a_row &&
               accessor.a_index == other.accessor.a_index);
@@ -1500,8 +1503,7 @@ namespace TrilinosWrappers
 
     inline
     bool
-    const_iterator::
-    operator != (const const_iterator &other) const
+    Iterator::operator != (const Iterator &other) const
     {
       return ! (*this == other);
     }
@@ -1510,8 +1512,7 @@ namespace TrilinosWrappers
 
     inline
     bool
-    const_iterator::
-    operator < (const const_iterator &other) const
+    Iterator::operator < (const Iterator &other) const
     {
       return (accessor.row() < other.accessor.row() ||
               (accessor.row() == other.accessor.row() &&
index 6caf13fd329b77c3e2a0d2f032eeab2d656daf07..c5b8ea394bc8dc9212c8194dd4d7d6c5b28c082f 100644 (file)
@@ -1537,7 +1537,9 @@ MatrixFree<dim,Number>::get_cell_iterator(const unsigned int macro_cell_number,
 
   std::pair<unsigned int,unsigned int> index =
     cell_level_index[macro_cell_number*vectorization_length+vector_number];
+  //typename DoFCellAccessor<DoFHandler<dim>, false >::AccessorData adata(dofh, false);
   return typename DoFHandler<dim>::active_cell_iterator
+         //(&dofh->get_tria(), index.first, index.second, &adata);
          (&dofh->get_tria(), index.first, index.second, dofh);
 }
 
@@ -1567,7 +1569,8 @@ MatrixFree<dim,Number>::get_mg_cell_iterator(const unsigned int macro_cell_numbe
 
   std::pair<unsigned int,unsigned int> index =
     cell_level_index[macro_cell_number*vectorization_length+vector_number];
-  return typename MGDoFHandler<dim>::cell_iterator
+//  typename DoFCellAccessor<DoFHandler<dim>, true >::AccessorData adata(dofh, true);
+  return typename DoFHandler<dim>::cell_iterator
          (&dofh->get_tria(), index.first, index.second, dofh);
 }
 
@@ -1596,8 +1599,10 @@ MatrixFree<dim,Number>::get_hp_cell_iterator(const unsigned int macro_cell_numbe
   const hp::DoFHandler<dim> *dofh = dof_handlers.hp_dof_handler[dof_index];
   std::pair<unsigned int,unsigned int> index =
     cell_level_index[macro_cell_number*vectorization_length+vector_number];
+  //typename DoFCellAccessor<hp::DoFHandler<dim>, false >::AccessorData adata(dofh, false);
   return typename hp::DoFHandler<dim>::cell_iterator
          (&dofh->get_tria(), index.first, index.second, dofh);
+  //(&dofh->get_tria(), index.first, index.second, &adata);
 }
 
 
index be5e69d84fe74e1213202cc7ba70c7ce0b0ae206..9d39e0f5aa01ab502dffc5209d06666a5311afae 100644 (file)
@@ -368,7 +368,6 @@ initialize_dof_handlers (const std::vector<const DoFHandler<dim>*> &dof_handler,
 }
 
 
-
 template <int dim, typename Number>
 void MatrixFree<dim,Number>::
 initialize_dof_handlers (const std::vector<const MGDoFHandler<dim>*> &dof_handler,
index 0863fdc9ca6e29d2710a2e7c2ab20967fb5116dc..cf8543169b46b38125f569e5b0a9df32fd50b586 100644 (file)
@@ -191,10 +191,11 @@ namespace MeshWorker
     /// Set up local block indices
     void set_block_indices ();
     /// Fill index vector with active indices
-    void get_indices(const typename DoFHandler<dim, spacedim>::cell_iterator &c);
+    template <class DHCellIterator>
+    void get_indices(const DHCellIterator &c);
 
     /// Fill index vector with level indices
-    void get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator &c);
+    //void get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator& c);
 
     /// Auxiliary vector
     std::vector<unsigned int> indices_org;
@@ -303,12 +304,31 @@ namespace MeshWorker
   }
 
 
+  template <int dim, int spacedim, typename number>
+  template <class DHCellIterator>
+  inline void
+  DoFInfo<dim,spacedim,number>::get_indices(const DHCellIterator &c)
+  {
+    indices.resize(c->get_fe().dofs_per_cell);
+    if (block_info == 0 || block_info->local().size() == 0)
+      c->dof_indices(indices);
+    else
+      {
+        indices_org.resize(c->get_fe().dofs_per_cell);
+        c->dof_indices(indices_org);
+        set_block_indices();
+      }
+  }
+
+
   template <int dim, int spacedim, typename number>
   template <class DHCellIterator>
   inline void
   DoFInfo<dim,spacedim,number>::reinit(const DHCellIterator &c)
   {
     get_indices(c);
+    level_cell = c->is_level_cell();
+
     cell = static_cast<typename Triangulation<dim,spacedim>::cell_iterator> (c);
     face_number = deal_II_numbers::invalid_unsigned_int;
     sub_number = deal_II_numbers::invalid_unsigned_int;
@@ -343,6 +363,8 @@ namespace MeshWorker
     if ((cell.state() != IteratorState::valid)
         ||  cell != static_cast<typename Triangulation<dim>::cell_iterator> (c))
       get_indices(c);
+    level_cell = c->is_level_cell();
+
     cell = static_cast<typename Triangulation<dim>::cell_iterator> (c);
     set_face(f,n);
 
@@ -379,6 +401,8 @@ namespace MeshWorker
     if (cell.state() != IteratorState::valid
         || cell != static_cast<typename Triangulation<dim>::cell_iterator> (c))
       get_indices(c);
+    level_cell = c->is_level_cell();
+
     cell = static_cast<typename Triangulation<dim>::cell_iterator> (c);
     set_subface(f,n,s);
 
index d84b1d18728c24d31aa88b782ded2d78ccc7aa09..b3eefcfcdd73f1cf7c4311dda37e505dbc549785 100644 (file)
@@ -49,49 +49,6 @@ namespace MeshWorker
     for (unsigned int i=0; i<indices.size(); ++i)
       indices[this->block_info->renumber(i)] = indices_org[i];
   }
-
-
-  template <int dim, int spacedim, typename number>
-  void
-  DoFInfo<dim,spacedim,number>::get_indices(const typename DoFHandler<dim, spacedim>::cell_iterator &c)
-  {
-    if (!c->has_children())
-      {
-        indices.resize(c->get_fe().dofs_per_cell);
-
-        if (block_info == 0 || block_info->local().size() == 0)
-          c->get_dof_indices(indices);
-        else
-          {
-            indices_org.resize(c->get_fe().dofs_per_cell);
-            c->get_dof_indices(indices_org);
-            set_block_indices();
-          }
-      }
-    else
-      indices.resize(0);
-
-    level_cell = false;
-  }
-
-
-  template <int dim, int spacedim, typename number>
-  void
-  DoFInfo<dim,spacedim,number>::get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator &c)
-  {
-    indices.resize(c->get_fe().dofs_per_cell);
-
-    if (block_info == 0 || block_info->local().size() == 0)
-      c->get_mg_dof_indices(indices);
-    else
-      {
-        indices_org.resize(c->get_fe().dofs_per_cell);
-        c->get_mg_dof_indices(indices_org);
-        set_block_indices();
-      }
-    level_cell = true;
-  }
-
 }
 
 
index 15b062bd3bf2d51f449aa7ae984820353488506d..188606252247351b8098552df17e5add07c8a773 100644 (file)
@@ -144,8 +144,7 @@ namespace MeshWorker
           else if (integrate_interior_face)
             {
               // Interior face
-              typename ITERATOR::AccessorType::Container::cell_iterator
-              neighbor = cell->neighbor(face_no);
+              TriaIterator<typename ITERATOR::AccessorType> neighbor = cell->neighbor(face_no);
 
               // Deal with
               // refinement edges
index 49789fb7bbb89ef6ee5ee758fdc56976897bd87f..de6fc83ebf012b93d42c68ee9c09c70f07b7ccc0 100644 (file)
@@ -751,6 +751,8 @@ namespace MeshWorker
     inline void
     MatrixSimple<MATRIX>::assemble(const DOFINFO &info)
     {
+      Assert(!info.level_cell, ExcMessage("Cell may not access level dofs"));
+
       if (local_indices.size() == 0)
         assemble(info.matrix(0,false).matrix, info.indices, info.indices);
       else
@@ -770,6 +772,9 @@ namespace MeshWorker
     inline void
     MatrixSimple<MATRIX>::assemble(const DOFINFO &info1, const DOFINFO &info2)
     {
+      Assert(!info1.level_cell, ExcMessage("Cell may not access level dofs"));
+      Assert(!info2.level_cell, ExcMessage("Cell may not access level dofs"));
+
       if (local_indices.size() == 0)
         {
           assemble(info1.matrix(0,false).matrix, info1.indices, info1.indices);
@@ -1111,6 +1116,7 @@ namespace MeshWorker
     inline void
     MGMatrixSimple<MATRIX>::assemble(const DOFINFO &info)
     {
+      Assert(info.level_cell, ExcMessage("Cell must access level dofs"));
       const unsigned int level = info.cell->level();
 
       if (local_indices.size() == 0)
@@ -1151,6 +1157,8 @@ namespace MeshWorker
     MGMatrixSimple<MATRIX>::assemble(const DOFINFO &info1,
                                      const DOFINFO &info2)
     {
+      Assert(info1.level_cell, ExcMessage("Cell must access level dofs"));
+      Assert(info2.level_cell, ExcMessage("Cell must access level dofs"));
       const unsigned int level1 = info1.cell->level();
       const unsigned int level2 = info2.cell->level();
 
index 095eae0ed29ec034cf74abb1655b47f9c7c050d8..0f953c034b959ed072a22cc289116a609b3aff7d 100644 (file)
 
 DEAL_II_NAMESPACE_OPEN
 
-
-template <int, int> class MGDoFHandler;
 template <typename> class MGLevelObject;
 
-
-
 /*!@addtogroup mg */
 /*@{*/
 
index 8b130d1987680ecf0a7bc6958de88bef28992e08..23ac5d717519c5289f16a22a374934f5bd85905b 100644 (file)
@@ -24,9 +24,6 @@
 
 DEAL_II_NAMESPACE_OPEN
 
-template <int,int> class MGDoFHandler;
-
-
 /*
  * MGSmootherBase is defined in mg_base.h
  */
index 19e30b8957bf907390598258f0c42bc4ca59d900..c442ae7d671a7c3d103236fc2dbd08d6c67a9bd9 100644 (file)
@@ -23,7 +23,6 @@
 DEAL_II_NAMESPACE_OPEN
 
 template <int dim, int spacedim> class DoFHandler;
-template <int dim, int spacedim> class MGDoFHandler;
 template <int dim> struct FunctionMap;
 
 
@@ -48,7 +47,7 @@ public:
    * provided.
    */
   template <int dim, int spacedim>
-  void initialize(const MGDoFHandler<dim,spacedim> &dof);
+  void initialize(const DoFHandler<dim,spacedim> &dof);
 
   /**
    * Fill the internal data
@@ -58,14 +57,9 @@ public:
    * values provided.
    */
   template <int dim, int spacedim>
-  void initialize(const MGDoFHandler<dim,spacedim> &dof,
-                  const typename FunctionMap<dim>::type &function_map,
-                  const ComponentMask &component_mask = ComponentMask());
-
-  template <int dim, int spacedim>
   void initialize(const DoFHandler<dim,spacedim> &dof,
                   const typename FunctionMap<dim>::type &function_map,
-                  const std::vector<bool> &component_mask = std::vector<bool>());
+                  const ComponentMask &component_mask = ComponentMask());
 
   /**
    * Reset the data structures.
@@ -191,7 +185,7 @@ private:
 template <int dim, int spacedim>
 inline
 void
-MGConstrainedDoFs::initialize(const MGDoFHandler<dim,spacedim> &dof)
+MGConstrainedDoFs::initialize(const DoFHandler<dim,spacedim> &dof)
 {
   const unsigned int nlevels = dof.get_tria().n_levels();
   refinement_edge_indices.resize(nlevels);
@@ -213,7 +207,7 @@ template <int dim, int spacedim>
 inline
 void
 MGConstrainedDoFs::initialize(
-  const MGDoFHandler<dim,spacedim> &dof,
+  const DoFHandler<dim,spacedim> &dof,
   const typename FunctionMap<dim>::type &function_map,
   const ComponentMask &component_mask)
 {
@@ -237,32 +231,6 @@ MGConstrainedDoFs::initialize(
 }
 
 
-template <int dim, int spacedim>
-inline
-void
-MGConstrainedDoFs::initialize(
-  const DoFHandler<dim,spacedim> &dof,
-  const typename FunctionMap<dim>::type &function_map,
-  const std::vector<bool> &component_mask)
-{
-  const unsigned int nlevels = dof.get_tria().n_levels();
-  boundary_indices.resize(nlevels);
-  refinement_edge_indices.resize(nlevels);
-  refinement_edge_boundary_indices.resize(nlevels);
-
-  for (unsigned int l=0; l<nlevels; ++l)
-    {
-      boundary_indices[l].clear();
-      refinement_edge_indices[l].resize(dof.n_dofs(l));
-      refinement_edge_boundary_indices[l].resize(dof.n_dofs(l));
-    }
-
-  MGTools::make_boundary_list (dof, function_map, boundary_indices, component_mask);
-  MGTools::extract_inner_interface_dofs (dof, refinement_edge_indices,
-                                         refinement_edge_boundary_indices);
-}
-
-
 inline
 void
 MGConstrainedDoFs::clear()
index 80454911aa5769a1afd6f5ef0f4104e631c8dfc1..1f6b8a5d56c3d8041d37082d970770ce0f5e1742 100644 (file)
 #ifndef __deal2__mg_dof_accessor_h
 #define __deal2__mg_dof_accessor_h
 
-
-#include <deal.II/base/config.h>
 #include <deal.II/dofs/dof_accessor.h>
-#include <deal.II/multigrid/mg_dof_iterator_selector.h>
-
-DEAL_II_NAMESPACE_OPEN
-
-template <int dim, int spacedim> class MGDoFHandler;
-
-template <int structdim, int dim, int spacedim=dim> class MGDoFAccessor;
-
-namespace internal
-{
-  namespace MGDoFHandler
-  {
-    struct Implementation;
-  }
-}
-
-
-/*!@addtogroup mg */
-/*@{*/
-
-
-namespace internal
-{
-  namespace MGDoFAccessor
-  {
-    /**
-     * This is a switch class which only declares a @p typedef. It is meant to
-     * determine which class aMGDoFAccessor class is to be derived
-     * from. By default, <tt>MGDoFAccessor<structdim,dim></tt> derives from
-     * the @p typedef in the general <tt>MGDoFAccessor_Inheritance<structdim,dim></tt>
-     * class, which is <tt>DoFAccessor<structdim,dim></tt>,
-     * but if <tt>structdim==dim</tt>, then the specialization <tt>MGDoFAccessor_Inheritance<dim,dim></tt>
-     * is used which declares its local type to be <tt>DoFCellAccessor<dim></tt>. Therefore,
-     * the inheritance is automatically chosen to be from @p DoFCellAccessor if the
-     * object under consideration has full dimension, i.e. constitutes a cell.
-     *
-     * @author Wolfgang Bangerth, 1999
-     */
-    template <int structdim, int dim, int spacedim>
-    struct Inheritance
-    {
-      /**
-       * Declaration of the @p typedef.
-       * See the full documentation for
-       * more information.
-       */
-      typedef dealii::DoFAccessor<structdim, dealii::DoFHandler<dim,spacedim> > BaseClass;
-    };
-
-
-    /**
-     * This is a switch class which only declares a @p typwdef. It is
-     * meant to determine which class a DoFAccessor class is to be
-     * derived from. By default, DoFAccessor<structdim,dim>
-     * derives from the @p typedef in the general
-     * <tt>DoFAccessor_Inheritance<structdim,dim></tt> class, which is
-     * <tt>TriaAccessor<structdim,dim></tt>, but if
-     * <tt>structdim==dim</tt>, then the specialization
-     * <tt>TriaAccessor<dim,dim></tt> is used which declares its
-     * local type to be <tt>CellAccessor<dim></tt>. Therefore, the
-     * inheritance is automatically chosen to be from @p CellAccessor if
-     * the object under consideration has full dimension, i.e. constitutes
-     * a cell.
-     *
-     * @author Wolfgang Bangerth, 1999
-     */
-    template <int dim, int spacedim>
-    struct Inheritance<dim,dim,spacedim>
-    {
-      /**
-       * Declaration of the @p typedef.
-       * See the full documentation for
-       * more information.
-       */
-      typedef dealii::DoFCellAccessor<dealii::DoFHandler<dim,spacedim> > BaseClass;
-    };
-  }
-}
-
-
-/* -------------------------------------------------------------------------- */
-
-
-
-/**
- * A class that gives access to the degrees of freedom stored in a
- * MGDoFHandler.  Accessors are used to, well, access the data that pertains
- * to edges, faces, and cells of a triangulation. The concept is explained in
- * more detail in connection to @ref Iterators.
- *
- * This class follows mainly the route laid out by the accessor library
- * declared in the triangulation library (TriaAccessor). It enables the user
- * to access the degrees of freedom on lines, quads, or hexes, as well as the
- * multigrid degrees of freedom associated with these objects. The first
- * template argument of this class determines the dimensionality of the object
- * under consideration: 1 for lines, 2 for quads, and 3 for hexes. The second
- * template argument determines the dimensionality of the triangulation to
- * which this object belongs, and the third the dimensionality of the space in
- * which it is embedded.
- *
- * Depending on whether the structural dimension of the object
- * accessed equals the dimension on which the DoF handler object
- * operates, this class is derived from CellAccessor or
- * TriaAccessor. This means that, for example accessors to quads
- * in 2d have access to all the mesh aspects of cells, whereas
- * accessors to quads in 3d can only access things that make sense for
- * faces.
- *
- *
- * <h3>Usage</h3>
- *
- * Usage is best to happen through the typedefs to the various kinds
- * of iterators provided by the MGDoFHandler class,
- * since they are more secure to changes in the class naming and
- * template interface as well as providing easier typing (much less
- * complicated names!).
- *
- *
- * <h3>Inheritance</h3>
- *
- * If the structural dimension given by the first template argument
- * equals the dimension of the MGDoFHandler (given as the second
- * template argument), then we are obviously dealing with cells,
- * rather than lower-dimensional objects. In that case, inheritance is
- * from DoFCellAccessor, to provide access to all the cell specific
- * information afforded by that class. Otherwise, i.e. for
- * lower-dimensional objects, inheritance is from DoFAccessor.
- *
- * There is a MGDoFCellAccessor class that provides the
- * equivalent to the CellAccessor and DoFCellAccessor classes.
- *
- * @ingroup dofs
- * @ingroup Accessors
- * @author Wolfgang Bangerth, 1998, 2006, 2008
- */
-template <int structdim, int dim, int spacedim>
-class MGDoFAccessor : public dealii::internal::MGDoFAccessor::Inheritance<structdim,dim,spacedim>::BaseClass
-{
-public:
-  /**
-   * Declare a typedef to the base
-   * class to make accessing some
-   * of the exception classes
-   * simpler.
-   */
-  typedef
-  typename dealii::internal::MGDoFAccessor::Inheritance<structdim,dim,spacedim>::BaseClass
-  BaseClass;
-
-  /**
-   * A typedef necessary for the
-   * iterator classes.
-   */
-  typedef MGDoFHandler<dim,spacedim> AccessorData;
-
-  /**
-   * The dof handler type used by
-   * this accessor.
-   */
-  typedef MGDoFHandler<dim, spacedim> Container;
-
-  /**
-   * @name Constructors
-   */
-  /**
-   * @{
-   */
-
-  /**
-   * Default constructor. Creates
-   * an object that is not
-   * usable.
-   */
-  MGDoFAccessor ();
-
-  /**
-   * Constructor.
-   */
-  MGDoFAccessor (const Triangulation<dim,spacedim> *tria,
-                 const int                 level,
-                 const int                 index,
-                 const AccessorData       *local_data);
-
-  /**
-   * Conversion constructor. This
-   * constructor exists to make certain
-   * constructs simpler to write in
-   * dimension independent code. For
-   * example, it allows assigning a face
-   * iterator to a line iterator, an
-   * operation that is useful in 2d but
-   * doesn't make any sense in 3d. The
-   * constructor here exists for the
-   * purpose of making the code conform to
-   * C++ but it will unconditionally abort;
-   * in other words, assigning a face
-   * iterator to a line iterator is better
-   * put into an if-statement that checks
-   * that the dimension is two, and assign
-   * to a quad iterator in 3d (an operator
-   * that, without this constructor would
-   * be illegal if we happen to compile for
-   * 2d).
-   */
-  template <int structdim2, int dim2, int spacedim2>
-  MGDoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &);
-
-  /**
-   * Another conversion operator
-   * between objects that don't
-   * make sense, just like the
-   * previous one.
-   */
-  template <int structdim2, int dim2, int spacedim2>
-  MGDoFAccessor (const MGDoFAccessor<structdim2,dim2,spacedim2> &);
-
-  /**
-   * @}
-   */
-
-  /**
-   *  @name Accessing the DoF indices of this object
-   */
-  /**
-   * @{
-   */
-
-  /**
-   * Return the indices of the dofs of this
-   * object in the standard ordering: dofs
-   * on vertex 0, dofs on vertex 1, ...
-   * dofs on line 0, dofs on line 1, ...,
-   * then quads, then hexes.
-   *
-   * It is assumed that the vector already
-   * has the right size beforehand. The
-   * indices refer to the local numbering
-   * for the level this line lives on.
-   */
-  void get_mg_dof_indices (const int level,
-                           std::vector<unsigned int> &dof_indices) const;
-
-  /**
-   * Return the value of the given vector
-   * restricted to the dofs of this
-   * cell in the standard ordering: dofs
-   * on vertex 0, dofs on vertex 1, etc,
-   * dofs on line 0, dofs on line 1, etc,
-   * dofs on quad 0, etc.
-   *
-   * It is assumed that the vector already
-   * has the right size beforehand. The
-   * indices refer to the multilevel
-   * numbering local to the present
-   * level of this cell. The vector shall
-   * therefore have the same number of
-   * entries as there are degrees of
-   * freedom on this level.
-   */
-  template <typename number>
-  void get_mg_dof_values (const int level,
-                          const Vector<number> &values,
-                          Vector<number>       &dof_values) const;
-
-  /**
-   * Return the index of the @p ith
-   * degree on the @p vertexth
-   * vertex for the level this
-   * object lives on.
-   */
-  unsigned int mg_vertex_dof_index (const int level,
-                                    const unsigned int vertex,
-                                    const unsigned int i) const;
-//TODO: This function is broken for faces
-  /**
-   * @todo This function is broken
-   * for faces.
-   *
-   * Return the index of the @p ith
-   * degree of freedom of this line
-   * on the level this line lives
-   * on.
-   */
-  unsigned int mg_dof_index (const int level,
-                             const unsigned int i) const;
-
-  /**
-   * @}
-   */
-
-  /**
-   *  @name Accessing sub-objects
-   */
-  /**
-   * @{
-   */
-
-  /**
-   * Return an iterator to the @p
-   * i-th child.
-   */
-  TriaIterator<MGDoFAccessor<structdim,dim,spacedim> >
-  child (const unsigned int) const;
-
-  /**
-   * Return a pointer to the @p ith line
-   * bounding this @p Hex.
-   */
-  typename dealii::internal::MGDoFHandler::Iterators<dim,spacedim>::line_iterator
-  line (const unsigned int i) const;
-
-  /**
-   * Return a pointer to the @p ith quad
-   * bounding this @p Hex.
-   */
-  typename dealii::internal::MGDoFHandler::Iterators<dim,spacedim>::quad_iterator
-  quad (const unsigned int i) const;
-
-  /**
-   * @}
-   */
-
-  /**
-   * Return a handle on the
-   * DoFHandler object which we
-   * are using.
-   */
-  const MGDoFHandler<dim,spacedim> &
-  get_mg_dof_handler () const;
-
-  /**
-   * Return an iterator pointing to
-   * the the parent.
-   */
-  TriaIterator<MGDoFAccessor<structdim,dim,spacedim> >
-  parent () const;
-
-  /**
-   * Implement the copy operator needed
-   * for the iterator classes.
-   */
-  void copy_from (const MGDoFAccessor &a);
-
-  /**
-   * Implement the copy operator needed
-   * for the iterator classes.
-   */
-  void copy_from (const TriaAccessorBase<structdim,dim,spacedim> &a);
-
-  /**
-   * Exception for child classes
-   */
-  DeclException0 (ExcInvalidObject);
-
-protected:
-  /**
-   * Store the address of the @p MGDoFHandler object
-   * to be accessed.
-   */
-  MGDoFHandler<dim,spacedim> *mg_dof_handler;
-
-  /**
-   * Reset the DoF handler pointer.
-   */
-  void set_mg_dof_handler (MGDoFHandler<dim,spacedim> *dh);
-
-  /**
-   * Set the index of the @p ith degree
-   * on the @p vertexth vertex to @p index
-   * for the level this object lives on.
-   */
-  void set_mg_vertex_dof_index (const int level,
-                                const unsigned int vertex,
-                                const unsigned int i,
-                                const unsigned int index) const;
-
-  /**
-   * Set the index of the @p ith degree
-   * of freedom of this line on the
-   * level this line lives on to @p index.
-   */
-  void set_mg_dof_index (const int level,
-                         const unsigned int i,
-                         const unsigned int index) const;
-
-private:
-  /**
-   *  Copy operator. This is normally used
-   *  in a context like <tt>iterator a,b;
-   *  *a=*b;</tt>. Presumably, the intent
-   *  here is to copy the object pointed to
-   *  by @p b to the object pointed to by
-   *  @p a. However, the result of
-   *  dereferencing an iterator is not an
-   *  object but an accessor; consequently,
-   *  this operation is not useful for
-   *  iterators on triangulations. We
-   *  declare this function here private,
-   *  thus it may not be used from outside.
-   *  Furthermore it is not implemented and
-   *  will give a linker error if used
-   *  anyway.
-   */
-  MGDoFAccessor &
-  operator = (const MGDoFAccessor &da);
-
-  template <int, int> friend class MGDoFHandler;
-  friend struct dealii::internal::MGDoFHandler::Implementation;
-};
-
-
-
-/**
- * Specialization of the general MGDoFAccessor class template for the
- * case of zero-dimensional objects (a vertex) that are the face of a
- * one-dimensional cell in spacedim space dimensions. Since vertices
- * function differently than general faces, this class does a few
- * things differently than the general template, but the interface
- * should look the same.
- *
- * @author Wolfgang Bangerth, 2010
- */
-template <int spacedim>
-class MGDoFAccessor<0,1,spacedim> : public dealii::internal::MGDoFAccessor::Inheritance<0,1,spacedim>::BaseClass
-{
-public:
-  /**
-   * Declare a typedef to the base
-   * class to make accessing some
-   * of the exception classes
-   * simpler.
-   */
-  typedef
-  typename dealii::internal::MGDoFAccessor::Inheritance<0,1,spacedim>::BaseClass
-  BaseClass;
-
-  /**
-   * A typedef necessary for the
-   * iterator classes.
-   */
-  typedef MGDoFHandler<1,spacedim> AccessorData;
-
-  /**
-   * The dof handler type used by
-   * this accessor.
-   */
-  typedef MGDoFHandler<1, spacedim> Container;
-
-  /**
-   * @name Constructors
-   */
-  /**
-   * @{
-   */
-
-  /**
-   * Default constructor. Provides
-   * an accessor that can't be
-   * used.
-   */
-  MGDoFAccessor ();
-
-  /**
-   * Constructor to be used if the
-   * object here refers to a vertex
-   * of a one-dimensional
-   * triangulation, i.e. a face of
-   * the triangulation.
-   *
-   * Since there is no mapping from
-   * vertices to cells, an accessor
-   * object for a point has no way
-   * to figure out whether it is at
-   * the boundary of the domain or
-   * not. Consequently, the second
-   * argument must be passed by the
-   * object that generates this
-   * accessor -- e.g. a 1d cell
-   * that can figure out whether
-   * its left or right vertex are
-   * at the boundary.
-   *
-   * The third argument is the
-   * global index of the vertex we
-   * point to.
-   *
-   * The fourth argument is a
-   * pointer to the MGDoFHandler
-   * object.
-   *
-   * This iterator can only be
-   * called for one-dimensional
-   * triangulations.
-   */
-  MGDoFAccessor (const Triangulation<1,spacedim> *tria,
-                 const typename TriaAccessor<0,1,spacedim>::VertexKind vertex_kind,
-                 const unsigned int    vertex_index,
-                 const MGDoFHandler<1,spacedim> *dof_handler);
-
-  /**
-   * Constructor. This constructor
-   * exists in order to maintain
-   * interface compatibility with
-   * the other accessor
-   * classes. However, it doesn't
-   * do anything useful here and so
-   * may not actually be called.
-   */
-  MGDoFAccessor (const Triangulation<1,spacedim> *tria = 0,
-                 const int = 0,
-                 const int = 0,
-                 const MGDoFHandler<1,spacedim> *dof_handler = 0);
-
-  /**
-   * Conversion constructor. This
-   * constructor exists to make certain
-   * constructs simpler to write in
-   * dimension independent code. For
-   * example, it allows assigning a face
-   * iterator to a line iterator, an
-   * operation that is useful in 2d but
-   * doesn't make any sense in 3d. The
-   * constructor here exists for the
-   * purpose of making the code conform to
-   * C++ but it will unconditionally abort;
-   * in other words, assigning a face
-   * iterator to a line iterator is better
-   * put into an if-statement that checks
-   * that the dimension is two, and assign
-   * to a quad iterator in 3d (an operator
-   * that, without this constructor would
-   * be illegal if we happen to compile for
-   * 2d).
-   */
-  template <int structdim2, int dim2, int spacedim2>
-  MGDoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &);
-
-  /**
-   * Another conversion operator
-   * between objects that don't
-   * make sense, just like the
-   * previous one.
-   */
-  template <int structdim2, int dim2, int spacedim2>
-  MGDoFAccessor (const MGDoFAccessor<structdim2, dim2, spacedim2> &);
-
-
-  /**
-   * Another conversion operator
-   * between objects that don't
-   * make sense, just like the
-   * previous one.
-   */
-  template <int dim2, int spacedim2>
-  MGDoFAccessor (const MGDoFCellAccessor<dim2, spacedim2> &);
-
-protected:
-  /**
-   * Store the address of the @p MGDoFHandler object
-   * to be accessed.
-   */
-  MGDoFHandler<1,spacedim> *mg_dof_handler;
-};
-
-
-
-/* -------------------------------------------------------------------------- */
-
-
-
-/**
- * Grant access to the degrees of freedom on cells, as far as this
- * isn't already covered by the MGDoFAccessor and MGDoFAccessor
- * classes from which the present class is derived. In particular,
- * this function overloads functions from CellAccessor and
- * DoFCellAccessor that return iterators to other objects, such as the
- * face() or neighbor() function. Since the functions in CellAccessor
- * and DoFCellAccessor return iterators into Triangulations and
- * DoFHandlers only, we need to reimplement the functions in this
- * class to make sure we get iterators into MGDoFHandlers instead.
- *
- * @ingroup mg
- * @ingroup Accessors
- * @author Wolfgang Bangerth, 1998, 2006
- */
-template <int dim, int spacedim=dim>
-class MGDoFCellAccessor :  public MGDoFAccessor<dim,dim,spacedim>
-{
-public:
-  typedef MGDoFAccessor<dim,dim,spacedim> BaseClass;
-
-  /**
-   * Type of faces.
-   */
-  typedef
-  TriaIterator< MGDoFAccessor<dim-1,dim,spacedim> >
-  face_iterator;
-  /**
-   * Declare the data type that this accessor
-   * class expects to get passed from the
-   * iterator classes.
-   */
-  typedef typename MGDoFAccessor<dim,dim,spacedim>::AccessorData  AccessorData;
-
-  /**
-   * @name Constructors
-   */
-  /**
-   * @{
-   */
-
-  /**
-   * Constructor
-   */
-  MGDoFCellAccessor (const Triangulation<dim,spacedim> *tria,
-                     const int                 level,
-                     const int                 index,
-                     const AccessorData       *local_data);
-
-  /**
-   * Conversion constructor. This
-   * constructor exists to make certain
-   * constructs simpler to write in
-   * dimension independent code. For
-   * example, it allows assigning a face
-   * iterator to a line iterator, an
-   * operation that is useful in 2d but
-   * doesn't make any sense in 3d. The
-   * constructor here exists for the
-   * purpose of making the code conform to
-   * C++ but it will unconditionally abort;
-   * in other words, assigning a face
-   * iterator to a line iterator is better
-   * put into an if-statement that checks
-   * that the dimension is two, and assign
-   * to a quad iterator in 3d (an operator
-   * that, without this constructor would
-   * be illegal if we happen to compile for
-   * 2d).
-   */
-  template <int structdim2, int dim2, int spacedim2>
-  MGDoFCellAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &);
-
-  /**
-   * Another conversion operator
-   * between objects that don't
-   * make sense, just like the
-   * previous one.
-   */
-  template <int dim2, class DH2>
-  MGDoFCellAccessor (const DoFAccessor<dim2, DH2> &);
-
-  /**
-   * @}
-   */
-
-  /**
-   *  @name Accessing the DoF indices of this object
-   */
-  /**
-   * @{
-   */
-
-  /**
-   * Return the indices of the dofs of this
-   * hex in the standard ordering: dofs
-   * on vertex 0, dofs on vertex 1, etc,
-   * dofs on line 0, dofs on line 1, etc,
-   * dofs on quad 0, etc.
-   *
-   * It is assumed that the vector already
-   * has the right size beforehand. The
-   * indices refer to the local numbering
-   * for the level this hex lives on.
-   */
-  void get_mg_dof_indices (std::vector<unsigned int> &dof_indices) const;
-
-  /**
-   * Return the value of the given vector
-   * restricted to the dofs of this
-   * cell in the standard ordering: dofs
-   * on vertex 0, dofs on vertex 1, etc,
-   * dofs on line 0, dofs on line 1, etc,
-   * dofs on quad 0, etc.
-   *
-   * It is assumed that the vector already
-   * has the right size beforehand. The
-   * indices refer to the multilevel
-   * numbering local to the present
-   * level of this cell. The vector shall
-   * therefore have the same number of
-   * entries as there are degrees of
-   * freedom on this level.
-   */
-  template <typename number>
-  void get_mg_dof_values (const Vector<number> &values,
-                          Vector<number>       &dof_values) const;
-
-  /**
-   * @}
-   */
-
-  /**
-   *  @name Accessing sub-objects and neighbors
-   */
-
-  /**
-   * Return the @p ith neighbor as a MGDoF cell
-   * iterator. This function is needed since
-   * the neighbor function of the base
-   * class returns a cell accessor without
-   * access to the MGDoF data.
-   */
-  TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-  neighbor (const unsigned int) const;
-
-  /**
-   * Return the @p ith child as a MGDoF cell
-   * iterator. This function is needed since
-   * the child function of the base
-   * class returns a cell accessor without
-   * access to the DoF data.
-   */
-  TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-  child (const unsigned int) const;
-
-  /**
-   * Return an iterator to the @p ith face
-   * of this cell.
-   *
-   * This function is not implemented in 1D,
-   * and maps to MGDoFAccessor<2, dim>::line in 2D.
-   */
-  typename dealii::internal::MGDoFHandler::Iterators<dim,spacedim>::face_iterator
-  face (const unsigned int i) const;
-
-  /**
-   * Return the result of the
-   * @p neighbor_child_on_subface
-   * function of the base class,
-   * but convert it so that one can
-   * also access the MGDoF data (the
-   * function in the base class
-   * only returns an iterator with
-   * access to the triangulation
-   * data).
-   */
-  typename dealii::internal::MGDoFHandler::Iterators<dim,spacedim>::cell_iterator
-  neighbor_child_on_subface (const unsigned int face_no,
-                             const unsigned int subface_no) const;
-
-  /**
-   * @}
-   */
-
-  /**
-       * Return the parent as a MGDoF cell
-       * iterator. This function is needed since
-       * the parent function of the base
-       * class returns a cell accessor without
-       * access to the DoF data.
-       */
-  TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-  parent () const;
-};
-
-/*@}*/
-
-// ------------------- template and inline functions -------------
-
-#ifndef DOXYGEN
-
-template <int structdim, int dim, int spacedim>
-template <int structdim2, int dim2, int spacedim2>
-inline
-MGDoFAccessor<structdim,dim,spacedim>::
-MGDoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
-  :
-  BaseClass (0, -1, -1, 0)
-{
-  Assert (false, ExcInvalidObject());
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-template <int structdim2, int dim2, int spacedim2>
-inline
-MGDoFAccessor<structdim,dim,spacedim>::
-MGDoFAccessor (const MGDoFAccessor<structdim2,dim2,spacedim2> &)
-  :
-  BaseClass (0, -1, -1, 0)
-{
-  Assert (false, ExcInvalidObject());
-}
-
-
-
-template <int dim, int spacedim>
-template <int structdim2, int dim2, int spacedim2>
-inline
-MGDoFCellAccessor<dim,spacedim>::
-MGDoFCellAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
-  :
-  BaseClass (0, -1, -1, 0)
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
-
-
-
-template <int dim, int spacedim>
-template <int dim2, class DH>
-inline
-MGDoFCellAccessor<dim,spacedim>::
-MGDoFCellAccessor (const DoFAccessor<dim2,DH> &)
-  :
-  BaseClass (0, -1, -1, 0)
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
-
-
-#endif
-
-
-
-DEAL_II_NAMESPACE_CLOSE
 
 #endif
index a000fd6e9f3eb8ceff50bef356e2d17d379c4e10..e7b872039f030693b4e4bc30c10757343bec9534 100644 (file)
@@ -15,7 +15,7 @@
 
 #include <deal.II/base/config.h>
 #include <deal.II/dofs/dof_handler.h>
-#include <deal.II/multigrid/mg_dof_iterator_selector.h>
+//#include <deal.II/multigrid/mg_dof_iterator_selector.h>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -34,31 +34,33 @@ namespace internal
 
 
 /**
+ * @deprecated All functionality of this class has been moved to
+ * DoFHandler. Thus, this class is only a wrapper left in the library
+ * for compatibility reasons. The use of this class as an argument to
+ * some function templates may also cause linker errors, so for
+ * instance for MGTools::count_dofs_per_block().
+ *
  * This class manages degrees of freedom for a multilevel hierarchy of
  * grids. It does mostly the same as does the @p DoDHandler class,
  * but it uses a separate enumeration of the degrees of freedom on
  * each level. For example, a vertex has several DoF numbers, one for
  * each level of the triangulation on which it exists.
  *
- * At present, multilevel algorithms are not fully functional, so this
- * documentation is still very brief.
- *
  * @todo This class has not yet been implemented for the use in the codimension
  * one case (<tt>spacedim != dim </tt>).
  *
-//TODO:[WB] Extend MGDoFHandler doc
- *
  * @ingroup dofs
- * @author Wolfgang Bangerth, 1998, 1999
+ * @author Wolfgang Bangerth, 1998, 1999 Markus Bürg, Timo Heister, Guido Kanschat, 2012
  */
 template <int dim, int spacedim=dim>
 class MGDoFHandler : public DoFHandler<dim,spacedim>
 {
-  typedef dealii::internal::MGDoFHandler::Iterators<dim,spacedim> IteratorSelector;
+  typedef dealii::internal::DoFHandler::Iterators<DoFHandler<dim,spacedim>, true> IteratorSelector;
 public:
   typedef typename IteratorSelector::CellAccessor cell_accessor;
   typedef typename IteratorSelector::FaceAccessor face_accessor;
 
+  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;
 
@@ -75,29 +77,29 @@ public:
   typedef typename IteratorSelector::active_face_iterator active_face_iterator;
 
   /**
-   * Make the dimension and the space_dimension available
-   * in function templates.
-   */
+  * Make the dimension and the space_dimension available
+  * in function templates.
+  */
   static const unsigned int dimension = dim;
 
   static const unsigned int space_dimension = spacedim;
 
   /**
-   * Default constructor, which
-   * will require a call to
-   * initialize() later to set the Triangulation.
-   */
+  * Default constructor, which
+  * will require a call to
+  * initialize() later to set the Triangulation.
+  */
   MGDoFHandler ();
 
   /**
-   * Constructor. Take @p tria as
-   * the triangulation to work on.
-   */
+  * Constructor. Take @p tria as
+  * the triangulation to work on.
+  */
   MGDoFHandler (const Triangulation<dim, spacedim> &tria);
 
   /**
-   * Destructor
-   */
+  * Destructor
+  */
   virtual ~MGDoFHandler ();
 
   /**
@@ -116,40 +118,6 @@ public:
    */
   virtual void distribute_dofs (const FiniteElement<dim,spacedim> &);
 
-  /**
-   * Clear all data of this object
-   * and call the respective
-   * function of the base class.
-   */
-  virtual void clear ();
-
-  /**
-   * Actually do the renumbering
-   * based on a list of new dof
-   * numbers for all the dofs.
-   *
-   * @p new_numbers is an array of
-   * integers with size equal to
-   * the number of dofs on the
-   * present level. It stores the
-   * new indices after renumbering
-   * in the order of the old
-   * indices.
-   */
-  void renumber_dofs (const unsigned int               level,
-                      const std::vector<unsigned int> &new_numbers);
-
-  /**
-   * Redeclare this function of the
-   * DoFHandler basis class
-   * as otherwise it is hidden from
-   * the function with the same
-   * name, see above.
-   */
-  void renumber_dofs (const std::vector<unsigned int> &new_numbers);
-
-  /*--------------------------------------*/
-
   /**
    *  @name Cell iterator functions
    */
@@ -160,12 +128,6 @@ public:
    */
   cell_iterator        begin       (const unsigned int level = 0) const;
 
-  /**
-   * Iterator to the first active
-   * cell on level @p level.
-   */
-  active_cell_iterator begin_active(const unsigned int level = 0) const;
-
   /**
    * Iterator past the end; this
    * iterator serves for
@@ -184,384 +146,13 @@ public:
    */
   cell_iterator        end (const unsigned int level) const;
 
-  /**
-   * Return an active iterator
-   * which is the first iterator
-   * not on level. If @p level is
-   * the last level, then this
-   * returns <tt>end()</tt>.
-   */
-  active_cell_iterator end_active (const unsigned int level) const;
-
   //@}
 
-
-
-  /**
-   * Return the number of degrees
-   * of freedom on the specified
-   * level.  Included in this
-   * number are those DoFs which
-   * are constrained by hanging
-   * nodes.
-   */
-  unsigned int n_dofs (const unsigned int level) const;
-
-  /**
-   * Redeclare this function of the
-   * DoFHandler basis class
-   * as otherwise it is hidden from
-   * the function with the same
-   * name, see above.
-   */
-  unsigned int n_dofs () const;
-
-  /**
-   * Determine an estimate for the
-   * memory consumption (in bytes)
-   * of this object.
-   *
-   * This function is made virtual,
-   * since a dof handler object
-   * might be accessed through a
-   * pointers to this base class,
-   * although the actual object
-   * might be a derived class.
-   */
-  virtual std::size_t memory_consumption () const;
-
-
-  /**
-   *  Exception
-   */
-  DeclException1 (ExcInvalidLevel,
-                  int,
-                  << "The given level " << arg1
-                  << " is not in the valid range!");
-  /**
-   * Exception
-   */
-  DeclException0 (ExcFacesHaveNoLevel);
-  /**
-   * The triangulation level you
-   * accessed is empty.
-   */
-  DeclException1 (ExcEmptyLevel,
-                  int,
-                  << "You tried to do something on level " << arg1
-                  << ", but this level is empty.");
-
-private:
-
-  /**
-   * We need for each vertex a list
-   * of the degree of freedom
-   * indices on each of the levels
-   * this vertex lives on. Since
-   * most vertices live only on a
-   * few levels, it is not
-   * economical to reserve indices
-   * for all the levels there are;
-   * rather, we create an object
-   * which holds the indices on
-   * those levels only where the
-   * vertex lives. To construct
-   * such an array, it is necessary
-   * to know beforehand which is
-   * the coarsest level the vertex
-   * lives on, how many levels it
-   * lives on and how many dofs
-   * there are on each vertex.  If
-   * we have this information, we
-   * can allocate exactly the
-   * amount of memory which is
-   * needed and need not handle
-   * growing arrays and the like.
-   */
-  class MGVertexDoFs
-  {
-  public:
-
-    /**
-     * Constructor. This one is
-     * empty because it is
-     * difficult to make it
-     * efficient to use
-     * vector<>'s and still
-     * construct the object using
-     * the constructor. Use the
-     * @p init function to
-     * really allocate memory.
-     */
-    MGVertexDoFs ();
-
-    /**
-     * Allocate memory and set
-     * all indices to @p -1.
-     *
-     * If @p coarsest_level is
-     * greater than @p
-     * finest_level, then no
-     * memory is allocated and
-     * the object is left in an
-     * invalid state. This is
-     * used for unused vertices.
-     */
-    void init (const unsigned int coarsest_level,
-               const unsigned int finest_level,
-               const unsigned int dofs_per_vertex);
-
-    /**
-     * Destructor
-     */
-    ~MGVertexDoFs ();
-
-    /**
-     * Assignment operator. Will
-     * throw an exception since
-     * it can't do the work that
-     * @p init is supposed to do.
-     */
-    MGVertexDoFs &operator = (const MGVertexDoFs &vertex);
-
-    /**
-     * Set the index with number
-     * @p dof_number of this
-     * vertex on @p level to the
-     * given index. To compute
-     * the position in the array,
-     * one has to specify how
-     * many dofs per vertex there
-     * are. It is not checked
-     * that the level number is
-     * below the number of the
-     * finest level this vertex
-     * lives on.
-     *
-     * The function is inline, so
-     * should be reasonably fast.
-     */
-    void set_index (const unsigned int level,
-                    const unsigned int dof_number,
-                    const unsigned int dofs_per_vertex,
-                    const unsigned int index);
-
-    /**
-     * Return the index with
-     * number @p dof_number of
-     * this vertex on
-     * @p level. To compute the
-     * position in the array, one
-     * has to specify how many
-     * dofs per vertex there
-     * are. It is not checked
-     * that the level number is
-     * below the number of the
-     * finest level this vertex
-     * lives on.
-     *
-     * The function is inline, so
-     * should be reasonably fast.
-     */
-    unsigned int get_index (const unsigned int level,
-                            const unsigned int dof_number,
-                            const unsigned int dofs_per_vertex) const;
-
-    /**
-     * Return the index of the
-     * coarsest level this vertex
-     * lives on.
-     */
-    unsigned int get_coarsest_level () const;
-
-    /**
-     * Return the index of the
-     * finest level this vertex
-     * lives on.
-     */
-    unsigned int get_finest_level () const;
-
-    /**
-     * Exception.
-     */
-    DeclException0 (ExcNoMemory);
-    /**
-     * Exception.
-     */
-    DeclException1 (ExcInvalidLevel,
-                    int,
-                    << "The given level number " << arg1 << " is outside "
-                    << "the range of levels this vertex lives on.");
-
-  private:
-    /**
-     * Store the coarsest level
-     * this vertex lives on. This
-     * is used as an offset when
-     * accessing the dofs of a
-     * specific level.
-     */
-    unsigned int coarsest_level;
-
-    /**
-     * Finest level this level
-     * lives on.  This is mostly
-     * used for error checking
-     * but can also be accessed
-     * by the function
-     * @p get_finest_level.
-     */
-    unsigned int finest_level;
-
-    /**
-     * Array holding the indices.
-     */
-    unsigned int *indices;
-  };
-
-
-  /**
-   *  Return the @p i-th dof-index. This function calls
-   *  the respective function of DoFObjects.
-   */
-  template <int structdim>
-  unsigned int get_dof_index (const unsigned int       obj_level,
-                              const unsigned int       obj_index,
-                              const unsigned int       fe_index,
-                              const unsigned int       local_index) const;
-  /**
-   *  Set the @p i-th dof-index. This function calls
-   *  the respective function of DoFObjects.
-   */
-  template <int structdim>
-  void set_dof_index (const unsigned int       obj_level,
-                      const unsigned int       obj_index,
-                      const unsigned int       fe_index,
-                      const unsigned int       local_index,
-                      const unsigned int       global_index) const;
-
-
-  /**
-   * Reserve enough space for the
-   * MG dof indices for a given
-   * triangulation.
-   */
-  void reserve_space ();
-
-  /**
-   * Free all used memory.
-   */
-  void clear_space ();
-
-  /**
-   * Space to store the DoF numbers
-   * for the different
-   * levels. Unlike the @p levels
-   * object in the
-   * DoFHandler, these are
-   * not global numbers but rather
-   * are numbers which start from
-   * zero on each level.
-   */
-  std::vector<dealii::internal::DoFHandler::DoFLevel<dim>*>    mg_levels;
-
-  /**
-   * Space to store the DoF numbers
-   * for the faces.
-   */
-  dealii::internal::DoFHandler::DoFFaces<dim>                 *mg_faces;
-
-  /**
-   * For each vertex there is a
-   * list of indices of the degrees
-   * of freedom indices on the
-   * different levels it lives on
-   * and which are these levels.
-   */
-  std::vector<MGVertexDoFs>      mg_vertex_dofs;
-
-  /**
-   * Vectors storing the number of
-   * degrees of freedom on each
-   * level.
-   */
-  std::vector<unsigned int>      mg_used_dofs;
-
-  /**
-   * Make accessor objects friends.
-   */
-  template <int dim1, int dim2, int dim3> friend class MGDoFAccessor;
-  friend struct dealii::internal::MGDoFHandler::Implementation;
 };
 
 /*@}*/
 
-/* ----------------------- Inline functions of MGDoFHandler -------------------*/
-
-template <int dim, int spacedim>
-inline
-unsigned int MGDoFHandler<dim,spacedim>::n_dofs() const
-{
-  return DoFHandler<dim,spacedim>::n_dofs();
-}
-
-
-template <int dim, int spacedim>
-inline
-void MGDoFHandler<dim,spacedim>::renumber_dofs (const std::vector<unsigned int> &new_numbers)
-{
-  return DoFHandler<dim,spacedim>::renumber_dofs (new_numbers);
-}
-
-
-/* ----------------------- Inline functions of MGVertexDoFs -------------------*/
-
-template <int dim, int spacedim>
-inline
-void MGDoFHandler<dim,spacedim>::MGVertexDoFs::set_index  (const unsigned int level,
-                                                           const unsigned int dof_number,
-                                                           const unsigned int dofs_per_vertex,
-                                                           const unsigned int index)
-{
-  Assert ((level >= coarsest_level) && (level <= finest_level),
-          ExcInvalidLevel(level));
-  Assert (dof_number < dofs_per_vertex,
-          ExcIndexRange(dof_number, 0, dofs_per_vertex));
-
-  indices[(level-coarsest_level)*dofs_per_vertex + dof_number] = index;
-}
-
-
-template <int dim, int spacedim>
-inline
-unsigned int
-MGDoFHandler<dim,spacedim>::MGVertexDoFs::get_index  (const unsigned int level,
-                                                      const unsigned int dof_number,
-                                                      const unsigned int dofs_per_vertex) const
-{
-  Assert ((level >= coarsest_level) && (level <= finest_level),
-          ExcInvalidLevel(level));
-  Assert (dof_number < dofs_per_vertex,
-          ExcIndexRange (dof_number, 0, dofs_per_vertex));
-
-  return indices[(level-coarsest_level)*dofs_per_vertex + dof_number];
-}
-
-
-
-template <>
-void MGDoFHandler<1>::renumber_dofs (const unsigned int  level,
-                                     const std::vector<unsigned int>  &new_numbers);
-template <>
-void MGDoFHandler<2>::renumber_dofs (const unsigned int  level,
-                                     const std::vector<unsigned int>  &new_numbers);
-template <>
-void MGDoFHandler<3>::renumber_dofs (const unsigned int  level,
-                                     const std::vector<unsigned int>  &new_numbers);
-
 DEAL_II_NAMESPACE_CLOSE
 
 
-/*----------------------------   mg_dof.h     ---------------------------*/
 #endif
-/*----------------------------   mg_dof.h     ---------------------------*/
index 4a7494b394ede2ba0afe584078b0d15ec79e50af..befb99f9987a9168c15231cf24aab289cc41b005 100644 (file)
@@ -92,6 +92,7 @@ class MGMatrix : public MGMatrixBase<VECTOR>
 {
 public:
   MGMatrix (MGLevelObject<MATRIX> *matrix= 0);
+
   void set_matrix (MGLevelObject<MATRIX> *M);
   virtual void vmult (const unsigned int level,
                       VECTOR &dst,
index af20b243417de3cb3d6c1c7f486101520ec9ebac..6f05959715795481767b7101e01be7d186cdf6c2 100644 (file)
@@ -23,9 +23,6 @@
 
 DEAL_II_NAMESPACE_OPEN
 
-template <int dim, int spacedim> class MGDoFHandler;
-
-
 /*
  * MGSmootherBase is defined in mg_base.h
  */
index 579feeaf306b5db3eb342e5cfc2b368331148ff7..e628e42b0b8d1b4cc2aa0032238a1de35f867de6 100644 (file)
@@ -15,7 +15,7 @@
 #include <deal.II/base/config.h>
 #include <deal.II/base/index_set.h>
 #include <deal.II/dofs/dof_tools.h>
-#include <deal.II/multigrid/mg_dof_handler.h>
+#include <deal.II/dofs/dof_handler.h>
 
 #include <vector>
 #include <set>
@@ -24,7 +24,7 @@
 DEAL_II_NAMESPACE_OPEN
 
 template <class Object> class MGLevelObject;
-template <int dim, int spacedim> class MGDoFHandler;
+template <int dim, int spacedim> class DoFHandler;
 template <typename number> class Vector;
 template <typename number> class SparseMatrix;
 template <typename number> class BlockVector;
@@ -39,11 +39,11 @@ template <typename number> class BlockSparseMatrix;
  * This is a collection of functions operating on, and manipulating
  * the numbers of degrees of freedom in a multilevel triangulation. It
  * is similar in purpose and function to the @p DoFTools class, but
- * operates on @p MGDoFHandler objects instead of DoFHandler
+ * operates levels of DoFHandler
  * objects. See there and the documentation of the member functions
  * for more information.
  *
- * @author Wolfgang Bangerth, Guido Kanschat, 1999 - 2005
+ * @author Wolfgang Bangerth, Guido Kanschat, 1999 - 2005, 2012
  */
 namespace MGTools
 {
@@ -53,7 +53,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  compute_row_length_vector(const MGDoFHandler<dim,spacedim> &dofs,
+  compute_row_length_vector(const DoFHandler<dim,spacedim> &dofs,
                             const unsigned int level,
                             std::vector<unsigned int> &row_lengths,
                             const DoFTools::Coupling flux_couplings = DoFTools::none);
@@ -66,7 +66,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  compute_row_length_vector(const MGDoFHandler<dim,spacedim> &dofs,
+  compute_row_length_vector(const DoFHandler<dim,spacedim> &dofs,
                             const unsigned int level,
                             std::vector<unsigned int> &row_lengths,
                             const Table<2,DoFTools::Coupling> &couplings,
@@ -100,7 +100,7 @@ namespace MGTools
    */
   template <int dim, class SparsityPattern, int spacedim>
   void
-  make_flux_sparsity_pattern (const MGDoFHandler<dim,spacedim> &dof_handler,
+  make_flux_sparsity_pattern (const DoFHandler<dim,spacedim> &dof_handler,
                               SparsityPattern         &sparsity,
                               const unsigned int       level);
 
@@ -116,7 +116,7 @@ namespace MGTools
    */
   template <int dim, class SparsityPattern, int spacedim>
   void
-  make_flux_sparsity_pattern_edge (const MGDoFHandler<dim,spacedim> &dof_handler,
+  make_flux_sparsity_pattern_edge (const DoFHandler<dim,spacedim> &dof_handler,
                                    SparsityPattern         &sparsity,
                                    const unsigned int       level);
   /**
@@ -138,7 +138,7 @@ namespace MGTools
    */
   template <int dim, class SparsityPattern, int spacedim>
   void
-  make_flux_sparsity_pattern (const MGDoFHandler<dim,spacedim> &dof,
+  make_flux_sparsity_pattern (const DoFHandler<dim,spacedim> &dof,
                               SparsityPattern       &sparsity,
                               const unsigned int level,
                               const Table<2,DoFTools::Coupling> &int_mask,
@@ -158,7 +158,7 @@ namespace MGTools
    */
   template <int dim, class SparsityPattern, int spacedim>
   void
-  make_flux_sparsity_pattern_edge (const MGDoFHandler<dim,spacedim> &dof_handler,
+  make_flux_sparsity_pattern_edge (const DoFHandler<dim,spacedim> &dof_handler,
                                    SparsityPattern         &sparsity,
                                    const unsigned int       level,
                                    const Table<2,DoFTools::Coupling> &flux_mask);
@@ -191,7 +191,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  count_dofs_per_component (const MGDoFHandler<dim,spacedim> &mg_dof,
+  count_dofs_per_component (const DoFHandler<dim,spacedim> &mg_dof,
                             std::vector<std::vector<unsigned int> > &result,
                             const bool only_once = false,
                             std::vector<unsigned int> target_component = std::vector<unsigned int>());
@@ -203,7 +203,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  count_dofs_per_component (const MGDoFHandler<dim,spacedim> &mg_dof,
+  count_dofs_per_component (const DoFHandler<dim,spacedim> &mg_dof,
                             std::vector<std::vector<unsigned int> > &result,
                             std::vector<unsigned int> target_component);
 
@@ -231,7 +231,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  make_boundary_list (const MGDoFHandler<dim,spacedim>      &mg_dof,
+  make_boundary_list (const DoFHandler<dim,spacedim>      &mg_dof,
                       const typename FunctionMap<dim>::type &function_map,
                       std::vector<std::set<unsigned int> >  &boundary_indices,
                       const ComponentMask                   &component_mask = ComponentMask());
@@ -243,7 +243,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  make_boundary_list (const MGDoFHandler<dim,spacedim>      &mg_dof,
+  make_boundary_list (const DoFHandler<dim,spacedim>      &mg_dof,
                       const typename FunctionMap<dim>::type &function_map,
                       std::vector<IndexSet>                 &boundary_indices,
                       const ComponentMask               &component_mask = ComponentMask());
@@ -285,7 +285,7 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  extract_inner_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  extract_inner_interface_dofs (const DoFHandler<dim,spacedim> &mg_dof_handler,
                                 std::vector<std::vector<bool> >  &interface_dofs,
                                 std::vector<std::vector<bool> >  &boundary_interface_dofs);
 
@@ -295,12 +295,12 @@ namespace MGTools
    */
   template <int dim, int spacedim>
   void
-  extract_inner_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  extract_inner_interface_dofs (const DoFHandler<dim,spacedim> &mg_dof_handler,
                                 std::vector<std::vector<bool> >  &interface_dofs);
 
   template <int dim, int spacedim>
   void
-  extract_non_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  extract_non_interface_dofs (const DoFHandler<dim,spacedim> &mg_dof_handler,
                               std::vector<std::set<unsigned int> >  &non_interface_dofs);
 }
 
index d1ee97bf270a92e5cf002ce95123992ba24aa1fc..b4117d4ea0861184a774b4ba1de8cc6edb503d4a 100644 (file)
 
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/lac/constraint_matrix.h>
-#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/lac/block_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+
 #include <deal.II/lac/vector_memory.h>
 
 #include <deal.II/multigrid/mg_base.h>
 #include <deal.II/multigrid/mg_constrained_dofs.h>
 #include <deal.II/base/mg_level_object.h>
 
-
-
 #include <deal.II/dofs/dof_handler.h>
 
 #include <deal.II/base/std_cxx1x/shared_ptr.h>
@@ -35,7 +35,32 @@ DEAL_II_NAMESPACE_OPEN
 
 
 template <int dim, int spacedim> class DoFHandler;
-template <int dim, int spacedim> class MGDoFHandler;
+
+namespace internal
+{
+  template <class VECTOR>
+  struct MatrixSelector
+  {
+    typedef ::dealii::SparsityPattern Sparsity;
+    typedef ::dealii::SparseMatrix<typename VECTOR::value_type> Matrix;
+  };
+
+#ifdef DEAL_II_USE_TRILINOS
+  template <>
+  struct MatrixSelector<dealii::TrilinosWrappers::MPI::Vector>
+  {
+    typedef ::dealii::TrilinosWrappers::SparsityPattern Sparsity;
+    typedef ::dealii::TrilinosWrappers::SparseMatrix Matrix;
+  };
+
+  template <>
+  struct MatrixSelector<dealii::TrilinosWrappers::Vector>
+  {
+    typedef ::dealii::TrilinosWrappers::SparsityPattern Sparsity;
+    typedef ::dealii::TrilinosWrappers::SparseMatrix Matrix;
+  };
+#endif
+}
 
 /*
  * MGTransferBase is defined in mg_base.h
@@ -54,7 +79,8 @@ template <int dim, int spacedim> class MGDoFHandler;
  * See MGTransferBase to find out which of the transfer classes
  * is best for your needs.
  *
- * @author Wolfgang Bangerth, Guido Kanschat, 1999-2004
+ * @author Wolfgang Bangerth, Guido Kanschat
+ * @date 1999, 2000, 2001, 2002, 2003, 2004, 2012
  */
 template <class VECTOR>
 class MGTransferPrebuilt : public MGTransferBase<VECTOR>
@@ -82,10 +108,7 @@ public:
    * matrices for each level.
    */
   template <int dim, int spacedim>
-  void build_matrices (const MGDoFHandler<dim,spacedim> &mg_dof);
-
-  template <int dim, int spacedim>
-  void build_matrices (const DoFHandler<dim,spacedim> &dof_handler);
+  void build_matrices (const DoFHandler<dim,spacedim> &mg_dof);
 
   virtual void prolongate (const unsigned int    to_level,
                            VECTOR       &dst,
@@ -103,13 +126,7 @@ public:
    */
   template <int dim, class InVector, int spacedim>
   void
-  copy_to_mg (const MGDoFHandler<dim,spacedim> &mg_dof,
-              MGLevelObject<VECTOR> &dst,
-              const InVector &src) const;
-
-  template <int dim, class InVector, int spacedim>
-  void
-  copy_to_mg (const DoFHandler<dim,spacedim> &dof_handler,
+  copy_to_mg (const DoFHandler<dim,spacedim> &mg_dof,
               MGLevelObject<VECTOR> &dst,
               const InVector &src) const;
 
@@ -127,13 +144,7 @@ public:
    */
   template <int dim, class OutVector, int spacedim>
   void
-  copy_from_mg (const MGDoFHandler<dim,spacedim> &mg_dof,
-                OutVector &dst,
-                const MGLevelObject<VECTOR> &src) const;
-
-  template <int dim, class OutVector, int spacedim>
-  void
-  copy_from_mg (const DoFHandler<dim,spacedim> &dof_handler,
+  copy_from_mg (const DoFHandler<dim,spacedim> &mg_dof,
                 OutVector &dst,
                 const MGLevelObject<VECTOR> &src) const;
 
@@ -147,13 +158,7 @@ public:
    */
   template <int dim, class OutVector, int spacedim>
   void
-  copy_from_mg_add (const MGDoFHandler<dim,spacedim> &mg_dof,
-                    OutVector &dst,
-                    const MGLevelObject<VECTOR> &src) const;
-
-  template <int dim, class OutVector, int spacedim>
-  void
-  copy_from_mg_add (const DoFHandler<dim,spacedim> &dof_handler,
+  copy_from_mg_add (const DoFHandler<dim,spacedim> &mg_dof,
                     OutVector &dst,
                     const MGLevelObject<VECTOR> &src) const;
 
@@ -219,7 +224,7 @@ private:
    * Sparsity patterns for transfer
    * matrices.
    */
-  std::vector<std_cxx1x::shared_ptr<SparsityPattern> >   prolongation_sparsities;
+  std::vector<std_cxx1x::shared_ptr<typename internal::MatrixSelector<VECTOR>::Sparsity> >   prolongation_sparsities;
 
   /**
    * The actual prolongation matrix.
@@ -229,7 +234,7 @@ private:
    * while row indices belong to the
    * child cell, i.e. the fine level.
    */
-  std::vector<std_cxx1x::shared_ptr<SparseMatrix<double> > > prolongation_matrices;
+  std::vector<std_cxx1x::shared_ptr<typename internal::MatrixSelector<VECTOR>::Matrix> > prolongation_matrices;
 
   /**
    * Mapping for the
index 2950fe2c3c3c4a9617966fdcb79553611ef22585..9fac66fbf53f2987dccab03770dcf7a56140dae0 100644 (file)
@@ -13,6 +13,7 @@
 #ifndef __deal2__mg_transfer_templates_h
 #define __deal2__mg_transfer_templates_h
 
+#include <deal.II/lac/trilinos_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/grid/tria_iterator.h>
 #include <deal.II/fe/fe.h>
@@ -40,25 +41,10 @@ namespace
    * the target_component is added
    * here but is not used.
    */
-  template <int dim, typename number, int spacedim>
-  void
-  reinit_vector (const dealii::MGDoFHandler<dim,spacedim> &mg_dof,
-                 std::vector<unsigned int> ,
-                 MGLevelObject<dealii::Vector<number> > &v)
-  {
-    for (unsigned int level=v.get_minlevel();
-         level<=v.get_maxlevel(); ++level)
-      {
-        unsigned int n = mg_dof.n_dofs (level);
-        v[level].reinit(n);
-      }
-
-  }
-
   template <int dim, typename number, int spacedim>
   void
   reinit_vector (const dealii::DoFHandler<dim,spacedim> &mg_dof,
-                 std::vector<unsigned int> ,
+                 const std::vector<unsigned int> &,
                  MGLevelObject<dealii::Vector<number> > &v)
   {
     for (unsigned int level=v.get_minlevel();
@@ -70,7 +56,6 @@ namespace
 
   }
 
-
   /**
    * Adjust vectors on all levels to
    * correct size.  Here, we just
@@ -83,7 +68,7 @@ namespace
    */
   template <int dim, typename number, int spacedim>
   void
-  reinit_vector (const dealii::MGDoFHandler<dim,spacedim> &mg_dof,
+  reinit_vector (const dealii::DoFHandler<dim,spacedim> &mg_dof,
                  std::vector<unsigned int> target_component,
                  MGLevelObject<BlockVector<number> > &v)
   {
@@ -116,40 +101,33 @@ namespace
       }
   }
 
-  template <int dim, typename number, int spacedim>
+#ifdef DEAL_II_USE_TRILINOS
+  /**
+   * Adjust vectors on all levels to
+   * correct size.  Here, we just
+   * count the numbers of degrees
+   * of freedom on each level and
+   * @p reinit each level vector
+   * to this length.
+   */
+  template <int dim, int spacedim>
   void
   reinit_vector (const dealii::DoFHandler<dim,spacedim> &mg_dof,
-                 std::vector<unsigned int> target_component,
-                 MGLevelObject<BlockVector<number> > &v)
+                 const std::vector<unsigned int> &,
+                 MGLevelObject<TrilinosWrappers::MPI::Vector> &v)
   {
-    const unsigned int n_blocks = mg_dof.get_fe().n_blocks();
-    if (target_component.size()==0)
-      {
-        target_component.resize(n_blocks);
-        for (unsigned int i=0; i<n_blocks; ++i)
-          target_component[i] = i;
-      }
-    Assert(target_component.size()==n_blocks,
-           ExcDimensionMismatch(target_component.size(),n_blocks));
-    const unsigned int max_block
-      = *std::max_element (target_component.begin(),
-                           target_component.end());
-    const unsigned int n_target_blocks = max_block + 1;
-
-    std::vector<std::vector<unsigned int> >
-    ndofs(mg_dof.get_tria().n_levels(),
-          std::vector<unsigned int>(n_target_blocks));
-    MGTools::count_dofs_per_block (mg_dof, ndofs, target_component);
+    const dealii::parallel::distributed::Triangulation<dim,spacedim> *tria =
+      (dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>
+       (&mg_dof.get_tria()));
+    AssertThrow(tria!=NULL, ExcMessage("multigrid with Trilinos vectors only works with distributed Triangulation!"));
 
     for (unsigned int level=v.get_minlevel();
          level<=v.get_maxlevel(); ++level)
       {
-        v[level].reinit(n_target_blocks);
-        for (unsigned int b=0; b<n_target_blocks; ++b)
-          v[level].block(b).reinit(ndofs[level][b]);
-        v[level].collect_sizes();
+        v[level].reinit(mg_dof.locally_owned_mg_dofs(level), tria->get_communicator());
       }
   }
+#endif
 }
 
 
@@ -163,7 +141,7 @@ template <class VECTOR>
 template <int dim, class InVector, int spacedim>
 void
 MGTransferPrebuilt<VECTOR>::copy_to_mg (
-  const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  const DoFHandler<dim,spacedim> &mg_dof_handler,
   MGLevelObject<VECTOR> &dst,
   const InVector &src) const
 {
@@ -195,46 +173,11 @@ MGTransferPrebuilt<VECTOR>::copy_to_mg (
 
 
 
-template <class VECTOR>
-template <int dim, class InVector, int spacedim>
-void
-MGTransferPrebuilt<VECTOR>::copy_to_mg (
-  const DoFHandler<dim,spacedim> &dof_handler,
-  MGLevelObject<VECTOR> &dst,
-  const InVector &src) const
-{
-  reinit_vector(dof_handler, component_to_block_map, dst);
-  bool first = true;
-  for (unsigned int level=dof_handler.get_tria().n_levels(); level != 0;)
-    {
-      --level;
-      VECTOR &dst_level = dst[level];
-
-      typedef std::vector<std::pair<unsigned int, unsigned int> >::const_iterator IT;
-      for (IT i= copy_indices[level].begin();
-           i != copy_indices[level].end(); ++i)
-        dst_level(i->second) = src(i->first);
-
-      // For non-DG: degrees of
-      // freedom in the refinement
-      // face may need special
-      // attention, since they belong
-      // to the coarse level, but
-      // have fine level basis
-      // functions
-      if (!first)
-        restrict_and_add (level+1, dst[level], dst[level+1]);
-      first = false;
-    }
-}
-
-
-
 template <class VECTOR>
 template <int dim, class OutVector, int spacedim>
 void
 MGTransferPrebuilt<VECTOR>::copy_from_mg(
-  const MGDoFHandler<dim,spacedim>       &mg_dof_handler,
+  const DoFHandler<dim,spacedim>       &mg_dof_handler,
   OutVector                     &dst,
   const MGLevelObject<VECTOR> &src) const
 {
@@ -250,42 +193,15 @@ MGTransferPrebuilt<VECTOR>::copy_from_mg(
     {
       typedef std::vector<std::pair<unsigned int, unsigned int> >::const_iterator IT;
 
-      for (IT i= copy_indices[level].begin();
-           i != copy_indices[level].end(); ++i)
-        dst(i->first) = src[level](i->second);
-    }
-  if (constraints != 0)
-    constraints->condense(dst);
-}
-
-
-
-template <class VECTOR>
-template <int dim, class OutVector, int spacedim>
-void
-MGTransferPrebuilt<VECTOR>::copy_from_mg(
-  const DoFHandler<dim,spacedim> &dof_handler,
-  OutVector                     &dst,
-  const MGLevelObject<VECTOR> &src) const
-{
-  // For non-DG: degrees of
-  // freedom in the refinement
-  // face may need special
-  // attention, since they belong
-  // to the coarse level, but
-  // have fine level basis
-  // functions
-  dst = 0;
-  for (unsigned int level=0; level<dof_handler.get_tria().n_levels(); ++level)
-    {
-      typedef std::vector<std::pair<unsigned int, unsigned int> >::const_iterator IT;
-
-      for (IT i= copy_indices[level].begin();
-           i != copy_indices[level].end(); ++i)
-        dst(i->first) = src[level](i->second);
+      if (constraints == 0)
+        for (IT i= copy_indices[level].begin();
+             i != copy_indices[level].end(); ++i)
+          dst(i->first) = src[level](i->second);
+      else
+        for (IT i= copy_indices[level].begin();
+             i != copy_indices[level].end(); ++i)
+          constraints->distribute_local_to_global(i->first, src[level](i->second), dst);
     }
-  if (constraints != 0)
-    constraints->condense(dst);
 }
 
 
@@ -294,7 +210,7 @@ template <class VECTOR>
 template <int dim, class OutVector, int spacedim>
 void
 MGTransferPrebuilt<VECTOR>::copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  const DoFHandler<dim,spacedim> &mg_dof_handler,
   OutVector                            &dst,
   const MGLevelObject<VECTOR> &src) const
 {
@@ -316,32 +232,6 @@ MGTransferPrebuilt<VECTOR>::copy_from_mg_add (
 
 
 
-template <class VECTOR>
-template <int dim, class OutVector, int spacedim>
-void
-MGTransferPrebuilt<VECTOR>::copy_from_mg_add (
-  const DoFHandler<dim,spacedim> &dof_handler,
-  OutVector                            &dst,
-  const MGLevelObject<VECTOR> &src) const
-{
-  // For non-DG: degrees of
-  // freedom in the refinement
-  // face may need special
-  // attention, since they belong
-  // to the coarse level, but
-  // have fine level basis
-  // functions
-  for (unsigned int level=0; level<dof_handler.get_tria().n_levels(); ++level)
-    {
-      typedef std::vector<std::pair<unsigned int, unsigned int> >::const_iterator IT;
-      for (IT i= copy_indices[level].begin();
-           i != copy_indices[level].end(); ++i)
-        dst(i->first) += src[level](i->second);
-    }
-}
-
-
-
 template <class VECTOR>
 void
 MGTransferPrebuilt<VECTOR>::
index c9a532967cf8f8bc8504eee5099acbc68359a903..c348a24308371cc9bb506595e7ec30f3423bfebc 100644 (file)
@@ -34,7 +34,7 @@
 DEAL_II_NAMESPACE_OPEN
 
 
-template <int dim, int spacedim> class MGDoFHandler;
+template <int dim, int spacedim> class DoFHandler;
 
 /*
  * MGTransferBase is defined in mg_base.h
@@ -88,7 +88,7 @@ protected:
    */
   template <int dim, int spacedim>
   void build_matrices (const DoFHandler<dim,spacedim> &dof,
-                       const MGDoFHandler<dim,spacedim> &mg_dof);
+                       const DoFHandler<dim,spacedim> &mg_dof);
 
   /**
    * Flag of selected blocks.
@@ -237,7 +237,7 @@ public:
    */
   template<int dim, int spacedim>
   void build_matrices (const DoFHandler<dim,spacedim> &dof,
-                       const MGDoFHandler<dim,spacedim> &mg_dof,
+                       const DoFHandler<dim,spacedim> &mg_dof,
                        const std::vector<bool> &selected);
 
   virtual void prolongate (const unsigned int    to_level,
@@ -265,7 +265,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_to_mg (const MGDoFHandler<dim,spacedim> &mg_dof,
+  copy_to_mg (const DoFHandler<dim,spacedim> &mg_dof,
               MGLevelObject<BlockVector<number> > &dst,
               const BlockVector<number2> &src) const;
 
@@ -280,7 +280,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg (const MGDoFHandler<dim,spacedim> &mg_dof,
+  copy_from_mg (const DoFHandler<dim,spacedim> &mg_dof,
                 BlockVector<number2> &dst,
                 const MGLevelObject<BlockVector<number> > &src) const;
 
@@ -294,7 +294,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg_add (const MGDoFHandler<dim,spacedim> &mg_dof,
+  copy_from_mg_add (const DoFHandler<dim,spacedim> &mg_dof,
                     BlockVector<number2> &dst,
                     const MGLevelObject<BlockVector<number> > &src) const;
 
@@ -375,7 +375,7 @@ public:
    */
   template<int dim, int spacedim>
   void build_matrices (const DoFHandler<dim,spacedim> &dof,
-                       const MGDoFHandler<dim,spacedim> &mg_dof,
+                       const DoFHandler<dim,spacedim> &mg_dof,
                        unsigned int selected);
 
   /**
@@ -399,7 +399,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_to_mg (const MGDoFHandler<dim,spacedim>        &mg_dof,
+  copy_to_mg (const DoFHandler<dim,spacedim>        &mg_dof,
               MGLevelObject<Vector<number> > &dst,
               const Vector<number2>          &src) const;
 
@@ -414,7 +414,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg (const DoFHandler<dim,spacedim>              &mg_dof,
                 Vector<number2>                      &dst,
                 const MGLevelObject<Vector<number> > &src) const;
 
@@ -428,7 +428,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg_add (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg_add (const DoFHandler<dim,spacedim>              &mg_dof,
                     Vector<number2>                      &dst,
                     const MGLevelObject<Vector<number> > &src) const;
 
@@ -440,7 +440,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_to_mg (const MGDoFHandler<dim,spacedim>        &mg_dof,
+  copy_to_mg (const DoFHandler<dim,spacedim>        &mg_dof,
               MGLevelObject<Vector<number> > &dst,
               const BlockVector<number2>     &src) const;
 
@@ -456,7 +456,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg (const DoFHandler<dim,spacedim>              &mg_dof,
                 BlockVector<number2>                 &dst,
                 const MGLevelObject<Vector<number> > &src) const;
 
@@ -470,7 +470,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg_add (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg_add (const DoFHandler<dim,spacedim>              &mg_dof,
                     BlockVector<number2>                 &dst,
                     const MGLevelObject<Vector<number> > &src) const;
 
@@ -486,7 +486,7 @@ private:
    */
   template <int dim, class OutVector, int spacedim>
   void
-  do_copy_from_mg (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  do_copy_from_mg (const DoFHandler<dim,spacedim>              &mg_dof,
                    OutVector                            &dst,
                    const MGLevelObject<Vector<number> > &src,
                    const unsigned int offset) const;
@@ -497,7 +497,7 @@ private:
    */
   template <int dim, class OutVector, int spacedim>
   void
-  do_copy_from_mg_add (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  do_copy_from_mg_add (const DoFHandler<dim,spacedim>              &mg_dof,
                        OutVector                            &dst,
                        const MGLevelObject<Vector<number> > &src,
                        const unsigned int offset) const;
@@ -508,7 +508,7 @@ private:
    */
   template <int dim, class InVector, int spacedim>
   void
-  do_copy_to_mg (const MGDoFHandler<dim,spacedim>        &mg_dof,
+  do_copy_to_mg (const DoFHandler<dim,spacedim>        &mg_dof,
                  MGLevelObject<Vector<number> > &dst,
                  const InVector                 &src,
                  const unsigned int              offset) const;
index 376ca567e07586e0d8662efa492c2aec76304afe..605711829fd1c4e4f56c459295171d16debc07be 100644 (file)
@@ -38,7 +38,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlockSelect<number>::copy_from_mg (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   BlockVector<number2>                 &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -54,7 +54,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlockSelect<number>::copy_from_mg (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   Vector<number2>                      &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -70,7 +70,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlockSelect<number>::copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   BlockVector<number2>                 &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -86,7 +86,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlockSelect<number>::copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   Vector<number2>                      &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -114,7 +114,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlock<number>::copy_from_mg (
-  const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  const DoFHandler<dim,spacedim> &mg_dof_handler,
   BlockVector<number2> &dst,
   const MGLevelObject<BlockVector<number> > &src) const
 {
@@ -132,7 +132,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlock<number>::copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  const DoFHandler<dim,spacedim> &mg_dof_handler,
   BlockVector<number2> &dst,
   const MGLevelObject<BlockVector<number> > &src) const
 {
index 24c61a0da29f8fdc2917ea295b38df91d2202bcf..15a3d368f21f40a2bd77d80278cf12217cbeec56 100644 (file)
@@ -34,7 +34,7 @@
 DEAL_II_NAMESPACE_OPEN
 
 
-template <int dim, int spacedim> class MGDoFHandler;
+template <int dim, int spacedim> class DoFHandler;
 
 /*
  * MGTransferBase is defined in mg_base.h
@@ -80,7 +80,7 @@ protected:
    */
   template <int dim, int spacedim>
   void build_matrices (const DoFHandler<dim,spacedim> &dof,
-                       const MGDoFHandler<dim,spacedim> &mg_dof);
+                       const DoFHandler<dim,spacedim> &mg_dof);
 
   /**
    * Flag of selected components.
@@ -261,7 +261,7 @@ public:
    */
   template <int dim, int spacedim>
   void build_matrices (const DoFHandler<dim,spacedim> &dof,
-                       const MGDoFHandler<dim,spacedim> &mg_dof,
+                       const DoFHandler<dim,spacedim> &mg_dof,
                        unsigned int selected,
                        unsigned int mg_selected,
                        const std::vector<unsigned int> &target_component
@@ -293,7 +293,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_to_mg (const MGDoFHandler<dim,spacedim>        &mg_dof,
+  copy_to_mg (const DoFHandler<dim,spacedim>        &mg_dof,
               MGLevelObject<Vector<number> > &dst,
               const Vector<number2>          &src) const;
 
@@ -308,7 +308,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg (const DoFHandler<dim,spacedim>              &mg_dof,
                 Vector<number2>                      &dst,
                 const MGLevelObject<Vector<number> > &src) const;
 
@@ -322,7 +322,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg_add (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg_add (const DoFHandler<dim,spacedim>              &mg_dof,
                     Vector<number2>                      &dst,
                     const MGLevelObject<Vector<number> > &src) const;
 
@@ -332,7 +332,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_to_mg (const MGDoFHandler<dim,spacedim>        &mg_dof,
+  copy_to_mg (const DoFHandler<dim,spacedim>        &mg_dof,
               MGLevelObject<Vector<number> > &dst,
               const BlockVector<number2>     &src) const;
 
@@ -348,7 +348,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg (const DoFHandler<dim,spacedim>              &mg_dof,
                 BlockVector<number2>                 &dst,
                 const MGLevelObject<Vector<number> > &src) const;
 
@@ -362,7 +362,7 @@ public:
    */
   template <int dim, typename number2, int spacedim>
   void
-  copy_from_mg_add (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  copy_from_mg_add (const DoFHandler<dim,spacedim>              &mg_dof,
                     BlockVector<number2>                 &dst,
                     const MGLevelObject<Vector<number> > &src) const;
 
@@ -378,7 +378,7 @@ private:
    */
   template <int dim, class OutVector, int spacedim>
   void
-  do_copy_from_mg (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  do_copy_from_mg (const DoFHandler<dim,spacedim>              &mg_dof,
                    OutVector                            &dst,
                    const MGLevelObject<Vector<number> > &src) const;
 
@@ -388,7 +388,7 @@ private:
    */
   template <int dim, class OutVector, int spacedim>
   void
-  do_copy_from_mg_add (const MGDoFHandler<dim,spacedim>              &mg_dof,
+  do_copy_from_mg_add (const DoFHandler<dim,spacedim>              &mg_dof,
                        OutVector                            &dst,
                        const MGLevelObject<Vector<number> > &src) const;
 
@@ -398,7 +398,7 @@ private:
    */
   template <int dim, class InVector, int spacedim>
   void
-  do_copy_to_mg (const MGDoFHandler<dim,spacedim>        &mg_dof,
+  do_copy_to_mg (const DoFHandler<dim,spacedim>        &mg_dof,
                  MGLevelObject<Vector<number> > &dst,
                  const InVector                 &src) const;
   /**
index 68dda7dddc0a3778b72e1f4b86b6e6ef5b38001e..2bfc1c80903b262eaa010899b07fec81f7a8738e 100644 (file)
@@ -38,7 +38,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferSelect<number>::copy_to_mg (
-  const MGDoFHandler<dim,spacedim>        &mg_dof_handler,
+  const DoFHandler<dim,spacedim>        &mg_dof_handler,
   MGLevelObject<Vector<number> > &dst,
   const BlockVector<number2>     &src) const
 {
@@ -51,7 +51,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferSelect<number>::copy_to_mg (
-  const MGDoFHandler<dim,spacedim>        &mg_dof_handler,
+  const DoFHandler<dim,spacedim>        &mg_dof_handler,
   MGLevelObject<Vector<number> > &dst,
   const Vector<number2>          &src) const
 {
@@ -64,7 +64,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferSelect<number>::copy_from_mg (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   BlockVector<number2>                 &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -81,7 +81,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferSelect<number>::copy_from_mg (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   Vector<number2>                      &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -118,7 +118,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferSelect<number>::copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   BlockVector<number2>                 &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -131,7 +131,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferSelect<number>::copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   Vector<number2>                      &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -144,7 +144,7 @@ template <typename number>
 template <int dim, class OutVector, int spacedim>
 void
 MGTransferSelect<number>::do_copy_from_mg (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   OutVector                            &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -154,9 +154,9 @@ MGTransferSelect<number>::do_copy_from_mg (
 //  std::vector<unsigned int> global_dof_indices (dofs_per_cell);
 //  std::vector<unsigned int> level_dof_indices (dofs_per_cell);
 
-  typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+  typename DoFHandler<dim,spacedim>::active_cell_iterator
   level_cell = mg_dof_handler.begin_active();
-  const typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+  const typename DoFHandler<dim,spacedim>::active_cell_iterator
   endc = mg_dof_handler.end();
 
   // traverse all cells and copy the
@@ -181,7 +181,7 @@ template <typename number>
 template <int dim, class OutVector, int spacedim>
 void
 MGTransferSelect<number>::do_copy_from_mg_add (
-  const MGDoFHandler<dim,spacedim>              &mg_dof_handler,
+  const DoFHandler<dim,spacedim>              &mg_dof_handler,
   OutVector                            &dst,
   const MGLevelObject<Vector<number> > &src) const
 {
@@ -191,9 +191,9 @@ MGTransferSelect<number>::do_copy_from_mg_add (
   std::vector<unsigned int> global_dof_indices (dofs_per_cell);
   std::vector<unsigned int> level_dof_indices (dofs_per_cell);
 
-  typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+  typename DoFHandler<dim,spacedim>::active_cell_iterator
   level_cell = mg_dof_handler.begin_active();
-  const typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+  const typename DoFHandler<dim,spacedim>::active_cell_iterator
   endc = mg_dof_handler.end();
 
   // traverse all cells and copy the
index afbf957d29389cff1c26969d72bc75decc7cc62e..04692f7996d1819f21e29e55298f000cd8445502 100644 (file)
@@ -82,7 +82,7 @@ public:
 
   /**
    * Constructor. The
-   * MGDoFHandler is used to
+   * DoFHandler is used to
    * determine the highest possible
    * level. <tt>transfer</tt> is an
    * object performing prolongation
@@ -97,15 +97,6 @@ public:
    * this type as late as possible.
    */
   template <int dim>
-  Multigrid(const MGDoFHandler<dim> &mg_dof_handler,
-            const MGMatrixBase<VECTOR> &matrix,
-            const MGCoarseGridBase<VECTOR> &coarse,
-            const MGTransferBase<VECTOR> &transfer,
-            const MGSmootherBase<VECTOR> &pre_smooth,
-            const MGSmootherBase<VECTOR> &post_smooth,
-            Cycle cycle = v_cycle);
-
-  template <int dim>
   Multigrid(const DoFHandler<dim> &mg_dof_handler,
             const MGMatrixBase<VECTOR> &matrix,
             const MGCoarseGridBase<VECTOR> &coarse,
@@ -116,7 +107,7 @@ public:
 
   /**
    * Experimental constructor for
-   * cases in which no MGDoFHandler
+   * cases in which no DoFHandler
    * is available.
    *
    * @warning Not intended for general use.
@@ -576,7 +567,7 @@ public:
 
 private:
   /**
-   * Associated @p MGDoFHandler.
+   * Associated @p DoFHandler.
    */
   SmartPointer<const DoFHandler<dim>,PreconditionMG<dim,VECTOR,TRANSFER> > dof_handler;
 
@@ -599,7 +590,7 @@ private:
 
 template <class VECTOR>
 template <int dim>
-Multigrid<VECTOR>::Multigrid (const MGDoFHandler<dim> &mg_dof_handler,
+Multigrid<VECTOR>::Multigrid (const DoFHandler<dim> &mg_dof_handler,
                               const MGMatrixBase<VECTOR> &matrix,
                               const MGCoarseGridBase<VECTOR> &coarse,
                               const MGTransferBase<VECTOR> &transfer,
@@ -625,34 +616,6 @@ Multigrid<VECTOR>::Multigrid (const MGDoFHandler<dim> &mg_dof_handler,
 {}
 
 
-template <class VECTOR>
-template <int dim>
-Multigrid<VECTOR>::Multigrid (const DoFHandler<dim> &dof_handler,
-                              const MGMatrixBase<VECTOR> &matrix,
-                              const MGCoarseGridBase<VECTOR> &coarse,
-                              const MGTransferBase<VECTOR> &transfer,
-                              const MGSmootherBase<VECTOR> &pre_smooth,
-                              const MGSmootherBase<VECTOR> &post_smooth,
-                              Cycle                         cycle)
-  :
-  cycle_type(cycle),
-  minlevel(0),
-  maxlevel(dof_handler.get_tria().n_levels()-1),
-  defect(minlevel,maxlevel),
-  solution(minlevel,maxlevel),
-  t(minlevel,maxlevel),
-  defect2(minlevel,maxlevel),
-  matrix(&matrix, typeid(*this).name()),
-  coarse(&coarse, typeid(*this).name()),
-  transfer(&transfer, typeid(*this).name()),
-  pre_smooth(&pre_smooth, typeid(*this).name()),
-  post_smooth(&post_smooth, typeid(*this).name()),
-  edge_down(0, typeid(*this).name()),
-  edge_up(0, typeid(*this).name()),
-  debug(0)
-{}
-
-
 
 template <class VECTOR>
 inline
index d65507f9562f4b80bfb0f88a121d423229dcfda1..80296c40195b0f7bf36270bd5fe63a5d452d1d8a 100644 (file)
@@ -19,7 +19,7 @@ default all: debug optimized
 # largest compile jobs first so that 'make -j N' saturates many processors
 # also towards the end of compiling (e.g. numerics/vectors.cc takes several
 # minutes to compile...)
-all-dirs      := numerics fe dofs lac base grid hp multigrid distributed
+all-dirs      := dofs numerics fe lac base grid hp multigrid distributed
 
 cc-files      := $(shell for i in $(all-dirs) ; do echo $D/source/$$i/*.cc ; done)
 h-files       := $(sort $(shell echo $D/include/deal.II/*/*.h))
index 8c1db4e041044eb8642a4b181066ab69e701d014..7348b401a314713034c228e22764af1215beca6f 100644 (file)
@@ -211,7 +211,7 @@ namespace parallel
     {
       double *data_store = reinterpret_cast<double *>(data);
 
-      typename DH::cell_iterator cell(&dof_handler->get_tria(), cell_->level(), cell_->index(), dof_handler);
+      typename DH::cell_iterator cell(*cell_, dof_handler);
 
       const unsigned int dofs_per_cell=cell->get_fe().dofs_per_cell;
       ::dealii::Vector<double> dofvalues(dofs_per_cell);
@@ -235,7 +235,7 @@ namespace parallel
                     std::vector<VECTOR *> &all_out)
     {
       typename DH::cell_iterator
-      cell(&dof_handler->get_tria(), cell_->level(), cell_->index(), dof_handler);
+      cell(*cell_, dof_handler);
 
       const unsigned int dofs_per_cell=cell->get_fe().dofs_per_cell;
       ::dealii::Vector<double> dofvalues(dofs_per_cell);
index cc3d29cfb1dfe3d9c2a260ab242ff1bad53c5756..8419530180e75b7806b48e18138fe6e06702d8cd 100644 (file)
 #  include <p4est_extended.h>
 #  include <p4est_vtk.h>
 #  include <p4est_ghost.h>
+#  include <p4est_communication.h>
 
 #  include <p8est_bits.h>
 #  include <p8est_extended.h>
 #  include <p8est_vtk.h>
 #  include <p8est_ghost.h>
+#  include <p8est_communication.h>
 #endif
 
 #include <algorithm>
@@ -98,6 +100,12 @@ namespace internal
       int (&quadrant_is_ancestor) (const types<2>::quadrant *q1,
                                    const types<2>::quadrant *q2);
 
+      static
+      int (&comm_find_owner) (types<2>::forest *p4est,
+                              const types<2>::locidx which_tree,
+                              const types<2>::quadrant *q,
+                              const int guess);
+
       static
       types<2>::connectivity *(&connectivity_new) (types<2>::topidx num_vertices,
                                                    types<2>::topidx num_trees,
@@ -219,6 +227,12 @@ namespace internal
                                                const types<2>::quadrant *q2)
       = p4est_quadrant_is_ancestor;
 
+    int (&functions<2>::comm_find_owner) (types<2>::forest *p4est,
+                                          const types<2>::locidx which_tree,
+                                          const types<2>::quadrant *q,
+                                          const int guess)
+      = p4est_comm_find_owner;
+
     types<2>::connectivity *(&functions<2>::connectivity_new) (types<2>::topidx num_vertices,
                                                                types<2>::topidx num_trees,
                                                                types<2>::topidx num_corners,
@@ -344,6 +358,12 @@ namespace internal
       int (&quadrant_is_ancestor) (const types<3>::quadrant *q1,
                                    const types<3>::quadrant *q2);
 
+      static
+      int (&comm_find_owner) (types<3>::forest *p4est,
+                              const types<3>::locidx which_tree,
+                              const types<3>::quadrant *q,
+                              const int guess);
+
       static
       types<3>::connectivity *(&connectivity_new) (types<3>::topidx num_vertices,
                                                    types<3>::topidx num_trees,
@@ -468,6 +488,12 @@ namespace internal
                                                const types<3>::quadrant *q2)
       = p8est_quadrant_is_ancestor;
 
+    int (&functions<3>::comm_find_owner) (types<3>::forest *p4est,
+                                          const types<3>::locidx which_tree,
+                                          const types<3>::quadrant *q,
+                                          const int guess)
+      = p8est_comm_find_owner;
+
     types<3>::connectivity *(&functions<3>::connectivity_new) (types<3>::topidx num_vertices,
                                                                types<3>::topidx num_trees,
                                                                types<3>::topidx num_edges,
@@ -955,6 +981,78 @@ namespace
   }
 
 
+  template <int dim, int spacedim>
+  void
+  determine_level_subdomain_id_recursively (const typename internal::p4est::types<dim>::tree     &tree,
+                                            const typename internal::p4est::types<dim>::locidx &tree_index,
+                                            const typename Triangulation<dim,spacedim>::cell_iterator     &dealii_cell,
+                                            const typename internal::p4est::types<dim>::quadrant &p4est_cell,
+                                            typename internal::p4est::types<dim>::forest   &forest,
+                                            const types::subdomain_id_t                           my_subdomain,
+                                            const std::vector<std::vector<bool> > &marked_vertices)
+  {
+    if (dealii_cell->level_subdomain_id()==types::artificial_subdomain_id)
+      {
+        //important: only assign the level_subdomain_id if it is a ghost cell
+        // even though we could fill in all.
+        bool used = false;
+        for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+          {
+            if (marked_vertices[dealii_cell->level()][dealii_cell->vertex_index(v)])
+              {
+                used = true;
+                break;
+              }
+          }
+
+        if (used)
+          {
+            int owner = internal::p4est::functions<dim>::comm_find_owner (&forest,
+                        tree_index,
+                        &p4est_cell,
+                        my_subdomain);
+            Assert((owner!=-2) && (owner!=-1), ExcMessage("p4est should know the owner."));
+            dealii_cell->set_level_subdomain_id(owner);
+          }
+
+      }
+
+    if (dealii_cell->has_children ())
+      {
+        typename internal::p4est::types<dim>::quadrant
+        p4est_child[GeometryInfo<dim>::max_children_per_cell];
+        for (unsigned int c=0;
+             c<GeometryInfo<dim>::max_children_per_cell; ++c)
+          switch (dim)
+            {
+            case 2:
+              P4EST_QUADRANT_INIT(&p4est_child[c]);
+              break;
+            case 3:
+              P8EST_QUADRANT_INIT(&p4est_child[c]);
+              break;
+            default:
+              Assert (false, ExcNotImplemented());
+            }
+
+
+        internal::p4est::functions<dim>::
+        quadrant_childrenv (&p4est_cell,
+                            p4est_child);
+
+        for (unsigned int c=0;
+             c<GeometryInfo<dim>::max_children_per_cell; ++c)
+          {
+            determine_level_subdomain_id_recursively <dim,spacedim> (tree,tree_index,
+                                                                     dealii_cell->child(c),
+                                                                     p4est_child[c],
+                                                                     forest,
+                                                                     my_subdomain,
+                                                                     marked_vertices);
+          }
+      }
+  }
+
 
   template <int dim, int spacedim>
   void
@@ -2592,6 +2690,95 @@ namespace parallel
 
 
 
+      // fill level_subdomain_ids for geometric multigrid
+      // This is disabled for now until it works correctly.
+      // the level ownership of a cell is defined as the owner if the cell is active or as the owner of child(0)
+      // we need this information for all our ancestors and the same-level neighbors of our own cells (=level ghosts)
+      if (false)
+        {
+          // step 1: We set our own ids all the way down and all the others to -1. Note that we do not fill
+          // other cells we could figure out the same way, because we might accidentally set an id for a
+          // cell that is not a ghost cell.
+          for (unsigned int lvl=this->n_levels(); lvl>0;)
+            {
+              --lvl;
+              for (typename Triangulation<dim,spacedim>::cell_iterator cell = this->begin(lvl); cell!=this->end(lvl); ++cell)
+                {
+                  if ((!cell->has_children() && cell->subdomain_id()==this->locally_owned_subdomain())
+                      || (cell->has_children() && cell->child(0)->level_subdomain_id()==this->locally_owned_subdomain()))
+                    cell->set_level_subdomain_id(this->locally_owned_subdomain());
+                  else
+                    {
+                      //not our cell
+                      cell->set_level_subdomain_id(types::artificial_subdomain_id);
+                    }
+                }
+            }
+
+          //step 2: make sure all the neighbors to our level_cells exist. Need to look up in p4est...
+          std::vector<std::vector<bool> > marked_vertices(this->n_levels());
+
+          for (unsigned int lvl=0; lvl<this->n_levels(); ++lvl)
+            {
+              marked_vertices[lvl].resize(this->n_vertices(), false);
+
+              for (typename dealii::Triangulation<dim,spacedim>::cell_iterator
+                   cell = this->begin(lvl);
+                   cell != this->end(lvl); ++cell)
+                if (cell->level_subdomain_id() == this->locally_owned_subdomain())
+                  for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+                    marked_vertices[lvl][cell->vertex_index(v)] = true;
+            }
+
+
+
+          for (typename Triangulation<dim,spacedim>::cell_iterator cell = this->begin(0); cell!=this->end(0); ++cell)
+            {
+              typename dealii::internal::p4est::types<dim>::quadrant p4est_coarse_cell;
+              const unsigned int tree_index
+                = coarse_cell_to_p4est_tree_permutation[cell->index()];
+              typename dealii::internal::p4est::types<dim>::tree *tree =
+                init_tree(cell->index());
+
+              dealii::internal::p4est::init_coarse_quadrant<dim>(p4est_coarse_cell);
+
+              determine_level_subdomain_id_recursively<dim,spacedim> (*tree, tree_index, cell,
+                                                                      p4est_coarse_cell,
+                                                                      *parallel_forest,
+                                                                      my_subdomain,
+                                                                      marked_vertices);
+            }
+
+          //step 3: make sure we have the parent of our level cells
+          for (unsigned int lvl=this->n_levels(); lvl>0;)
+            {
+              --lvl;
+              for (typename Triangulation<dim,spacedim>::cell_iterator cell = this->begin(lvl); cell!=this->end(lvl); ++cell)
+                {
+                  if (cell->has_children() && cell->subdomain_id()!=this->locally_owned_subdomain())
+                    {
+                      //not our cell
+                      for (unsigned int c=0; c<GeometryInfo<dim>::max_children_per_cell; ++c)
+                        {
+                          if (cell->child(c)->level_subdomain_id()==this->locally_owned_subdomain())
+                            {
+                              types::subdomain_id_t mark = types::artificial_subdomain_id;
+                              mark = cell->child(0)->level_subdomain_id();
+                              Assert(mark != types::artificial_subdomain_id, ExcInternalError()); //we should know the child(0)
+                              cell->set_level_subdomain_id(mark);
+                              break;
+                            }
+                        }
+                    }
+                }
+            }
+
+
+
+        }
+
+
+
       // check that our local copy has
       // exactly as many cells as the
       // p4est original (at least if we
index fc695be9212ab26e3d56c952f600f07d1bf36586..a81c86c2527e4db534566b905792c7f8ef511a6d 100644 (file)
@@ -25,9 +25,9 @@ DEAL_II_NAMESPACE_OPEN
 
 template <int dim, int spacedim>
 void
-BlockInfo::initialize(const DoFHandler<dim, spacedim> &dof, bool levels_only, bool multigrid)
+BlockInfo::initialize(const DoFHandler<dim, spacedim> &dof, bool levels_only, bool active_only)
 {
-  if (!levels_only)
+  if (!levels_only && dof.has_active_dofs())
     {
       const FiniteElement<dim, spacedim> &fe = dof.get_fe();
       std::vector<unsigned int> sizes(fe.n_blocks());
@@ -35,7 +35,7 @@ BlockInfo::initialize(const DoFHandler<dim, spacedim> &dof, bool levels_only, bo
       bi_global.reinit(sizes);
     }
 
-  if (multigrid)
+  if (!active_only && dof.has_level_dofs())
     {
       std::vector<std::vector<unsigned int> > sizes (dof.get_tria ().n_levels ());
 
@@ -71,24 +71,6 @@ BlockInfo::initialize_local(const DoFHandler<dim, spacedim> &dof)
 }
 
 
-template <int dim, int spacedim>
-void
-BlockInfo::initialize(const MGDoFHandler<dim, spacedim> &dof, bool levels_only)
-{
-  if (!levels_only)
-    initialize(static_cast<const DoFHandler<dim, spacedim>&> (dof));
-
-  std::vector<std::vector<unsigned int> > sizes (dof.get_tria().n_levels());
-  for (unsigned int i=0; i<sizes.size(); ++i)
-    sizes[i].resize (dof.get_fe().n_blocks());
-  MGTools::count_dofs_per_block(dof, sizes);
-
-  levels.resize(sizes.size());
-  for (unsigned int i=0; i<sizes.size(); ++i)
-    levels[i].reinit(sizes[i]);
-}
-
-
 // explicit instantiations
 #include "block_info.inst"
 
index df24035ac974ca650aab815aeb2ca870b40e91e3..5e5b2ed5714a2861286ce8ef4ec3342cb1dfce06 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2009, 2010 by the deal.II authors
+//    Copyright (C) 2009, 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
 for (deal_II_dimension : DIMENSIONS)
   {
     template void BlockInfo::initialize(const DoFHandler<deal_II_dimension,deal_II_dimension>&, bool, bool);
-    template void BlockInfo::initialize(const MGDoFHandler<deal_II_dimension,deal_II_dimension>&, bool);
     template void BlockInfo::initialize_local(const DoFHandler<deal_II_dimension,deal_II_dimension>&);
 
 #if deal_II_dimension < 3
     template void BlockInfo::initialize(const DoFHandler<deal_II_dimension,deal_II_dimension+1>&, bool, bool);
-    template void BlockInfo::initialize(const MGDoFHandler<deal_II_dimension,deal_II_dimension+1>&, bool);
     template void BlockInfo::initialize_local(const DoFHandler<deal_II_dimension,deal_II_dimension+1>&);
 #endif
 
 #if deal_II_dimension == 3
     template void BlockInfo::initialize(const DoFHandler<1,3>&, bool, bool);
-    template void BlockInfo::initialize(const MGDoFHandler<1,3>&, bool);
     template void BlockInfo::initialize_local(const DoFHandler<1,3>&);
 #endif
   }
index 47145ed63ca38cd20c6108911b3c843140dbb362..e5282b7d63d927b31640ce1f9bcd9eec53822876 100644 (file)
@@ -37,11 +37,11 @@ DEAL_II_NAMESPACE_OPEN
 
 /*------------------------- Static variables: DoFAccessor -----------------------*/
 
-template <int structdim, class DH>
-const unsigned int DoFAccessor<structdim,DH>::dimension;
+template <int structdim, class DH, bool level_dof_access>
+const unsigned int DoFAccessor<structdim,DH,level_dof_access>::dimension;
 
-template <int structdim, class DH>
-const unsigned int DoFAccessor<structdim,DH>::space_dimension;
+template <int structdim, class DH, bool level_dof_access>
+const unsigned int DoFAccessor<structdim,DH,level_dof_access>::space_dimension;
 
 
 
@@ -50,9 +50,9 @@ const unsigned int DoFAccessor<structdim,DH>::space_dimension;
 
 
 
-template <class DH>
+template <class DH, bool lda>
 void
-DoFCellAccessor<DH>::update_cell_dof_indices_cache () const
+DoFCellAccessor<DH,lda>::update_cell_dof_indices_cache () const
 {
   Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
           ExcMessage ("DoFHandler not initialized"));
@@ -66,9 +66,9 @@ DoFCellAccessor<DH>::update_cell_dof_indices_cache () const
 
 
 
-template <class DH>
+template <class DH, bool lda>
 void
-DoFCellAccessor<DH>::set_dof_indices (const std::vector<unsigned int> &local_dof_indices)
+DoFCellAccessor<DH,lda>::set_dof_indices (const std::vector<unsigned int> &local_dof_indices)
 {
   Assert (static_cast<unsigned int>(this->present_level) < this->dof_handler->levels.size(),
           ExcMessage ("DoFHandler not initialized"));
@@ -83,26 +83,22 @@ DoFCellAccessor<DH>::set_dof_indices (const std::vector<unsigned int> &local_dof
 
 
 
-template <class DH>
-typename internal::DoFHandler::Iterators<DH>::cell_iterator
-DoFCellAccessor<DH>::neighbor_child_on_subface (const unsigned int face,
-                                                const unsigned int subface) const
+template <class DH, bool lda>
+TriaIterator<DoFCellAccessor<DH,lda> >
+DoFCellAccessor<DH,lda>::neighbor_child_on_subface (const unsigned int face,
+                                                    const unsigned int subface) const
 {
   const TriaIterator<CellAccessor<dim,spacedim> > q
     = CellAccessor<dim,spacedim>::neighbor_child_on_subface (face, subface);
-  return
-    typename internal::DoFHandler::Iterators<DH>::cell_iterator (this->tria,
-        q->level (),
-        q->index (),
-        this->dof_handler);
+  return TriaIterator<DoFCellAccessor<DH,lda> > (*q, this->dof_handler);
 }
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <class InputVector, typename number>
 void
-DoFCellAccessor<DH>::
+DoFCellAccessor<DH,lda>::
 get_interpolated_dof_values (const InputVector &values,
                              Vector<number>    &interpolated_values) const
 {
@@ -215,10 +211,10 @@ get_interpolated_dof_values (const InputVector &values,
 
 
 
-template <class DH>
+template <class DH, bool lda>
 template <class OutputVector, typename number>
 void
-DoFCellAccessor<DH>::
+DoFCellAccessor<DH,lda>::
 set_dof_values_by_interpolation (const Vector<number> &local_values,
                                  OutputVector         &values) const
 {
index bff7474f460c67cb18ec1758236e11874b5eb555..e433bbb5991f3093297729be30b23130d2c34733 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 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
 
 
 // TODO: This could surely be made more systematic!
-for (deal_II_dimension : DIMENSIONS)
+for (deal_II_dimension : DIMENSIONS; lda : BOOL)
   {
 // explicit instantiations (for DoFHandler)
 
-#if deal_II_dimension == 1
-    template class DoFAccessor<1, DoFHandler<1> >;
-#endif
 
 #if deal_II_dimension == 2
-    template class DoFAccessor<1, DoFHandler<2> >;
-    template class DoFAccessor<2, DoFHandler<2> >;
-
-    template class TriaRawIterator   <DoFAccessor<1, DoFHandler<2> > >;
-    template class TriaIterator      <DoFAccessor<1, DoFHandler<2> > >;
-    template class TriaActiveIterator<DoFAccessor<1, DoFHandler<2> > >;
+    template class DoFAccessor<1, DoFHandler<2>, lda>;
+    
+    template class TriaRawIterator   <DoFAccessor<1, DoFHandler<2>, lda> >;
+    template class TriaIterator      <DoFAccessor<1, DoFHandler<2>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<1, DoFHandler<2>, lda> >;
 #endif
 
 #if deal_II_dimension == 3
-    template class DoFAccessor<1, DoFHandler<3> >;
-    template class DoFAccessor<2, DoFHandler<3> >;
-    template class DoFAccessor<3, DoFHandler<3> >;
-
-    template class TriaRawIterator   <DoFAccessor<1, DoFHandler<3> > >;
-    template class TriaIterator      <DoFAccessor<1, DoFHandler<3> > >;
-    template class TriaActiveIterator<DoFAccessor<1, DoFHandler<3> > >;
-    template class TriaRawIterator   <DoFAccessor<2, DoFHandler<3> > >;
-    template class TriaIterator      <DoFAccessor<2, DoFHandler<3> > >;
-    template class TriaActiveIterator<DoFAccessor<2, DoFHandler<3> > >;
+    template class DoFAccessor<1, DoFHandler<3>, lda>;
+    template class DoFAccessor<2, DoFHandler<3>, lda>;
+    
+    template class TriaRawIterator   <DoFAccessor<1, DoFHandler<3>, lda> >;
+    template class TriaIterator      <DoFAccessor<1, DoFHandler<3>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<1, DoFHandler<3>, lda> >;
+    template class TriaRawIterator   <DoFAccessor<2, DoFHandler<3>, lda> >;
+    template class TriaIterator      <DoFAccessor<2, DoFHandler<3>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<2, DoFHandler<3>, lda> >;
 #endif
 
+    template class DoFAccessor<deal_II_dimension, DoFHandler<deal_II_dimension>, lda>;
+    template class DoFCellAccessor<DoFHandler<deal_II_dimension>, lda>;
 
-    template class DoFCellAccessor<DoFHandler<deal_II_dimension> >;
-
-    template class TriaRawIterator   <DoFCellAccessor<DoFHandler<deal_II_dimension> > >;
-    template class TriaIterator      <DoFCellAccessor<DoFHandler<deal_II_dimension> > >;
-    template class TriaActiveIterator<DoFCellAccessor<DoFHandler<deal_II_dimension> > >;
+    template class TriaRawIterator   <DoFCellAccessor<DoFHandler<deal_II_dimension>, lda> >;
+    template class TriaIterator      <DoFCellAccessor<DoFHandler<deal_II_dimension>, lda> >;
+    template class TriaActiveIterator<DoFCellAccessor<DoFHandler<deal_II_dimension>, lda> >;
 
 
 // --------------------------------------------------------------------------
 // explicit instantiations (for hp::DoFHandler)
 
-#if deal_II_dimension == 1
-    template class DoFAccessor<1, hp::DoFHandler<1> >;
-#endif
 
 #if deal_II_dimension == 2
-    template class DoFAccessor<1, hp::DoFHandler<2> >;
-    template class DoFAccessor<2, hp::DoFHandler<2> >;
-
-    template class TriaRawIterator   <DoFAccessor<1, hp::DoFHandler<2> > >;
-    template class TriaIterator      <DoFAccessor<1, hp::DoFHandler<2> > >;
-    template class TriaActiveIterator<DoFAccessor<1, hp::DoFHandler<2> > >;
+    template class DoFAccessor<1, hp::DoFHandler<2>, lda>;
+    template class TriaRawIterator   <DoFAccessor<1, hp::DoFHandler<2>, lda> >;
+    template class TriaIterator      <DoFAccessor<1, hp::DoFHandler<2>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<1, hp::DoFHandler<2>, lda> >;
 #endif
 
 
 #if deal_II_dimension == 3
-    template class DoFAccessor<1, hp::DoFHandler<3> >;
-    template class DoFAccessor<2, hp::DoFHandler<3> >;
-    template class DoFAccessor<3, hp::DoFHandler<3> >;
-
-    template class TriaRawIterator   <DoFAccessor<1, hp::DoFHandler<3> > >;
-    template class TriaIterator      <DoFAccessor<1, hp::DoFHandler<3> > >;
-    template class TriaActiveIterator<DoFAccessor<1, hp::DoFHandler<3> > >;
-    template class TriaRawIterator   <DoFAccessor<2, hp::DoFHandler<3> > >;
-    template class TriaIterator      <DoFAccessor<2, hp::DoFHandler<3> > >;
-    template class TriaActiveIterator<DoFAccessor<2, hp::DoFHandler<3> > >;
+    template class DoFAccessor<1, hp::DoFHandler<3>, lda>;
+    template class TriaRawIterator   <DoFAccessor<1, hp::DoFHandler<3>, lda> >;
+    template class TriaIterator      <DoFAccessor<1, hp::DoFHandler<3>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<1, hp::DoFHandler<3>, lda> >;
+    
+    template class DoFAccessor<2, hp::DoFHandler<3>, lda>;
+    template class TriaRawIterator   <DoFAccessor<2, hp::DoFHandler<3>, lda> >;
+    template class TriaIterator      <DoFAccessor<2, hp::DoFHandler<3>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<2, hp::DoFHandler<3>, lda> >;
 #endif
 
+    template class DoFAccessor<deal_II_dimension, hp::DoFHandler<deal_II_dimension>, lda>;
+    template class DoFCellAccessor<hp::DoFHandler<deal_II_dimension>, lda>;
 
-    template class DoFCellAccessor<hp::DoFHandler<deal_II_dimension> >;
-
-    template class TriaRawIterator   <DoFCellAccessor<hp::DoFHandler<deal_II_dimension> > >;
-    template class TriaIterator      <DoFCellAccessor<hp::DoFHandler<deal_II_dimension> > >;
-    template class TriaActiveIterator<DoFCellAccessor<hp::DoFHandler<deal_II_dimension> > >;
+    template class TriaRawIterator   <DoFCellAccessor<hp::DoFHandler<deal_II_dimension>, lda> >;
+    template class TriaIterator      <DoFCellAccessor<hp::DoFHandler<deal_II_dimension>, lda> >;
+    template class TriaActiveIterator<DoFCellAccessor<hp::DoFHandler<deal_II_dimension>, lda> >;
 
 
 
@@ -94,40 +83,40 @@ for (deal_II_dimension : DIMENSIONS)
 // // explicit instantiations (for DoFHandler)
 
 #if deal_II_dimension == 1
-    template class DoFAccessor<1, DoFHandler<1,2> >;
+    template class DoFAccessor<1, DoFHandler<1,2>, lda>;
 #endif
 
 #if deal_II_dimension == 2
-    template class DoFAccessor<1, DoFHandler<2,3> >;
-    template class DoFAccessor<2, DoFHandler<2,3> >;
+    template class DoFAccessor<1, DoFHandler<2,3>, lda>;
+    template class DoFAccessor<2, DoFHandler<2,3>, lda>;
 
-    template class TriaRawIterator   <DoFAccessor<1, DoFHandler<2,3> > >;
-    template class TriaIterator      <DoFAccessor<1, DoFHandler<2,3> > >;
-    template class TriaActiveIterator<DoFAccessor<1, DoFHandler<2,3> > >;
+    template class TriaRawIterator   <DoFAccessor<1, DoFHandler<2,3>, lda> >;
+    template class TriaIterator      <DoFAccessor<1, DoFHandler<2,3>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<1, DoFHandler<2,3>, lda> >;
 #endif
 
 
 #if deal_II_dimension != 3
-    template class DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1> >;
+    template class DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda>;
 
     template class
-      TriaRawIterator   <DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1> > >;
+      TriaRawIterator   <DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda> >;
     template class
-      TriaIterator      <DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1> > >;
+      TriaIterator      <DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda> >;
     template class
-      TriaActiveIterator<DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1> > >;
+      TriaActiveIterator<DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda> >;
 #endif
 
 
 #if deal_II_dimension == 3
-    template class DoFCellAccessor<DoFHandler<1,3> >;
+    template class DoFCellAccessor<DoFHandler<1,3>, lda>;
 
     template class
-      TriaRawIterator   <DoFCellAccessor<DoFHandler<1,3> > >;
+      TriaRawIterator   <DoFCellAccessor<DoFHandler<1,3>, lda> >;
     template class
-      TriaIterator      <DoFCellAccessor<DoFHandler<1,3> > >;
+      TriaIterator      <DoFCellAccessor<DoFHandler<1,3>, lda> >;
     template class
-      TriaActiveIterator<DoFCellAccessor<DoFHandler<1,3> > >;
+      TriaActiveIterator<DoFCellAccessor<DoFHandler<1,3>, lda> >;
 #endif
 
 
@@ -135,64 +124,64 @@ for (deal_II_dimension : DIMENSIONS)
 // explicit instantiations (for hp::DoFHandler)
 
 #if deal_II_dimension == 1
-    template class DoFAccessor<1, hp::DoFHandler<1,2> >;
-    template class DoFAccessor<1, hp::DoFHandler<1,3> >;
+    template class DoFAccessor<1, hp::DoFHandler<1,2>, lda>;
+    template class DoFAccessor<1, hp::DoFHandler<1,3>, lda>;
 #endif
 
 #if deal_II_dimension == 2
-    template class DoFAccessor<1, hp::DoFHandler<2,3> >;
-    template class DoFAccessor<2, hp::DoFHandler<2,3> >;
+    template class DoFAccessor<1, hp::DoFHandler<2,3>, lda>;
+    template class DoFAccessor<2, hp::DoFHandler<2,3>, lda>;
 
-    template class TriaRawIterator   <DoFAccessor<1, hp::DoFHandler<2,3> > >;
-    template class TriaIterator      <DoFAccessor<1, hp::DoFHandler<2,3> > >;
-    template class TriaActiveIterator<DoFAccessor<1, hp::DoFHandler<2,3> > >;
+    template class TriaRawIterator   <DoFAccessor<1, hp::DoFHandler<2,3>, lda> >;
+    template class TriaIterator      <DoFAccessor<1, hp::DoFHandler<2,3>, lda> >;
+    template class TriaActiveIterator<DoFAccessor<1, hp::DoFHandler<2,3>, lda> >;
 #endif
 
 #if deal_II_dimension != 3
-    template class DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >;
+    template class DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda>;
 
     template class
-      TriaRawIterator   <DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> > >;
+      TriaRawIterator   <DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda> >;
     template class
-      TriaIterator      <DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> > >;
+      TriaIterator      <DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda> >;
     template class
-      TriaActiveIterator<DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> > >;
+      TriaActiveIterator<DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda> >;
 #endif
 
 
 #if deal_II_dimension == 3
-    template class DoFCellAccessor<hp::DoFHandler<1,3> >;
+    template class DoFCellAccessor<hp::DoFHandler<1,3>, lda>;
 
     template class
-      TriaRawIterator   <DoFCellAccessor<hp::DoFHandler<1,3> > >;
+      TriaRawIterator   <DoFCellAccessor<hp::DoFHandler<1,3>, lda> >;
     template class
-      TriaIterator      <DoFCellAccessor<hp::DoFHandler<1,3> > >;
+      TriaIterator      <DoFCellAccessor<hp::DoFHandler<1,3>, lda> >;
     template class
-      TriaActiveIterator<DoFCellAccessor<hp::DoFHandler<1,3> > >;
+      TriaActiveIterator<DoFCellAccessor<hp::DoFHandler<1,3>, lda> >;
 #endif
   }
 
 
-for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS)
+for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS; lda : BOOL)
   {
     template
       void
-      DoFCellAccessor<DoFHandler<deal_II_dimension> >::get_interpolated_dof_values
+      DoFCellAccessor<DoFHandler<deal_II_dimension>, lda>::get_interpolated_dof_values
       (const VEC&, Vector<SCALAR>&) const;
     template
       void
-      DoFCellAccessor<DoFHandler<deal_II_dimension> >::set_dof_values_by_interpolation
+      DoFCellAccessor<DoFHandler<deal_II_dimension>, lda>::set_dof_values_by_interpolation
       (const Vector<SCALAR>&, VEC&) const;
 
 #if deal_II_dimension != 3
 
     template
       void
-      DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1> >::get_interpolated_dof_values
+      DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda>::get_interpolated_dof_values
       (const VEC&, Vector<SCALAR>&) const;
     template
       void
-      DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1> >::set_dof_values_by_interpolation
+      DoFCellAccessor<DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda>::set_dof_values_by_interpolation
       (const Vector<SCALAR>&, VEC&) const;
 
 #endif
@@ -201,11 +190,11 @@ for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS
 
     template
       void
-      DoFCellAccessor<DoFHandler<1,3> >::get_interpolated_dof_values
+      DoFCellAccessor<DoFHandler<1,3>, lda>::get_interpolated_dof_values
       (const VEC&, Vector<SCALAR>&) const;
     template
       void
-      DoFCellAccessor<DoFHandler<1,3> >::set_dof_values_by_interpolation
+      DoFCellAccessor<DoFHandler<1,3>, lda>::set_dof_values_by_interpolation
       (const Vector<SCALAR>&, VEC&) const;
 
 #endif
@@ -213,26 +202,26 @@ for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS
   }
 
 
-for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS)
+for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS; lda : BOOL)
   {
     template
       void
-      DoFCellAccessor<hp::DoFHandler<deal_II_dimension> >::get_interpolated_dof_values
+      DoFCellAccessor<hp::DoFHandler<deal_II_dimension>, lda>::get_interpolated_dof_values
       (const VEC&, Vector<SCALAR>&) const;
     template
       void
-      DoFCellAccessor<hp::DoFHandler<deal_II_dimension> >::set_dof_values_by_interpolation
+      DoFCellAccessor<hp::DoFHandler<deal_II_dimension>, lda>::set_dof_values_by_interpolation
       (const Vector<SCALAR>&, VEC&) const;
 
 #if deal_II_dimension != 3
 
     template
       void
-      DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >::get_interpolated_dof_values
+      DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda>::get_interpolated_dof_values
       (const VEC&, Vector<SCALAR>&) const;
     template
       void
-      DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1> >::set_dof_values_by_interpolation
+      DoFCellAccessor<hp::DoFHandler<deal_II_dimension,deal_II_dimension+1>, lda>::set_dof_values_by_interpolation
       (const Vector<SCALAR>&, VEC&) const;
 
 #endif
@@ -241,11 +230,11 @@ for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS
 
     template
       void
-      DoFCellAccessor<hp::DoFHandler<1,3> >::get_interpolated_dof_values
+      DoFCellAccessor<hp::DoFHandler<1,3>, lda>::get_interpolated_dof_values
       (const VEC&, Vector<SCALAR>&) const;
     template
       void
-      DoFCellAccessor<hp::DoFHandler<1,3> >::set_dof_values_by_interpolation
+      DoFCellAccessor<hp::DoFHandler<1,3>, lda>::set_dof_values_by_interpolation
       (const Vector<SCALAR>&, VEC&) const;
 
 #endif
index 13f0d30d91491b269bebe5d4a3885573a59e05a3..f3c0b60b6267ebc33a69a1de26db4e125e737737 100644 (file)
@@ -263,12 +263,12 @@ namespace internal
             .push_back (new internal::DoFHandler::DoFLevel<1>);
 
             dof_handler.levels.back()->dof_object.dofs
-            .resize (dof_handler.tria->n_raw_cells(i) *
+            .resize (dof_handler.tria->n_raw_lines(i) *
                      dof_handler.selected_fe->dofs_per_line,
                      DoFHandler<1,spacedim>::invalid_dof_index);
 
             dof_handler.levels.back()->cell_dof_indices_cache
-            .resize (dof_handler.tria->n_raw_cells(i) *
+            .resize (dof_handler.tria->n_raw_lines(i) *
                      dof_handler.selected_fe->dofs_per_cell,
                      DoFHandler<1,spacedim>::invalid_dof_index);
           }
@@ -289,12 +289,12 @@ namespace internal
             dof_handler.levels.push_back (new internal::DoFHandler::DoFLevel<2>);
 
             dof_handler.levels.back()->dof_object.dofs
-            .resize (dof_handler.tria->n_raw_cells(i) *
+            .resize (dof_handler.tria->n_raw_quads(i) *
                      dof_handler.selected_fe->dofs_per_quad,
                      DoFHandler<2,spacedim>::invalid_dof_index);
 
             dof_handler.levels.back()->cell_dof_indices_cache
-            .resize (dof_handler.tria->n_raw_cells(i) *
+            .resize (dof_handler.tria->n_raw_quads(i) *
                      dof_handler.selected_fe->dofs_per_cell,
                      DoFHandler<2,spacedim>::invalid_dof_index);
           }
@@ -325,12 +325,12 @@ namespace internal
             dof_handler.levels.push_back (new internal::DoFHandler::DoFLevel<3>);
 
             dof_handler.levels.back()->dof_object.dofs
-            .resize (dof_handler.tria->n_raw_cells(i) *
+            .resize (dof_handler.tria->n_raw_hexs(i) *
                      dof_handler.selected_fe->dofs_per_hex,
                      DoFHandler<3,spacedim>::invalid_dof_index);
 
             dof_handler.levels.back()->cell_dof_indices_cache
-            .resize (dof_handler.tria->n_raw_cells(i) *
+            .resize (dof_handler.tria->n_raw_hexs(i) *
                      dof_handler.selected_fe->dofs_per_cell,
                      DoFHandler<3,spacedim>::invalid_dof_index);
           }
@@ -634,7 +634,14 @@ namespace internal
 
       template<int spacedim>
       static
-      unsigned int get_dof_index (const DoFHandler<1, spacedim> &dof_handler, internal::DoFHandler::DoFLevel<1> &mg_level, internal::DoFHandler::DoFFaces<1> &, const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index, const int2type<1>)
+      unsigned int get_dof_index (
+        const DoFHandler<1, spacedim> &dof_handler,
+        internal::DoFHandler::DoFLevel<1> &mg_level,
+        internal::DoFHandler::DoFFaces<1> &,
+        const unsigned int obj_index,
+        const unsigned int fe_index,
+        const unsigned int local_index,
+        const int2type<1>)
       {
         return mg_level.dof_object.get_dof_index (dof_handler, obj_index, fe_index, local_index);
       }
@@ -783,6 +790,7 @@ DoFHandler<dim,spacedim>::initialize(
 }
 
 
+
 /*------------------------ Cell iterator functions ------------------------*/
 
 template <int dim, int spacedim>
@@ -843,6 +851,38 @@ DoFHandler<dim, spacedim>::end_active (const unsigned int level) const
 
 
 
+template <int dim, int spacedim>
+typename DoFHandler<dim, spacedim>::level_cell_iterator
+DoFHandler<dim, spacedim>::begin_mg (const unsigned int level) const
+{
+  // Assert(this->has_level_dofs(), ExcMessage("You can only iterate over mg "
+  //     "levels if mg dofs got distributed."));
+  return level_cell_iterator (*this->get_tria().begin(level),
+                              this);
+}
+
+
+template <int dim, int spacedim>
+typename DoFHandler<dim, spacedim>::level_cell_iterator
+DoFHandler<dim, spacedim>::end_mg (const unsigned int level) const
+{
+  // Assert(this->has_level_dofs(), ExcMessage("You can only iterate over mg "
+  //     "levels if mg dofs got distributed."));
+  return (level == this->get_tria().n_levels()-1 ?
+          end() :
+          begin (level+1));
+}
+
+
+template <int dim, int spacedim>
+typename DoFHandler<dim, spacedim>::level_cell_iterator
+DoFHandler<dim, spacedim>::end_mg () const
+{
+  return level_cell_iterator (&this->get_tria(), -1, -1, this);
+}
+
+
+
 //---------------------------------------------------------------------------
 
 
@@ -958,6 +998,7 @@ unsigned int DoFHandler<dim,spacedim>::n_boundary_dofs () const
           for (unsigned int i=0; i<dofs_per_face; ++i)
             boundary_dofs.insert(dofs_on_face[i]);
         }
+
   return boundary_dofs.size();
 }
 
@@ -1044,6 +1085,7 @@ DoFHandler<dim,spacedim>::memory_consumption () const
                      MemoryConsumption::memory_consumption (*faces) +
                      MemoryConsumption::memory_consumption (faces) +
                      sizeof (number_cache) +
+                     MemoryConsumption::memory_consumption (mg_number_cache) +
                      MemoryConsumption::memory_consumption (vertex_dofs));
   for (unsigned int i=0; i<levels.size(); ++i)
     mem += MemoryConsumption::memory_consumption (*levels[i]);
@@ -1051,20 +1093,19 @@ DoFHandler<dim,spacedim>::memory_consumption () const
   for (unsigned int level = 0; level < mg_levels.size (); ++level)
     mem += mg_levels[level]->memory_consumption ();
 
-  mem += MemoryConsumption::memory_consumption (*mg_faces);
+  if (mg_faces != 0)
+    mem += MemoryConsumption::memory_consumption (*mg_faces);
 
   for (unsigned int i = 0; i < mg_vertex_dofs.size (); ++i)
     mem += sizeof (MGVertexDoFs) + (1 + mg_vertex_dofs[i].get_finest_level () - mg_vertex_dofs[i].get_coarsest_level ()) * sizeof (unsigned int);
 
-  mem += MemoryConsumption::memory_consumption (mg_used_dofs);
   return mem;
 }
 
 
 
 template<int dim, int spacedim>
-void DoFHandler<dim,spacedim>::
-distribute_dofs (const FiniteElement<dim,spacedim> &ff)
+void DoFHandler<dim,spacedim>::distribute_dofs (const FiniteElement<dim,spacedim> &ff)
 {
   selected_fe = &ff;
 
@@ -1095,44 +1136,40 @@ distribute_dofs (const FiniteElement<dim,spacedim> &ff)
   // triangulation. it doesn't work
   // correctly yet if it is parallel
   if (dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>(&*tria) == 0)
-    block_info_object.initialize(*this);
+    block_info_object.initialize(*this, false, true);
 }
 
 
 template<int dim, int spacedim>
 void DoFHandler<dim, spacedim>::distribute_mg_dofs (const FiniteElement<dim, spacedim> &fe)
 {
-  Assert ((dynamic_cast<const parallel::distributed::Triangulation<dim, spacedim>*> (&*tria) == 0), ExcMessage ("Invalid triangulation"));
-  distribute_dofs (fe);
-  reserve_space ();
+  const FiniteElement<dim, spacedim> *old_fe = selected_fe;
+  Assert((old_fe==NULL) || (old_fe == &fe), ExcMessage("you are required to use the same FE for level and active DoFs!") );
+  selected_fe = &fe;
 
-  const unsigned int &n_levels = (*tria).n_levels ();
+  clear_mg_space();
 
-  mg_used_dofs.resize (n_levels, 0);
-
-  std::vector<bool> user_flags;
-
-  (*tria).save_user_flags (user_flags);
-  const_cast<Triangulation<dim, spacedim>&>(*tria).clear_user_flags ();
-
-  for (unsigned int level = 0; level < n_levels; ++level)
-    {
-      unsigned int next_free_dof = 0;
-
-      for (cell_iterator cell = begin (level); cell != end (level); ++cell)
-        next_free_dof = internal::DoFHandler::Implementation::distribute_dofs_on_cell<spacedim> (cell, next_free_dof);
+  internal::DoFHandler::Implementation::reserve_space_mg (*this);
+  const parallel::distributed::Triangulation<dim,spacedim> *dist_tr = dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>(&*tria);
+  if (!dist_tr)
+    mg_number_cache.resize((*tria).n_levels());
+  else
+    mg_number_cache.resize(dist_tr->n_global_levels());
 
-      mg_used_dofs[level] = next_free_dof;
-    }
+  policy->distribute_mg_dofs (*this, mg_number_cache);
 
-  const_cast<Triangulation<dim, spacedim>&>(*tria).load_user_flags (user_flags);
-  block_info_object.initialize (*this, true, true);
+  // initialize the block info object
+  // only if this is a sequential
+  // triangulation. it doesn't work
+  // correctly yet if it is parallel
+  if (dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>(&*tria) == 0)
+    block_info_object.initialize (*this, true, false);
 }
 
 template<int dim, int spacedim>
 void DoFHandler<dim, spacedim>::reserve_space ()
 {
-  internal::DoFHandler::Implementation::reserve_space_mg (*this);
+  //TODO: move this to distribute_mg_dofs and remove function
 }
 
 template<int dim, int spacedim>
@@ -1148,6 +1185,8 @@ void DoFHandler<dim, spacedim>::clear_mg_space ()
   std::vector<MGVertexDoFs> tmp;
 
   std::swap (mg_vertex_dofs, tmp);
+
+  mg_number_cache.clear();
 }
 
 
@@ -1174,8 +1213,7 @@ void DoFHandler<dim,spacedim>::clear ()
 
 template <int dim, int spacedim>
 void
-DoFHandler<dim,spacedim>::
-renumber_dofs (const std::vector<unsigned int> &new_numbers)
+DoFHandler<dim,spacedim>::renumber_dofs (const std::vector<unsigned int> &new_numbers)
 {
   Assert (new_numbers.size() == n_locally_owned_dofs(),
           ExcRenumberingIncomplete());
@@ -1209,6 +1247,202 @@ renumber_dofs (const std::vector<unsigned int> &new_numbers)
 }
 
 
+template <int dim, int spacedim>
+void
+DoFHandler<dim,spacedim>::renumber_dofs (const unsigned int,
+                                         const std::vector<unsigned int> &)
+{
+  Assert(false, ExcNotImplemented());
+}
+
+
+template<>
+void DoFHandler<1>::renumber_dofs (const unsigned int level,
+                                   const std::vector<unsigned int> &new_numbers)
+{
+  Assert (new_numbers.size() == n_dofs(level), DoFHandler<1>::ExcRenumberingIncomplete());
+
+  // note that we can not use cell iterators
+  // in this function since then we would
+  // renumber the dofs on the interface of
+  // two cells more than once. Anyway, this
+  // ways it's not only more correct but also
+  // faster
+  for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
+       i!=mg_vertex_dofs.end(); ++i)
+    // if the present vertex lives on
+    // the present level
+    if ((i->get_coarsest_level() <= level) &&
+        (i->get_finest_level() >= level))
+      for (unsigned int d=0; d<this->get_fe().dofs_per_vertex; ++d)
+        i->set_index (level, d, new_numbers[i->get_index (level, d)]);
+
+  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)
+        {
+          Assert(*i<new_numbers.size(), ExcInternalError());
+          *i = new_numbers[*i];
+        }
+    }
+}
+
+
+
+template<>
+void DoFHandler<2>::renumber_dofs (const unsigned int  level,
+                                   const std::vector<unsigned int>  &new_numbers)
+{
+  Assert (new_numbers.size() == n_dofs(level),
+          DoFHandler<2>::ExcRenumberingIncomplete());
+
+  for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
+       i!=mg_vertex_dofs.end(); ++i)
+    // if the present vertex lives on
+    // the present level
+    if ((i->get_coarsest_level() <= level) &&
+        (i->get_finest_level() >= level))
+      for (unsigned int d=0; d<this->get_fe().dofs_per_vertex; ++d)
+        i->set_index (level, d, new_numbers[i->get_index (level, d)]);
+
+  if (this->get_fe().dofs_per_line > 0)
+    {
+      // save user flags as they will be modified
+      std::vector<bool> user_flags;
+      this->get_tria().save_user_flags(user_flags);
+      const_cast<Triangulation<2> &>(this->get_tria()).clear_user_flags ();
+
+      // flag all lines adjacent to cells of the current
+      // level, as those lines logically belong to the same
+      // level as the cell, at least for for isotropic
+      // refinement
+      level_cell_iterator cell = begin(level),
+                          endcell  = end(level);
+      for ( ; cell != endcell; ++cell)
+        for (unsigned int line=0; line < GeometryInfo<2>::faces_per_cell; ++line)
+          cell->face(line)->set_user_flag();
+
+      for (cell_iterator cell = begin(); cell != end(); ++cell)
+        for (unsigned int l=0; l<GeometryInfo<2>::lines_per_cell; ++l)
+          if (cell->line(l)->user_flag_set())
+            {
+              for (unsigned int d=0; d<this->get_fe().dofs_per_line; ++d)
+                cell->line(l)->set_mg_dof_index (level, d,
+                                                 new_numbers[cell->line(l)->mg_dof_index(level, d)]);
+              cell->line(l)->clear_user_flag();
+            }
+      // finally, restore user flags
+      const_cast<Triangulation<2> &>(this->get_tria()).load_user_flags (user_flags);
+    }
+
+  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)
+        {
+          Assert(*i<new_numbers.size(), ExcInternalError());
+          *i = new_numbers[*i];
+        }
+    }
+}
+
+
+
+template<>
+void DoFHandler<3>::renumber_dofs (const unsigned int  level,
+                                   const std::vector<unsigned int>  &new_numbers)
+{
+  Assert (new_numbers.size() == n_dofs(level),
+          DoFHandler<3>::ExcRenumberingIncomplete());
+
+  for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
+       i!=mg_vertex_dofs.end(); ++i)
+    // if the present vertex lives on
+    // the present level
+    if ((i->get_coarsest_level() <= level) &&
+        (i->get_finest_level() >= level))
+      for (unsigned int d=0; d<this->get_fe().dofs_per_vertex; ++d)
+        i->set_index (level, d, new_numbers[i->get_index (level, d)]);
+
+  // LINE DoFs
+  if (this->get_fe().dofs_per_line > 0)
+    {
+      // save user flags as they will be modified
+      std::vector<bool> user_flags;
+      this->get_tria().save_user_flags(user_flags);
+      const_cast<Triangulation<3> &>(this->get_tria()).clear_user_flags ();
+
+      // flag all lines adjacent to cells of the current
+      // level, as those lines logically belong to the same
+      // level as the cell, at least for for isotropic
+      // refinement
+
+      level_cell_iterator cell = begin(level),
+                          endcell  = end(level);
+      for ( ; cell != endcell ; ++cell)
+        for (unsigned int line=0; line < GeometryInfo<3>::lines_per_cell; ++line)
+          cell->line(line)->set_user_flag();
+
+
+      for (cell_iterator cell = begin(level); cell != end(level); ++cell)
+        for (unsigned int l=0; l<GeometryInfo<3>::lines_per_cell; ++l)
+          if (cell->line(l)->user_flag_set())
+            {
+              for (unsigned int d=0; d<this->get_fe().dofs_per_line; ++d)
+                cell->line(l)->set_mg_dof_index (level, d,
+                                                 new_numbers[cell->line(l)->mg_dof_index(level, d)]);
+              cell->line(l)->clear_user_flag();
+            }
+      // finally, restore user flags
+      const_cast<Triangulation<3> &>(this->get_tria()).load_user_flags (user_flags);
+    }
+
+  // QUAD DoFs
+  if (this->get_fe().dofs_per_quad > 0)
+    {
+      // save user flags as they will be modified
+      std::vector<bool> user_flags;
+      this->get_tria().save_user_flags(user_flags);
+      const_cast<Triangulation<3> &>(this->get_tria()).clear_user_flags ();
+
+      // flag all quads adjacent to cells of the current
+      // level, as those lines logically belong to the same
+      // level as the cell, at least for for isotropic
+      // refinement
+      level_cell_iterator cell = begin(level),
+                          endcell  = end(level);
+      for ( ; cell != endcell ; ++cell)
+        for (unsigned int quad=0; quad < GeometryInfo<3>::faces_per_cell; ++quad)
+          cell->face(quad)->set_user_flag();
+
+      for (cell_iterator cell = begin(level); cell != end(level); ++cell)
+        for (unsigned int q=0; q<GeometryInfo<3>::quads_per_cell; ++q)
+          if (cell->quad(q)->user_flag_set())
+            {
+              for (unsigned int d=0; d<this->get_fe().dofs_per_quad; ++d)
+                cell->quad(q)->set_mg_dof_index (level, d,
+                                                 new_numbers[cell->quad(q)->mg_dof_index(level, d)]);
+              cell->quad(q)->clear_user_flag();
+            }
+      // finally, restore user flags
+      const_cast<Triangulation<3> &>(this->get_tria()).load_user_flags (user_flags);
+    }
+
+  //HEX DoFs
+  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)
+        {
+          Assert(*i<new_numbers.size(), ExcInternalError());
+          *i = new_numbers[*i];
+        }
+    }
+}
+
+
+
 
 template <int dim, int spacedim>
 unsigned int
@@ -1276,9 +1510,16 @@ void DoFHandler<dim,spacedim>::clear_space ()
 
 template<int dim, int spacedim>
 template<int structdim>
-unsigned int DoFHandler<dim, spacedim>::get_dof_index (const unsigned int obj_level, const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index) const
+unsigned int DoFHandler<dim, spacedim>::get_dof_index (
+  const unsigned int obj_level,
+  const unsigned int obj_index,
+  const unsigned int fe_index,
+  const unsigned int local_index) const
 {
-  return internal::DoFHandler::Implementation::get_dof_index (*this, *this->mg_levels[obj_level], *this->mg_faces, obj_index, fe_index, local_index, internal::int2type<structdim> ());
+  return internal::DoFHandler::Implementation::get_dof_index (*this, *this->mg_levels[obj_level],
+                                                              *this->mg_faces, obj_index,
+                                                              fe_index, local_index,
+                                                              internal::int2type<structdim> ());
 }
 
 template<int dim, int spacedim>
index d68a703e7a5072c9ddc9c3e2994fbc5b8edcad04..6a2e07d419baf2800dee2941ada613b5659efe77 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 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
@@ -109,6 +109,17 @@ set_dof_index<1> (const unsigned int       obj_level,
                  const unsigned int       global_index) const;
 #endif
 
+#if deal_II_dimension < 2
+template
+void
+DoFHandler<deal_II_dimension,deal_II_dimension+2>::
+set_dof_index<1> (const unsigned int       obj_level,
+                 const unsigned int       obj_index,
+                 const unsigned int       fe_index,
+                 const unsigned int       local_index,
+                 const unsigned int       global_index) const;
+#endif
+
 #if deal_II_dimension >= 2
 template
 void
index 868b9aa43a7accde95555ede6e828cbdc7a6c740..65b801e371b672f053b1ddfdd7fc0179163b5ee1 100644 (file)
@@ -11,6 +11,7 @@
 //
 //---------------------------------------------------------------------------
 
+//TODO [TH]: renumber DoFs for multigrid is not done yet
 
 #include <deal.II/base/geometry_info.h>
 #include <deal.II/base/utilities.h>
@@ -251,7 +252,7 @@ namespace internal
                                                            next_free_dof);
 
           // update the cache used for cell dof indices
-          for (typename DoFHandler<dim,spacedim>::cell_iterator
+          for (typename DoFHandler<dim,spacedim>::level_cell_iterator
                cell = dof_handler.begin(); cell != dof_handler.end(); ++cell)
             if (cell->subdomain_id() != types::artificial_subdomain_id)
               cell->update_cell_dof_indices_cache ();
@@ -263,6 +264,249 @@ namespace internal
         }
 
 
+        /**
+         * Distribute dofs on the given
+         * cell, with new dofs starting
+         * with index
+         * @p next_free_dof. Return the
+         * next unused index number.
+         *
+         * This function is excluded from
+         * the @p distribute_dofs
+         * function since it can not be
+         * implemented dimension
+         * independent.
+         *
+         * Note that unlike for the usual
+         * dofs, here all cells and not
+         * only active ones are allowed.
+         */
+
+        // These three function
+        // have an unused
+        // DoFHandler object as
+        // their first
+        // argument. Without it,
+        // the file was not
+        // compileable under gcc
+        // 4.4.5 (Debian).
+        template <int spacedim>
+        static
+        unsigned int
+        distribute_mg_dofs_on_cell (const DoFHandler<1,spacedim> &,
+                                    typename DoFHandler<1,spacedim>::level_cell_iterator &cell,
+                                    unsigned int   next_free_dof)
+        {
+          const unsigned int dim = 1;
+
+          // distribute dofs of vertices
+          if (cell->get_fe().dofs_per_vertex > 0)
+            for (unsigned int v=0; v<GeometryInfo<1>::vertices_per_cell; ++v)
+              {
+                typename DoFHandler<dim,spacedim>::level_cell_iterator neighbor = cell->neighbor(v);
+
+                if (neighbor.state() == IteratorState::valid)
+                  {
+                    // has neighbor already been processed?
+                    if (neighbor->user_flag_set() &&
+                        (neighbor->level() == cell->level()))
+                      // copy dofs if the neighbor is on
+                      // the same level (only then are
+                      // mg dofs the same)
+                      {
+                        if (v==0)
+                          for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
+                            cell->set_mg_vertex_dof_index (cell->level(), 0, d,
+                                                           neighbor->mg_vertex_dof_index (cell->level(), 1, d));
+                        else
+                          for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
+                            cell->set_mg_vertex_dof_index (cell->level(), 1, d,
+                                                           neighbor->mg_vertex_dof_index (cell->level(), 0, d));
+
+                        // next neighbor
+                        continue;
+                      };
+                  };
+
+                // otherwise: create dofs newly
+                for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
+                  cell->set_mg_vertex_dof_index (cell->level(), v, d, next_free_dof++);
+              };
+
+          // dofs of line
+          if (cell->get_fe().dofs_per_line > 0)
+            for (unsigned int d=0; d<cell->get_fe().dofs_per_line; ++d)
+              cell->set_mg_dof_index (cell->level(), d, next_free_dof++);
+
+          // note that this cell has been processed
+          cell->set_user_flag ();
+
+          return next_free_dof;
+        }
+
+
+        template <int spacedim>
+        static
+        unsigned int
+        distribute_mg_dofs_on_cell (const DoFHandler<2,spacedim> &,
+                                    typename DoFHandler<2,spacedim>::level_cell_iterator &cell,
+                                    unsigned int   next_free_dof)
+        {
+          const unsigned int dim = 2;
+          if (cell->get_fe().dofs_per_vertex > 0)
+            // number dofs on vertices
+            for (unsigned int vertex=0; vertex<GeometryInfo<2>::vertices_per_cell; ++vertex)
+              // check whether dofs for this
+              // vertex have been distributed
+              // (only check the first dof)
+              if (cell->mg_vertex_dof_index(cell->level(), vertex, 0) == DoFHandler<2>::invalid_dof_index)
+                for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
+                  cell->set_mg_vertex_dof_index (cell->level(), vertex, d, next_free_dof++);
+
+          // for the four sides
+          if (cell->get_fe().dofs_per_line > 0)
+            for (unsigned int side=0; side<GeometryInfo<2>::faces_per_cell; ++side)
+              {
+                typename DoFHandler<dim,spacedim>::line_iterator line = cell->line(side);
+
+                // distribute dofs if necessary:
+                // check whether line dof is already
+                // numbered (check only first dof)
+                if (line->mg_dof_index(cell->level(), 0) == DoFHandler<2>::invalid_dof_index)
+                  // if not: distribute dofs
+                  for (unsigned int d=0; d<cell->get_fe().dofs_per_line; ++d)
+                    line->set_mg_dof_index (cell->level(), d, next_free_dof++);
+              };
+
+
+          // dofs of quad
+          if (cell->get_fe().dofs_per_quad > 0)
+            for (unsigned int d=0; d<cell->get_fe().dofs_per_quad; ++d)
+              cell->set_mg_dof_index (cell->level(), d, next_free_dof++);
+
+
+          // note that this cell has been processed
+          cell->set_user_flag ();
+
+          return next_free_dof;
+        }
+
+
+        template <int spacedim>
+        static
+        unsigned int
+        distribute_mg_dofs_on_cell (const DoFHandler<3,spacedim> &,
+                                    typename DoFHandler<3,spacedim>::level_cell_iterator &cell,
+                                    unsigned int   next_free_dof)
+        {
+          const unsigned int dim = 3;
+          if (cell->get_fe().dofs_per_vertex > 0)
+            // number dofs on vertices
+            for (unsigned int vertex=0; vertex<GeometryInfo<3>::vertices_per_cell; ++vertex)
+              // check whether dofs for this
+              // vertex have been distributed
+              // (only check the first dof)
+              if (cell->mg_vertex_dof_index(cell->level(), vertex, 0) == DoFHandler<3>::invalid_dof_index)
+                for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
+                  cell->set_mg_vertex_dof_index (cell->level(), vertex, d, next_free_dof++);
+
+          // for the lines
+          if (cell->get_fe().dofs_per_line > 0)
+            for (unsigned int l=0; l<GeometryInfo<3>::lines_per_cell; ++l)
+              {
+                typename DoFHandler<dim,spacedim>::line_iterator line = cell->line(l);
+
+                // distribute dofs if necessary:
+                // check whether line dof is already
+                // numbered (check only first dof)
+                if (line->mg_dof_index(cell->level(), 0) == DoFHandler<3>::invalid_dof_index)
+                  // if not: distribute dofs
+                  for (unsigned int d=0; d<cell->get_fe().dofs_per_line; ++d)
+                    line->set_mg_dof_index (cell->level(), d, next_free_dof++);
+              };
+
+          // for the quads
+          if (cell->get_fe().dofs_per_quad > 0)
+            for (unsigned int q=0; q<GeometryInfo<3>::quads_per_cell; ++q)
+              {
+                typename DoFHandler<dim,spacedim>::quad_iterator quad = cell->quad(q);
+
+                // distribute dofs if necessary:
+                // check whether line dof is already
+                // numbered (check only first dof)
+                if (quad->mg_dof_index(cell->level(), 0) == DoFHandler<3>::invalid_dof_index)
+                  // if not: distribute dofs
+                  for (unsigned int d=0; d<cell->get_fe().dofs_per_quad; ++d)
+                    quad->set_mg_dof_index (cell->level(), d, next_free_dof++);
+              };
+
+
+          // dofs of cell
+          if (cell->get_fe().dofs_per_hex > 0)
+            for (unsigned int d=0; d<cell->get_fe().dofs_per_hex; ++d)
+              cell->set_mg_dof_index (cell->level(), d, next_free_dof++);
+
+
+          // note that this cell has
+          // been processed
+          cell->set_user_flag ();
+
+          return next_free_dof;
+        }
+
+
+        template <int dim, int spacedim>
+        static
+        unsigned int
+        distribute_dofs_on_level (const unsigned int        offset,
+                                  const types::subdomain_id_t level_subdomain_id,
+                                  DoFHandler<dim,spacedim> &dof_handler,
+                                  const unsigned int level)
+        {
+          const dealii::Triangulation<dim,spacedim> &tria
+            = dof_handler.get_tria();
+          Assert (tria.n_levels() > 0, ExcMessage("Empty triangulation"));
+          if (level>=tria.n_levels())
+            return 0; //this is allowed for multigrid
+
+          // Clear user flags because we will
+          // need them. But first we save
+          // them and make sure that we
+          // restore them later such that at
+          // the end of this function the
+          // Triangulation will be in the
+          // same state as it was at the
+          // beginning of this function.
+          std::vector<bool> user_flags;
+          tria.save_user_flags(user_flags);
+          const_cast<dealii::Triangulation<dim,spacedim> &>(tria).clear_user_flags ();
+
+          unsigned int next_free_dof = offset;
+          typename DoFHandler<dim,spacedim>::level_cell_iterator
+          cell = dof_handler.begin(level),
+          endc = dof_handler.end(level);
+
+          for (; cell != endc; ++cell)
+            if ((level_subdomain_id == types::invalid_subdomain_id)
+                ||
+                (cell->level_subdomain_id() == level_subdomain_id))
+              next_free_dof
+                = Implementation::distribute_mg_dofs_on_cell (dof_handler, cell, next_free_dof);
+
+//                                               // update the cache used
+//                                               // for cell dof indices
+//              for (typename DoFHandler<dim,spacedim>::level_cell_iterator
+//                     cell = dof_handler.begin(); cell != dof_handler.end(); ++cell)
+//                if (cell->subdomain_id() != types::artificial_subdomain_id)
+//                  cell->update_cell_dof_indices_cache ();
+
+          // finally restore the user flags
+          const_cast<dealii::Triangulation<dim,spacedim> &>(tria).load_user_flags(user_flags);
+
+          return next_free_dof;
+        }
+
+
         /* --------------------- renumber_dofs functionality ---------------- */
 
 
@@ -326,12 +570,53 @@ namespace internal
           // update the cache
           // used for cell dof
           // indices
-          for (typename DoFHandler<1,spacedim>::cell_iterator
+          for (typename DoFHandler<1,spacedim>::level_cell_iterator
                cell = dof_handler.begin();
                cell != dof_handler.end(); ++cell)
             cell->update_cell_dof_indices_cache ();
         }
 
+        template <int spacedim>
+        static
+        void
+        renumber_mg_dofs (const std::vector<unsigned int> &new_numbers,
+                          const IndexSet &indices,
+                          DoFHandler<1,spacedim>          &dof_handler,
+                          const unsigned int level,
+                          const bool check_validity)
+        {
+          for (typename std::vector<typename DoFHandler<1,spacedim>::MGVertexDoFs>::iterator i=dof_handler.mg_vertex_dofs.begin();
+               i!=dof_handler.mg_vertex_dofs.end(); ++i)
+            // if the present vertex lives on
+            // the current level
+            if ((i->get_coarsest_level() <= level) &&
+                (i->get_finest_level() >= level))
+              for (unsigned int d=0; d<dof_handler.get_fe().dofs_per_vertex; ++d)
+                {
+                  unsigned int idx = i->get_index (level, d /*,dof_handler.get_fe().dofs_per_vertex ???*/);
+                  if (idx != DoFHandler<1>::invalid_dof_index)
+                    i->set_index (level, d /*, dof_handler.get_fe().dofs_per_vertex ???*/,
+                                  (indices.n_elements() == 0)?
+                                  (new_numbers[idx]) :
+                                  (new_numbers[indices.index_within_set(idx)]));
+
+                  if (check_validity)
+                    Assert(idx != DoFHandler<1>::invalid_dof_index, ExcInternalError ());
+                }
+
+
+          for (std::vector<unsigned int>::iterator i=dof_handler.mg_levels[level]->dof_object.dofs.begin();
+               i!=dof_handler.mg_levels[level]->dof_object.dofs.end(); ++i)
+            {
+              if (*i != DoFHandler<1>::invalid_dof_index)
+                {
+                  Assert(*i<new_numbers.size(), ExcInternalError());
+                  *i = (indices.n_elements() == 0)?
+                       (new_numbers[*i]) :
+                       (new_numbers[indices.index_within_set(*i)]);
+                }
+            }
+        }
 
 
         template <int spacedim>
@@ -391,12 +676,94 @@ namespace internal
           // update the cache
           // used for cell dof
           // indices
-          for (typename DoFHandler<2,spacedim>::cell_iterator
+          for (typename DoFHandler<2,spacedim>::level_cell_iterator
                cell = dof_handler.begin();
                cell != dof_handler.end(); ++cell)
             cell->update_cell_dof_indices_cache ();
         }
 
+        template <int spacedim>
+        static
+        void
+        renumber_mg_dofs (const std::vector<unsigned int> &new_numbers,
+                          const IndexSet &indices,
+                          DoFHandler<2,spacedim>          &dof_handler,
+                          const unsigned int level,
+                          const bool check_validity)
+        {
+          if (level>=dof_handler.get_tria().n_levels())
+            return;
+          for (typename std::vector<typename DoFHandler<2,spacedim>::MGVertexDoFs>::iterator i=dof_handler.mg_vertex_dofs.begin();
+               i!=dof_handler.mg_vertex_dofs.end(); ++i)
+            // if the present vertex lives on
+            // the present level
+            if ((i->get_coarsest_level() <= level) &&
+                (i->get_finest_level() >= level))
+              for (unsigned int d=0; d<dof_handler.get_fe().dofs_per_vertex; ++d)
+                {
+                  unsigned int idx =i->get_index (level, d/*,                    dof_handler.get_fe().dofs_per_vertex*/);
+                  if (idx != DoFHandler<1>::invalid_dof_index)
+                    i->set_index (level, d/*, dof_handler.get_fe().dofs_per_vertex*/,
+                                  ((indices.n_elements() == 0) ?
+                                   new_numbers[idx] :
+                                   new_numbers[indices.index_within_set(idx)]));
+
+                  if (check_validity)
+                    Assert(idx != DoFHandler<2>::invalid_dof_index, ExcInternalError ());
+                }
+
+          if (dof_handler.get_fe().dofs_per_line > 0)
+            {
+              // save user flags as they will be modified
+              std::vector<bool> user_flags;
+              dof_handler.get_tria().save_user_flags(user_flags);
+              const_cast<dealii::Triangulation<2,spacedim> &>(dof_handler.get_tria()).clear_user_flags ();
+
+              // flag all lines adjacent to cells of the current
+              // level, as those lines logically belong to the same
+              // level as the cell, at least for for isotropic
+              // refinement
+              typename DoFHandler<2,spacedim>::level_cell_iterator cell = dof_handler.begin(level),
+                                                                   endcell  = dof_handler.end(level);
+              for ( ; cell != endcell; ++cell)
+                for (unsigned int line=0; line < GeometryInfo<2>::faces_per_cell; ++line)
+                  cell->face(line)->set_user_flag();
+
+              for (typename DoFHandler<2,spacedim>::cell_iterator cell = dof_handler.begin();
+                   cell != dof_handler.end(); ++cell)
+                for (unsigned int l=0; l<GeometryInfo<2>::lines_per_cell; ++l)
+                  if (cell->line(l)->user_flag_set())
+                    {
+                      for (unsigned int d=0; d<dof_handler.get_fe().dofs_per_line; ++d)
+                        {
+                          unsigned int idx = cell->line(l)->mg_dof_index(level, d);
+                          if (idx != DoFHandler<1>::invalid_dof_index)
+                            cell->line(l)->set_mg_dof_index (level, d, ((indices.n_elements() == 0) ?
+                                                                        new_numbers[idx] :
+                                                                        new_numbers[indices.index_within_set(idx)]));
+                          if (check_validity)
+                            Assert(idx != DoFHandler<2>::invalid_dof_index, ExcInternalError ());
+                        }
+                      cell->line(l)->clear_user_flag();
+                    }
+              // finally, restore user flags
+              const_cast<dealii::Triangulation<2,spacedim> &>(dof_handler.get_tria()).load_user_flags (user_flags);
+            }
+
+          for (std::vector<unsigned int>::iterator i=dof_handler.mg_levels[level]->dof_object.dofs.begin();
+               i!=dof_handler.mg_levels[level]->dof_object.dofs.end(); ++i)
+            {
+              if (*i != DoFHandler<2>::invalid_dof_index)
+                {
+                  Assert(*i<new_numbers.size(), ExcInternalError());
+                  *i = ((indices.n_elements() == 0) ?
+                        new_numbers[*i] :
+                        new_numbers[indices.index_within_set(*i)]);
+                }
+            }
+
+        }
+
 
         template <int spacedim>
         static
@@ -462,11 +829,27 @@ namespace internal
           // update the cache
           // used for cell dof
           // indices
-          for (typename DoFHandler<3,spacedim>::cell_iterator
+          for (typename DoFHandler<3,spacedim>::level_cell_iterator
                cell = dof_handler.begin();
                cell != dof_handler.end(); ++cell)
             cell->update_cell_dof_indices_cache ();
         }
+
+        template <int spacedim>
+        static
+        void
+        renumber_mg_dofs (const std::vector<unsigned int> &new_numbers,
+                          const IndexSet &indices,
+                          DoFHandler<3,spacedim>          &dof_handler,
+                          const unsigned int level,
+                          const bool check_validity)
+        {
+          //TODO
+          AssertThrow(false, ExcNotImplemented());
+
+        }
+
+
       };
 
 
@@ -514,6 +897,27 @@ namespace internal
       }
 
 
+      template <int dim, int spacedim>
+      void
+      Sequential<dim,spacedim>::
+      distribute_mg_dofs (DoFHandler<dim,spacedim> &dof_handler,
+                          std::vector<NumberCache> &number_caches) const
+      {
+        std::vector<bool> user_flags;
+
+        dof_handler.get_tria().save_user_flags (user_flags);
+        const_cast<dealii::Triangulation<dim, spacedim>&>(dof_handler.get_tria()).clear_user_flags ();
+
+        for (unsigned int level = 0; level < dof_handler.get_tria().n_levels(); ++level)
+          {
+            unsigned int next_free_dof = Implementation::distribute_dofs_on_level(0, types::invalid_subdomain_id, dof_handler, level);
+
+            number_caches[level].n_global_dofs = next_free_dof;
+            number_caches[level].n_locally_owned_dofs = next_free_dof;
+          }
+
+        const_cast<dealii::Triangulation<dim, spacedim>&>(dof_handler.get_tria()).load_user_flags (user_flags);
+      }
 
       template <int dim, int spacedim>
       NumberCache
@@ -626,7 +1030,7 @@ namespace internal
         void
         fill_dofindices_recursively (const typename parallel::distributed::Triangulation<dim,spacedim> &tria,
                                      const unsigned int tree_index,
-                                     const typename DoFHandler<dim,spacedim>::cell_iterator &dealii_cell,
+                                     const typename DoFHandler<dim,spacedim>::level_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> > &vertices_with_ghost_neighbors,
                                      std::map<dealii::types::subdomain_id, typename types<dim>::cellinfo> &needs_to_get_cell)
@@ -720,13 +1124,131 @@ namespace internal
             }
         }
 
+        template <int dim, int spacedim>
+        void
+        fill_mg_dofindices_recursively (const typename parallel::distributed::Triangulation<dim,spacedim> &tria,
+                                        const unsigned int tree_index,
+                                        const typename DoFHandler<dim,spacedim>::level_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 unsigned int level)
+        {
+          if (dealii_cell->level()>(int)level)
+            return;
+          // see if we have to
+          // recurse...
+          if (dealii_cell->has_children())
+            {
+              typename dealii::internal::p4est::types<dim>::quadrant
+              p4est_child[GeometryInfo<dim>::max_children_per_cell];
+              internal::p4est::init_quadrant_children<dim>(p4est_cell, p4est_child);
+
+
+              for (unsigned int c=0; c<GeometryInfo<dim>::max_children_per_cell; ++c)
+                fill_mg_dofindices_recursively<dim,spacedim>(tria,
+                                                             tree_index,
+                                                             dealii_cell->child(c),
+                                                             p4est_child[c],
+                                                             vertices_with_ghost_neighbors,
+                                                             needs_to_get_cell,
+                                                             level);
+            }
+
+          if (dealii_cell->level()<(int)level)
+            return;
+
+          // now we are on the right level!
+          Assert(dealii_cell->level()==(int)level, ExcInternalError());
+
+          // see if
+          // the cell is flagged as
+          // interesting. note that we
+          // have only flagged our own
+          // cells before
+          if (dealii_cell->user_flag_set() && dealii_cell->level_subdomain_id() == tria.locally_owned_subdomain())
+            {
+              // check each vertex if
+              // it is interesting and
+              // push dofindices if yes
+              std::set<dealii::types::subdomain_id_t> 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
+                  neighbor_subdomains_of_vertex
+                    = vertices_with_ghost_neighbors.find (dealii_cell->vertex_index(v));
+
+                  if (neighbor_subdomains_of_vertex ==
+                      vertices_with_ghost_neighbors.end())
+                    continue;
+
+                  Assert(neighbor_subdomains_of_vertex->second.size()!=0,
+                         ExcInternalError());
+
+                  send_to.insert(neighbor_subdomains_of_vertex->second.begin(),
+                                 neighbor_subdomains_of_vertex->second.end());
+                }
+
+              // additionally, if we need to send to all our direct children (multigrid only)
+              if (dealii_cell->has_children())
+                {
+                  for (unsigned int c=0; c<GeometryInfo<dim>::max_children_per_cell; ++c)
+                    {
+                      //TODO: we don't know about our children if proc 0 owns all coarse cells!
+                      dealii::types::subdomain_id_t dest = dealii_cell->child(c)->level_subdomain_id();
+                      Assert(dest!=dealii::types::artificial_subdomain_id && dest!=dealii::types::invalid_subdomain_id, ExcInternalError());
+                      if (dest != tria.locally_owned_subdomain())
+                        send_to.insert(dest);
+                    }
+                }
+
+              if (send_to.size() > 0)
+                {
+                  // this cell's dof_indices
+                  // need to be sent to
+                  // someone
+                  std::vector<unsigned int>
+                  local_dof_indices (dealii_cell->get_fe().dofs_per_cell);
+                  dealii_cell->get_mg_dof_indices (local_dof_indices);
+
+                  for (std::set<dealii::types::subdomain_id_t>::iterator it=send_to.begin();
+                       it!=send_to.end(); ++it)
+                    {
+                      const dealii::types::subdomain_id_t subdomain = *it;
+
+                      // get an iterator
+                      // to what needs to
+                      // be sent to that
+                      // subdomain (if
+                      // already exists),
+                      // or create such
+                      // an object
+                      typename std::map<dealii::types::subdomain_id_t, typename types<dim>::cellinfo>::iterator
+                      p
+                        = needs_to_get_cell.insert (std::make_pair(subdomain,
+                                                                   typename types<dim>::cellinfo()))
+                          .first;
+
+                      p->second.tree_index.push_back(tree_index);
+                      p->second.quadrants.push_back(p4est_cell);
+
+                      p->second.dofs.push_back(dealii_cell->get_fe().dofs_per_cell);
+                      p->second.dofs.insert(p->second.dofs.end(),
+                                            local_dof_indices.begin(),
+                                            local_dof_indices.end());
+
+                    }
+                }
+            }
+        }
+
 
         template <int dim, int spacedim>
         void
         set_dofindices_recursively (
           const parallel::distributed::Triangulation<dim,spacedim> &tria,
           const typename dealii::internal::p4est::types<dim>::quadrant &p4est_cell,
-          const typename DoFHandler<dim,spacedim>::cell_iterator &dealii_cell,
+          const typename DoFHandler<dim,spacedim>::level_cell_iterator &dealii_cell,
           const typename dealii::internal::p4est::types<dim>::quadrant &quadrant,
           unsigned int *dofs)
         {
@@ -757,15 +1279,15 @@ namespace internal
 
               if (!complete)
                 const_cast
-                <typename DoFHandler<dim,spacedim>::cell_iterator &>
+                <typename DoFHandler<dim,spacedim>::level_cell_iterator &>
                 (dealii_cell)->set_user_flag();
               else
                 const_cast
-                <typename DoFHandler<dim,spacedim>::cell_iterator &>
+                <typename DoFHandler<dim,spacedim>::level_cell_iterator &>
                 (dealii_cell)->clear_user_flag();
 
               const_cast
-              <typename DoFHandler<dim,spacedim>::cell_iterator &>
+              <typename DoFHandler<dim,spacedim>::level_cell_iterator &>
               (dealii_cell)->set_dof_indices(dof_indices);
 
               return;
@@ -787,6 +1309,96 @@ namespace internal
                                                       quadrant, dofs);
         }
 
+
+        template <int dim, int spacedim>
+        void
+        set_mg_dofindices_recursively (
+          const parallel::distributed::Triangulation<dim,spacedim> &tria,
+          const typename dealii::internal::p4est::types<dim>::quadrant &p4est_cell,
+          const typename DoFHandler<dim,spacedim>::level_cell_iterator &dealii_cell,
+          const typename dealii::internal::p4est::types<dim>::quadrant &quadrant,
+          unsigned int *dofs,
+          unsigned int level)
+        {
+          if (internal::p4est::quadrant_is_equal<dim>(p4est_cell, quadrant))
+            {
+              Assert(dealii_cell->level_subdomain_id()!=dealii::types::artificial_subdomain_id, ExcInternalError());
+              Assert(dealii_cell->level()==(int)level, ExcInternalError());
+
+              // update dof indices of cell
+              std::vector<unsigned int>
+              dof_indices (dealii_cell->get_fe().dofs_per_cell);
+              dealii_cell->get_mg_dof_indices(dof_indices);
+
+              bool complete = true;
+              for (unsigned int i=0; i<dof_indices.size(); ++i)
+                if (dofs[i] != DoFHandler<dim,spacedim>::invalid_dof_index)
+                  {
+                    Assert((dof_indices[i] ==
+                            (DoFHandler<dim,spacedim>::invalid_dof_index))
+                           ||
+                           (dof_indices[i]==dofs[i]),
+                           ExcInternalError());
+                    dof_indices[i]=dofs[i];
+                  }
+                else
+                  complete=false;
+
+              if (!complete)
+                const_cast
+                <typename DoFHandler<dim,spacedim>::level_cell_iterator &>
+                (dealii_cell)->set_user_flag();
+              else
+                const_cast
+                <typename DoFHandler<dim,spacedim>::level_cell_iterator &>
+                (dealii_cell)->clear_user_flag();
+
+              const_cast
+              <typename DoFHandler<dim,spacedim>::level_cell_iterator &>
+              (dealii_cell)->set_mg_dof_indices(dof_indices);
+              return;
+            }
+
+          if (! dealii_cell->has_children())
+            return;
+
+          if (! internal::p4est::quadrant_is_ancestor<dim> (p4est_cell, quadrant))
+            return;
+
+          typename dealii::internal::p4est::types<dim>::quadrant
+          p4est_child[GeometryInfo<dim>::max_children_per_cell];
+          internal::p4est::init_quadrant_children<dim>(p4est_cell, p4est_child);
+
+          for (unsigned int c=0; c<GeometryInfo<dim>::max_children_per_cell; ++c)
+            set_mg_dofindices_recursively<dim,spacedim> (tria, p4est_child[c],
+                                                         dealii_cell->child(c),
+                                                         quadrant, dofs, level);
+
+        }
+
+        /**
+         * Return a vector in which,
+         * for every vertex index, we
+         * mark whether a locally owned
+         * cell is adjacent.
+         */
+        template <int dim, int spacedim>
+        std::vector<bool>
+        mark_locally_active_vertices (const parallel::distributed::Triangulation<dim,spacedim> &triangulation)
+        {
+          std::vector<bool> locally_active_vertices (triangulation.n_vertices(),
+                                                     false);
+
+          for (typename dealii::Triangulation<dim,spacedim>::active_cell_iterator
+               cell = triangulation.begin_active();
+               cell != triangulation.end(); ++cell)
+            if (cell->subdomain_id() == triangulation.locally_owned_subdomain())
+              for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+                locally_active_vertices[cell->vertex_index(v)] = true;
+
+          return locally_active_vertices;
+        }
+
         /**
          * Return a vector in which,
          * for every vertex index, we
@@ -795,23 +1407,23 @@ namespace internal
          */
         template <int dim, int spacedim>
         std::vector<bool>
-        mark_locally_active_vertices (const parallel::distributed::Triangulation<dim,spacedim> &triangulation)
+        mark_locally_active_vertices_on_level (const parallel::distributed::Triangulation<dim,spacedim> &triangulation, unsigned int level)
         {
           std::vector<bool> locally_active_vertices (triangulation.n_vertices(),
                                                      false);
 
-          for (typename dealii::Triangulation<dim,spacedim>::active_cell_iterator
-               cell = triangulation.begin_active();
-               cell != triangulation.end(); ++cell)
-            if (cell->subdomain_id() == triangulation.locally_owned_subdomain())
-              for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
-                locally_active_vertices[cell->vertex_index(v)] = true;
+          if (level<triangulation.n_levels())
+            for (typename dealii::Triangulation<dim,spacedim>::cell_iterator
+                 cell = triangulation.begin(level);
+                 cell != triangulation.end(level); ++cell)
+              if (cell->level_subdomain_id() == triangulation.locally_owned_subdomain())
+                for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+                  locally_active_vertices[cell->vertex_index(v)] = true;
 
           return locally_active_vertices;
         }
 
 
-
         template <int spacedim>
         void
         communicate_dof_indices_on_marked_cells
@@ -851,7 +1463,7 @@ namespace internal
           cellmap_t;
           cellmap_t needs_to_get_cells;
 
-          for (typename DoFHandler<dim,spacedim>::cell_iterator
+          for (typename DoFHandler<dim,spacedim>::level_cell_iterator
                cell = dof_handler.begin(0);
                cell != dof_handler.end(0);
                ++cell)
@@ -963,7 +1575,7 @@ namespace internal
 
               for (unsigned int c=0; c<cells; ++c, dofs+=1+dofs[0])
                 {
-                  typename DoFHandler<dim,spacedim>::cell_iterator
+                  typename DoFHandler<dim,spacedim>::level_cell_iterator
                   cell (&dof_handler.get_tria(),
                         0,
                         p4est_tree_to_coarse_cell_permutation[treeindex[c]],
@@ -1031,6 +1643,239 @@ namespace internal
           MPI_Barrier(tr->get_communicator());
 #endif
         }
+
+
+
+        template <int spacedim>
+        void
+        communicate_mg_dof_indices_on_marked_cells
+        (const DoFHandler<1,spacedim> &dof_handler,
+         const std::map<unsigned int, std::set<dealii::types::subdomain_id_t> > &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,
+         const unsigned int level)
+        {
+          Assert (false, ExcNotImplemented());
+        }
+
+
+
+        template <int dim, int spacedim>
+        void
+        communicate_mg_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::vector<unsigned int> &coarse_cell_to_p4est_tree_permutation,
+         const std::vector<unsigned int> &p4est_tree_to_coarse_cell_permutation,
+         const unsigned int level)
+        {
+#ifndef DEAL_II_USE_P4EST
+          (void)vertices_with_ghost_neighbors;
+          Assert (false, ExcNotImplemented());
+#else
+
+          const parallel::distributed::Triangulation< dim, spacedim > *tr
+            = (dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>
+               (&dof_handler.get_tria()));
+          Assert (tr != 0, ExcInternalError());
+
+          // now collect cells and their
+          // dof_indices for the
+          // interested neighbors
+          typedef
+          std::map<dealii::types::subdomain_id_t, typename types<dim>::cellinfo>
+          cellmap_t;
+          cellmap_t needs_to_get_cells;
+
+          if (level < tr->n_levels())
+            for (typename DoFHandler<dim,spacedim>::level_cell_iterator
+                 cell = dof_handler.begin(0);
+                 cell != dof_handler.end(0);
+                 ++cell)
+              {
+                typename dealii::internal::p4est::types<dim>::quadrant p4est_coarse_cell;
+                internal::p4est::init_coarse_quadrant<dim>(p4est_coarse_cell);
+
+                fill_mg_dofindices_recursively<dim,spacedim>
+                (*tr,
+                 coarse_cell_to_p4est_tree_permutation[cell->index()],
+                 cell,
+                 p4est_coarse_cell,
+                 vertices_with_ghost_neighbors,
+                 needs_to_get_cells,
+                 level);
+              }
+
+
+
+          //sending
+          std::vector<std::vector<char> > sendbuffers (needs_to_get_cells.size());
+          std::vector<std::vector<char> >::iterator buffer = sendbuffers.begin();
+          std::vector<MPI_Request> requests (needs_to_get_cells.size());
+
+          unsigned int idx=0;
+
+          for (typename cellmap_t::iterator it=needs_to_get_cells.begin();
+               it!=needs_to_get_cells.end();
+               ++it, ++buffer, ++idx)
+            {
+              const unsigned int num_cells = it->second.tree_index.size();
+
+              Assert(num_cells==it->second.quadrants.size(), ExcInternalError());
+              Assert(num_cells>0, ExcInternalError());
+
+              // pack all the data into
+              // the buffer for this
+              // recipient and send
+              // it. keep data around
+              // till we can make sure
+              // that the packet has been
+              // received
+              it->second.pack_data (*buffer);
+              MPI_Isend(&(*buffer)[0], buffer->size(),
+                        MPI_BYTE, it->first,
+                        123, tr->get_communicator(), &requests[idx]);
+              std::cout << "send ghostdata: " << tr->locally_owned_subdomain() << "->" << it->first << std::endl;
+            }
+
+
+          // 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;
+          if (level < tr->n_levels())
+            {
+              std::vector<unsigned int> local_dof_indices;
+              typename DoFHandler<dim,spacedim>::level_cell_iterator
+              cell, endc = dof_handler.end(level);
+
+              for (cell = dof_handler.begin(level); cell != endc; ++cell)
+                {
+                  if (cell->level_subdomain_id()==dealii::types::artificial_subdomain_id)
+                    {
+                      //artificial
+                    }
+                  else if (cell->level_subdomain_id()==dof_handler.get_tria().locally_owned_subdomain())
+                    {
+                      //own
+                      local_dof_indices.resize (cell->get_fe().dofs_per_cell);
+                      cell->get_mg_dof_indices (local_dof_indices);
+                      if (local_dof_indices.end() !=
+                          std::find (local_dof_indices.begin(),
+                                     local_dof_indices.end(),
+                                     DoFHandler<dim,spacedim>::invalid_dof_index))
+                        cell->set_user_flag();
+                      else
+                        cell->clear_user_flag();
+                    }
+                  else
+                    {
+                      //ghost
+                      if (cell->user_flag_set())
+                        senders.insert(cell->level_subdomain_id());
+                    }
+                }
+
+            }
+
+
+          //* 5. receive ghostcelldata
+          std::vector<char> receive;
+          typename types<dim>::cellinfo cellinfo;
+          for (unsigned int i=0; i<senders.size(); ++i)
+            {
+              MPI_Status status;
+              int len;
+              MPI_Probe(MPI_ANY_SOURCE, 123, tr->get_communicator(), &status);
+              MPI_Get_count(&status, MPI_BYTE, &len);
+              receive.resize(len);
+
+              std::cout << "receive ghostdata: " << status.MPI_SOURCE << "->" << tr->locally_owned_subdomain() << std::endl;
+
+              char *ptr = &receive[0];
+              MPI_Recv(ptr, len, MPI_BYTE, status.MPI_SOURCE, status.MPI_TAG,
+                       tr->get_communicator(), &status);
+
+              unsigned int cells;
+              memcpy(&cells, ptr, sizeof(unsigned int));
+              ptr+=sizeof(unsigned int);
+
+              //reinterpret too evil?
+              unsigned int *treeindex=reinterpret_cast<unsigned int *>(ptr);
+              ptr+=cells*sizeof(unsigned int);
+              typename dealii::internal::p4est::types<dim>::quadrant *quadrant
+                =reinterpret_cast<typename dealii::internal::p4est::types<dim>::quadrant *>(ptr);
+              ptr+=cells*sizeof(typename dealii::internal::p4est::types<dim>::quadrant);
+              unsigned int *dofs=reinterpret_cast<unsigned int *>(ptr);
+
+              for (unsigned int c=0; c<cells; ++c, dofs+=1+dofs[0])
+                {
+                  typename DoFHandler<dim,spacedim>::level_cell_iterator
+                  cell (&dof_handler.get_tria(),
+                        0,
+                        p4est_tree_to_coarse_cell_permutation[treeindex[c]],
+                        &dof_handler);
+
+                  typename dealii::internal::p4est::types<dim>::quadrant p4est_coarse_cell;
+                  internal::p4est::init_coarse_quadrant<dim>(p4est_coarse_cell);
+
+                  Assert(cell->get_fe().dofs_per_cell==dofs[0], ExcInternalError());
+
+                  set_mg_dofindices_recursively<dim,spacedim> (*tr,
+                                                               p4est_coarse_cell,
+                                                               cell,
+                                                               quadrant[c],
+                                                               (dofs+1),
+                                                               level);
+                }
+            }
+
+          // complete all sends, so that we can
+          // safely destroy the buffers.
+          if (requests.size() > 0)
+            MPI_Waitall(requests.size(), &requests[0], MPI_STATUSES_IGNORE);
+
+
+#ifdef DEBUG
+          {
+            //check all msgs got sent and received
+            unsigned int sum_send=0;
+            unsigned int sum_recv=0;
+            unsigned int sent=needs_to_get_cells.size();
+            unsigned int recv=senders.size();
+
+            std::cout << tr->locally_owned_subdomain() << " " << sent << " " << recv << std::endl;
+
+            MPI_Reduce(&sent, &sum_send, 1, MPI_UNSIGNED, MPI_SUM, 0, tr->get_communicator());
+            MPI_Reduce(&recv, &sum_recv, 1, MPI_UNSIGNED, MPI_SUM, 0, tr->get_communicator());
+            Assert(sum_send==sum_recv, ExcInternalError());
+          }
+#endif
+
+
+          // important, so that sends between two
+          // calls to this function are not mixed
+          // up.
+          //
+          // this is necessary because above we
+          // just see if there are messages and
+          // then receive them, without
+          // discriminating where they come from
+          // and whether they were sent in phase
+          // 1 or 2. the need for a global
+          // communication step like this barrier
+          // could be avoided by receiving
+          // messages specifically from those
+          // processors from which we expect
+          // messages, and by using different
+          // tags for phase 1 and 2
+          MPI_Barrier(tr->get_communicator());
+#endif
+        }
+
+
+
+
       }
 
 #endif // DEAL_II_USE_P4EST
@@ -1049,7 +1894,6 @@ namespace internal
         Assert (false, ExcNotImplemented());
 #else
 
-
         parallel::distributed::Triangulation< dim, spacedim > *tr
           = (dynamic_cast<parallel::distributed::Triangulation<dim,spacedim>*>
              (const_cast<dealii::Triangulation< dim, spacedim >*>
@@ -1272,6 +2116,250 @@ namespace internal
       }
 
 
+      template <int dim, int spacedim>
+      void
+      ParallelDistributed<dim, spacedim>::
+      distribute_mg_dofs (DoFHandler<dim,spacedim> &dof_handler,
+                          std::vector<NumberCache> &number_caches) const
+      {
+#ifndef DEAL_II_USE_P4EST
+        (void)dof_handler;
+        (void)number_caches;
+        Assert (false, ExcNotImplemented());
+#else
+
+       // TODO: distributed geometric multigrid is not complete yet
+        Assert (false, ExcNotImplemented());
+       return false;   
+       
+        parallel::distributed::Triangulation< dim, spacedim > *tr
+          = (dynamic_cast<parallel::distributed::Triangulation<dim,spacedim>*>
+             (const_cast<dealii::Triangulation< dim, spacedim >*>
+              (&dof_handler.get_tria())));
+        Assert (tr != 0, ExcInternalError());
+        const unsigned int
+        n_cpus = Utilities::MPI::n_mpi_processes (tr->get_communicator());
+
+        unsigned int n_levels = Utilities::MPI::max(dof_handler.get_tria().n_levels(), tr->get_communicator());
+
+        for (unsigned int level = 0; level < n_levels; ++level)
+          {
+            std::cout << tr->locally_owned_subdomain() << ": on level " << level << std::endl;
+            NumberCache &number_cache = number_caches[level];
+
+            //* 1. distribute on own
+            //* subdomain
+            const unsigned int n_initial_local_dofs =
+              Implementation::distribute_dofs_on_level(0, tr->locally_owned_subdomain(), dof_handler, level);
+
+            //* 2. iterate over ghostcells and
+            //kill dofs that are not owned
+            //by us
+            std::vector<unsigned int> renumbering(n_initial_local_dofs);
+            for (unsigned int i=0; i<renumbering.size(); ++i)
+              renumbering[i] = i;
+
+            if (level<tr->n_levels())
+              {
+                std::vector<unsigned int> local_dof_indices;
+
+                typename DoFHandler<dim,spacedim>::level_cell_iterator
+                cell = dof_handler.begin(level),
+                endc = dof_handler.end(level);
+
+                for (; cell != endc; ++cell)
+                  if (cell->level_subdomain_id() != DoFHandler<dim,spacedim>::invalid_dof_index &&
+                      (cell->level_subdomain_id() < tr->locally_owned_subdomain()))
+                    {
+                      // we found a
+                      // neighboring ghost
+                      // cell whose subdomain
+                      // is "stronger" than
+                      // our own subdomain
+
+                      // delete all dofs that
+                      // live there and that
+                      // we have previously
+                      // assigned a number to
+                      // (i.e. the ones on
+                      // the interface)
+                      local_dof_indices.resize (cell->get_fe().dofs_per_cell);
+                      cell->get_mg_dof_indices (local_dof_indices);
+                      for (unsigned int i=0; i<cell->get_fe().dofs_per_cell; ++i)
+                        if (local_dof_indices[i] != DoFHandler<dim,spacedim>::invalid_dof_index)
+                          renumbering[local_dof_indices[i]]
+                            = DoFHandler<dim,spacedim>::invalid_dof_index;
+                    }
+              }
+
+
+            // make indices consecutive
+            number_cache.n_locally_owned_dofs = 0;
+            for (std::vector<unsigned int>::iterator it=renumbering.begin();
+                 it!=renumbering.end(); ++it)
+              if (*it != DoFHandler<dim,spacedim>::invalid_dof_index)
+                *it = number_cache.n_locally_owned_dofs++;
+
+            //* 3. communicate local dofcount and
+            //shift ids to make them unique
+            number_cache.n_locally_owned_dofs_per_processor.resize(n_cpus);
+
+            MPI_Allgather ( &number_cache.n_locally_owned_dofs,
+                            1, MPI_UNSIGNED,
+                            &number_cache.n_locally_owned_dofs_per_processor[0],
+                            1, MPI_UNSIGNED,
+                            tr->get_communicator());
+
+            const unsigned int
+            shift = std::accumulate (number_cache
+                                     .n_locally_owned_dofs_per_processor.begin(),
+                                     number_cache
+                                     .n_locally_owned_dofs_per_processor.begin()
+                                     + tr->locally_owned_subdomain(),
+                                     0);
+            for (std::vector<unsigned int>::iterator it=renumbering.begin();
+                 it!=renumbering.end(); ++it)
+              if (*it != DoFHandler<dim,spacedim>::invalid_dof_index)
+                (*it) += shift;
+
+            // now re-enumerate all dofs to
+            // this shifted and condensed
+            // numbering form.  we renumber
+            // some dofs as invalid, so
+            // choose the nocheck-version.
+            Implementation::renumber_mg_dofs (renumbering, IndexSet(0),
+                                              dof_handler, level, false);
+
+            // now a little bit of
+            // housekeeping
+            number_cache.n_global_dofs
+              = std::accumulate (number_cache
+                                 .n_locally_owned_dofs_per_processor.begin(),
+                                 number_cache
+                                 .n_locally_owned_dofs_per_processor.end(),
+                                 0);
+
+            number_cache.locally_owned_dofs = IndexSet(number_cache.n_global_dofs);
+            number_cache.locally_owned_dofs
+            .add_range(shift,
+                       shift+number_cache.n_locally_owned_dofs);
+            number_cache.locally_owned_dofs.compress();
+
+            // fill global_dof_indexsets
+            number_cache.locally_owned_dofs_per_processor.resize(n_cpus);
+            {
+              unsigned int lshift = 0;
+              for (unsigned int i=0; i<n_cpus; ++i)
+                {
+                  number_cache.locally_owned_dofs_per_processor[i]
+                    = IndexSet(number_cache.n_global_dofs);
+                  number_cache.locally_owned_dofs_per_processor[i]
+                  .add_range(lshift,
+                             lshift +
+                             number_cache.n_locally_owned_dofs_per_processor[i]);
+                  lshift += number_cache.n_locally_owned_dofs_per_processor[i];
+                }
+            }
+            Assert(number_cache.locally_owned_dofs_per_processor
+                   [tr->locally_owned_subdomain()].n_elements()
+                   ==
+                   number_cache.n_locally_owned_dofs,
+                   ExcInternalError());
+            Assert(!number_cache.locally_owned_dofs_per_processor
+                   [tr->locally_owned_subdomain()].n_elements()
+                   ||
+                   number_cache.locally_owned_dofs_per_processor
+                   [tr->locally_owned_subdomain()].nth_index_in_set(0)
+                   == shift,
+                   ExcInternalError());
+
+            //* 4. send dofids of cells that are
+            //ghostcells on other machines
+            std::vector<bool> user_flags;
+            tr->save_user_flags(user_flags);
+            tr->clear_user_flags ();
+
+            //mark all own cells for transfer
+            if (level < tr->n_levels())
+              {
+                typename DoFHandler<dim,spacedim>::level_cell_iterator
+                cell, endc = dof_handler.end(level);
+                for (cell = dof_handler.begin(level); cell != endc; ++cell)
+                  if (cell->level_subdomain_id() != dealii::types::artificial_subdomain_id)
+                    cell->set_user_flag();
+              }
+
+            //mark the vertices we are interested
+            //in, i.e. belonging to own and marked cells
+            const std::vector<bool> locally_active_vertices
+              = mark_locally_active_vertices_on_level (*tr, level);
+
+            // add each ghostcells'
+            // subdomain to the vertex and
+            // keep track of interesting
+            // neighbors
+            std::map<unsigned int, std::set<dealii::types::subdomain_id_t> >
+            vertices_with_ghost_neighbors;
+            if (level < tr->n_levels())
+              for (typename DoFHandler<dim,spacedim>::level_cell_iterator
+                   cell = dof_handler.begin(level);
+                   cell != dof_handler.end(level); ++cell)
+                if (cell->level_subdomain_id() != dealii::types::artificial_subdomain_id && cell->level_subdomain_id() != tr->locally_owned_subdomain())
+                  for (unsigned int v=0; v<GeometryInfo<dim>::vertices_per_cell; ++v)
+                    if (locally_active_vertices[cell->vertex_index(v)])
+                      vertices_with_ghost_neighbors[cell->vertex_index(v)]
+                      .insert (cell->level_subdomain_id());
+
+
+            /* Send and receive cells. After this,
+            only the local cells are marked,
+            that received new data. This has to
+            be communicated in a second
+            communication step. */
+
+            communicate_mg_dof_indices_on_marked_cells( dof_handler,
+                                                        vertices_with_ghost_neighbors,
+                                                        tr->coarse_cell_to_p4est_tree_permutation,
+                                                        tr->p4est_tree_to_coarse_cell_permutation,
+                                                        level);
+            communicate_mg_dof_indices_on_marked_cells( dof_handler,
+                                                        vertices_with_ghost_neighbors,
+                                                        tr->coarse_cell_to_p4est_tree_permutation,
+                                                        tr->p4est_tree_to_coarse_cell_permutation,
+                                                        level);
+
+            tr->load_user_flags(user_flags);
+
+#ifdef DEBUG
+            //check that we are really done
+            if (level < tr->n_levels())
+              {
+                std::vector<unsigned int> local_dof_indices;
+                typename DoFHandler<dim,spacedim>::level_cell_iterator
+                cell, endc = dof_handler.end(level);
+
+                for (cell = dof_handler.begin(level); cell != endc; ++cell)
+                  if (cell->level_subdomain_id() != dealii::types::artificial_subdomain_id)
+                    {
+                      local_dof_indices.resize (cell->get_fe().dofs_per_cell);
+                      cell->get_mg_dof_indices (local_dof_indices);
+                      if (local_dof_indices.end() !=
+                          std::find (local_dof_indices.begin(),
+                                     local_dof_indices.end(),
+                                     DoFHandler<dim,spacedim>::invalid_dof_index))
+                        {
+                          int warn; // TODO
+                          //Assert(false, ExcMessage ("not all dofs got distributed!"));
+                        }
+                    }
+              }
+#endif // DEBUG
+
+          }
+
+#endif // DEAL_II_USE_P4EST
+      }
+
 
       template <int dim, int spacedim>
       NumberCache
index 4b26224d4452bc1f616756dc3ed1098c01444398..37642149c73dc232ad7cee594d6a02dc48acada8 100644 (file)
@@ -66,66 +66,8 @@ extern "C" long int lrand48 (void);
 
 DEAL_II_NAMESPACE_OPEN
 
-
 namespace DoFRenumbering
 {
-  namespace internal
-  {
-// The following two classes are defined to be used in the compute_*
-// functions. Using them allows to use the same function to compute
-// level numbering for multigrid as well as numbering for the global
-// system matrix.
-    template <class T>
-    class WrapDoFIterator : private T
-    {
-    public:
-      typedef typename T::AccessorType AccessorType;
-
-      WrapDoFIterator (const T &t) : T(t) {}
-
-      void get_dof_indices (std::vector<unsigned int> &v) const
-      {
-        (*this)->get_dof_indices(v);
-      }
-
-      template <class T2>
-      bool operator != (const T2 &i) const
-      {
-        return (! (T::operator==(i)));
-      }
-      // Allow access to these private operators of T
-      using T::operator->;
-      using T::operator++;
-      using T::operator==;
-    };
-
-
-
-    template <class T>
-    class WrapMGDoFIterator : private T
-    {
-    public:
-      typedef typename T::AccessorType AccessorType;
-
-      WrapMGDoFIterator (const T &t) : T(t) {}
-
-      void get_dof_indices (std::vector<unsigned int> &v) const
-      {
-        (*this)->get_mg_dof_indices(v);
-      }
-
-      bool operator != (const WrapMGDoFIterator<T> &i) const
-      {
-        return (! (T::operator==(i)));
-      }
-      // Allow access to these
-      // private operators of T
-      using T::operator->;
-      using T::operator++;
-      using T::operator==;
-    };
-  }
-
   namespace boost
   {
     namespace types
@@ -347,7 +289,7 @@ namespace DoFRenumbering
 
           dofs_on_this_cell.resize (dofs_per_cell);
 
-          cell->get_dof_indices (dofs_on_this_cell);
+          cell->dof_indices (dofs_on_this_cell);
           for (unsigned int i=0; i<dofs_per_cell; ++i)
             for (unsigned int j=0; j<dofs_per_cell; ++j)
               if (dofs_on_this_cell[i] > dofs_on_this_cell[j])
@@ -488,12 +430,14 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
-  void Cuthill_McKee (MGDoFHandler<dim>               &dof_handler,
+  template <class DH>
+  void Cuthill_McKee (DH               &dof_handler,
                       const unsigned int               level,
                       const bool                       reversed_numbering,
                       const std::vector<unsigned int> &starting_indices)
   {
+    Assert(dof_handler.n_dofs(level) != numbers::invalid_unsigned_int,
+           ExcNotInitialized());
 //TODO: we should be doing the same here as in the other compute_CMK function to preserve some memory
 
     // make the connection graph
@@ -524,20 +468,15 @@ namespace DoFRenumbering
     std::vector<unsigned int> renumbering (dof_handler.n_locally_owned_dofs(),
                                            DoFHandler<dim>::invalid_dof_index);
 
-    typedef
-    internal::WrapDoFIterator<typename DoFHandler<dim,spacedim>
-    ::active_cell_iterator>
-    ITERATOR;
-
     typename DoFHandler<dim,spacedim>::active_cell_iterator
-    istart = dof_handler.begin_active();
-    ITERATOR start = istart;
-    const typename DoFHandler<dim,spacedim>::cell_iterator
+    start = dof_handler.begin_active();
+    const typename DoFHandler<dim,spacedim>::level_cell_iterator
     end = dof_handler.end();
 
     const unsigned int result =
-      compute_component_wise<dim, spacedim, ITERATOR,
-      typename DoFHandler<dim,spacedim>::cell_iterator>
+      compute_component_wise<dim,spacedim,
+      typename DoFHandler<dim,spacedim>::active_cell_iterator,
+      typename DoFHandler<dim,spacedim>::level_cell_iterator>
       (renumbering, start, end, component_order_arg);
     if (result == 0)
       return;
@@ -557,8 +496,23 @@ namespace DoFRenumbering
             ExcRenumberingIncomplete());
 
     dof_handler.renumber_dofs (renumbering);
+
+    // for (unsigned int level=0;level<dof_handler.get_tria().n_levels();++level)
+    //   if (dof_handler.n_dofs(level) != numbers::invalid_unsigned_int)
+    //  component_wise(dof_handler, level, component_order_arg);
   }
 
+  // This function is only for compatibility reasons and will vanish in 8.0
+  template <int dim>
+  void
+  component_wise (MGDoFHandler<dim>        &dof_handler,
+                  const std::vector<unsigned int> &component_order_arg)
+  {
+    DoFHandler<dim> &active_dof = dof_handler;
+    component_wise(active_dof, component_order_arg);
+    for (unsigned int level=0; level<dof_handler.get_tria().n_levels(); ++level)
+      component_wise(dof_handler, level, component_order_arg);
+  }
 
 
   template <int dim>
@@ -566,23 +520,20 @@ namespace DoFRenumbering
   component_wise (hp::DoFHandler<dim>             &dof_handler,
                   const std::vector<unsigned int> &component_order_arg)
   {
+//TODO: Merge with previous function
     std::vector<unsigned int> renumbering (dof_handler.n_dofs(),
                                            hp::DoFHandler<dim>::invalid_dof_index);
 
-    typedef
-    internal::WrapDoFIterator<typename hp::DoFHandler<dim>::active_cell_iterator> ITERATOR;
-
     typename hp::DoFHandler<dim>::active_cell_iterator
-    istart = dof_handler.begin_active();
-    ITERATOR start = istart;
-    const typename hp::DoFHandler<dim>::cell_iterator
+    start = dof_handler.begin_active();
+    const typename hp::DoFHandler<dim>::level_cell_iterator
     end = dof_handler.end();
 
     const unsigned int result =
-      compute_component_wise<dim, dim, ITERATOR,
-      typename hp::DoFHandler<dim>::cell_iterator>(renumbering,
-                                                   start, end,
-                                                   component_order_arg);
+      compute_component_wise<hp::DoFHandler<dim>::dimension,hp::DoFHandler<dim>::space_dimension,
+      typename hp::DoFHandler<dim>::active_cell_iterator,
+      typename hp::DoFHandler<dim>::level_cell_iterator>
+      (renumbering, start, end, component_order_arg);
 
     if (result == 0) return;
 
@@ -594,28 +545,25 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
+  template <class DH>
   void
-  component_wise (MGDoFHandler<dim> &dof_handler,
+  component_wise (DH &dof_handler,
                   const unsigned int level,
                   const std::vector<unsigned int> &component_order_arg)
   {
-    std::vector<unsigned int> renumbering (dof_handler.n_dofs(level),
-                                           DoFHandler<dim>::invalid_dof_index);
+    Assert(dof_handler.n_dofs(level) != numbers::invalid_unsigned_int,
+           ExcNotInitialized());
 
-    typedef
-    internal::WrapMGDoFIterator<typename MGDoFHandler<dim>::cell_iterator> ITERATOR;
+    std::vector<unsigned int> renumbering (dof_handler.n_dofs(level),
+                                           DH::invalid_dof_index);
 
-    typename MGDoFHandler<dim>::cell_iterator
-    istart =dof_handler.begin(level);
-    ITERATOR start = istart;
-    typename MGDoFHandler<dim>::cell_iterator
-    iend = dof_handler.end(level);
-    const ITERATOR end = iend;
+    typename DH::level_cell_iterator start =dof_handler.begin(level);
+    typename DH::level_cell_iterator end = dof_handler.end(level);
 
     const unsigned int result =
-      compute_component_wise<dim, dim, ITERATOR, ITERATOR>(
-        renumbering, start, end, component_order_arg);
+      compute_component_wise<DH::dimension, DH::space_dimension,
+      typename DH::level_cell_iterator, typename DH::level_cell_iterator>
+      (renumbering, start, end, component_order_arg);
 
     if (result == 0) return;
 
@@ -628,32 +576,6 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
-  void
-  component_wise (MGDoFHandler<dim> &dof_handler,
-                  const std::vector<unsigned int> &component_order_arg)
-  {
-    // renumber the non-MG part of
-    // the DoFHandler in parallel to
-    // the MG part. Because
-    // MGDoFHandler::renumber_dofs
-    // uses the user flags we can't
-    // run renumbering on individual
-    // levels in parallel to the
-    // other levels
-    void (*non_mg_part) (DoFHandler<dim> &, const std::vector<unsigned int> &)
-      = &component_wise<dim>;
-    Threads::Task<>
-    task = Threads::new_task (non_mg_part, dof_handler, component_order_arg);
-
-    for (unsigned int level=0; level<dof_handler.get_tria().n_levels(); ++level)
-      component_wise (dof_handler, level, component_order_arg);
-
-    task.join();
-  }
-
-
-
   template <int dim, int spacedim, class ITERATOR, class ENDITERATOR>
   unsigned int
   compute_component_wise (std::vector<unsigned int> &new_indices,
@@ -748,7 +670,7 @@ namespace DoFRenumbering
           const unsigned int fe_index = cell->active_fe_index();
           const unsigned int dofs_per_cell = fe_collection[fe_index].dofs_per_cell;
           local_dof_indices.resize (dofs_per_cell);
-          cell.get_dof_indices (local_dof_indices);
+          cell->dof_indices (local_dof_indices);
           for (unsigned int i=0; i<dofs_per_cell; ++i)
             if (start->get_dof_handler().locally_owned_dofs().is_element(local_dof_indices[i]))
               component_to_dof_map[component_list[fe_index][i]].
@@ -878,25 +800,19 @@ namespace DoFRenumbering
 
   template <int dim, int spacedim>
   void
-  block_wise (DoFHandler<dim,spacedim>        &dof_handler)
+  block_wise (DoFHandler<dim,spacedim> &dof_handler)
   {
     std::vector<unsigned int> renumbering (dof_handler.n_locally_owned_dofs(),
                                            DoFHandler<dim>::invalid_dof_index);
 
-    typedef
-    internal::WrapDoFIterator<typename DoFHandler<dim,spacedim>
-    ::active_cell_iterator>
-    ITERATOR;
-
     typename DoFHandler<dim,spacedim>::active_cell_iterator
-    istart = dof_handler.begin_active();
-    ITERATOR start = istart;
-    const typename DoFHandler<dim,spacedim>::cell_iterator
+    start = dof_handler.begin_active();
+    const typename DoFHandler<dim,spacedim>::level_cell_iterator
     end = dof_handler.end();
 
     const unsigned int result =
-      compute_block_wise<dim, spacedim, ITERATOR,
-      typename DoFHandler<dim,spacedim>::cell_iterator>
+      compute_block_wise<dim, spacedim, typename DoFHandler<dim,spacedim>::active_cell_iterator,
+      typename DoFHandler<dim,spacedim>::level_cell_iterator>
       (renumbering, start, end);
     if (result == 0)
       return;
@@ -922,24 +838,20 @@ namespace DoFRenumbering
 
   template <int dim>
   void
-  block_wise (hp::DoFHandler<dim>             &dof_handler)
+  block_wise (hp::DoFHandler<dim> &dof_handler)
   {
     std::vector<unsigned int> renumbering (dof_handler.n_dofs(),
                                            hp::DoFHandler<dim>::invalid_dof_index);
 
-    typedef
-    internal::WrapDoFIterator<typename hp::DoFHandler<dim>::active_cell_iterator> ITERATOR;
-
     typename hp::DoFHandler<dim>::active_cell_iterator
-    istart = dof_handler.begin_active();
-    ITERATOR start = istart;
-    const typename hp::DoFHandler<dim>::cell_iterator
+    start = dof_handler.begin_active();
+    const typename hp::DoFHandler<dim>::level_cell_iterator
     end = dof_handler.end();
 
     const unsigned int result =
-      compute_block_wise<dim, dim, ITERATOR,
-      typename hp::DoFHandler<dim>::cell_iterator>(renumbering,
-                                                   start, end);
+      compute_block_wise<dim, dim, typename hp::DoFHandler<dim>::active_cell_iterator,
+      typename hp::DoFHandler<dim>::level_cell_iterator>(renumbering,
+                                                         start, end);
 
     if (result == 0)
       return;
@@ -954,24 +866,22 @@ namespace DoFRenumbering
 
   template <int dim>
   void
-  block_wise (MGDoFHandler<dim> &dof_handler,
-              const unsigned int level)
+  block_wise (DoFHandler<dim> &dof_handler, const unsigned int level)
   {
+    Assert(dof_handler.n_dofs(level) != numbers::invalid_unsigned_int,
+           ExcNotInitialized());
+
     std::vector<unsigned int> renumbering (dof_handler.n_dofs(level),
                                            DoFHandler<dim>::invalid_dof_index);
 
-    typedef
-    internal::WrapMGDoFIterator<typename MGDoFHandler<dim>::cell_iterator> ITERATOR;
-
-    typename MGDoFHandler<dim>::cell_iterator
-    istart =dof_handler.begin(level);
-    ITERATOR start = istart;
-    typename MGDoFHandler<dim>::cell_iterator
-    iend = dof_handler.end(level);
-    const ITERATOR end = iend;
+    typename DoFHandler<dim>::level_cell_iterator
+    start =dof_handler.begin(level);
+    typename DoFHandler<dim>::level_cell_iterator
+    end = dof_handler.end(level);
 
     const unsigned int result =
-      compute_block_wise<dim, dim, ITERATOR, ITERATOR>(
+      compute_block_wise<dim, dim, typename DoFHandler<dim>::level_cell_iterator,
+      typename DoFHandler<dim>::level_cell_iterator>(
         renumbering, start, end);
 
     if (result == 0) return;
@@ -1066,7 +976,7 @@ namespace DoFRenumbering
           const unsigned int fe_index = cell->active_fe_index();
           const unsigned int dofs_per_cell =fe_collection[fe_index].dofs_per_cell;
           local_dof_indices.resize (dofs_per_cell);
-          cell.get_dof_indices (local_dof_indices);
+          cell->dof_indices (local_dof_indices);
           for (unsigned int i=0; i<dofs_per_cell; ++i)
             if (start->get_dof_handler().locally_owned_dofs().is_element(local_dof_indices[i]))
               block_to_dof_map[block_list[fe_index][i]].
@@ -1186,6 +1096,8 @@ namespace DoFRenumbering
   namespace
   {
     // helper function for hierarchical()
+
+// Note that this function only works for active dofs.
     template <int dim, class iterator>
     unsigned int
     compute_hierarchical_recursive (
@@ -1240,7 +1152,7 @@ namespace DoFRenumbering
     std::vector<unsigned int> renumbering (dof_handler.n_locally_owned_dofs(),
                                            DoFHandler<dim>::invalid_dof_index);
 
-    typename DoFHandler<dim>::cell_iterator cell;
+    typename DoFHandler<dim>::level_cell_iterator cell;
 
     unsigned int next_free = 0;
     const IndexSet locally_owned = dof_handler.locally_owned_dofs();
@@ -1259,7 +1171,7 @@ namespace DoFRenumbering
             unsigned int coarse_cell_index =
               tria->get_p4est_tree_to_coarse_cell_permutation() [c];
 
-            const typename DoFHandler<dim>::cell_iterator
+            const typename DoFHandler<dim>::level_cell_iterator
             cell (tria, 0, coarse_cell_index, &dof_handler);
 
             next_free = compute_hierarchical_recursive<dim> (next_free,
@@ -1327,6 +1239,9 @@ namespace DoFRenumbering
                            const std::vector<bool> &selected_dofs,
                            const unsigned int       level)
   {
+    Assert(dof_handler.n_dofs(level) != numbers::invalid_unsigned_int,
+           ExcNotInitialized());
+
     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);
@@ -1381,6 +1296,9 @@ namespace DoFRenumbering
                                    const std::vector<bool>   &selected_dofs,
                                    const unsigned int         level)
   {
+    Assert(dof_handler.n_dofs(level) != numbers::invalid_unsigned_int,
+           ExcNotInitialized());
+
     const unsigned int n_dofs = dof_handler.n_dofs(level);
     Assert (selected_dofs.size() == n_dofs,
             ExcDimensionMismatch (selected_dofs.size(), n_dofs));
@@ -1415,23 +1333,7 @@ namespace DoFRenumbering
 
   template <class DH>
   void
-  cell_wise_dg (DH &dof,
-                const std::vector<typename DH::cell_iterator> &cells)
-  {
-    std::vector<unsigned int> renumbering(dof.n_dofs());
-    std::vector<unsigned int> reverse(dof.n_dofs());
-    compute_cell_wise_dg(renumbering, reverse, dof, cells);
-
-    dof.renumber_dofs(renumbering);
-  }
-
-
-
-  template <class DH>
-  void
-  cell_wise (
-    DH &dof,
-    const std::vector<typename DH::cell_iterator> &cells)
+  cell_wise (DH &dof, const std::vector<typename DH::active_cell_iterator> &cells)
   {
     std::vector<unsigned int> renumbering(dof.n_dofs());
     std::vector<unsigned int> reverse(dof.n_dofs());
@@ -1441,76 +1343,13 @@ namespace DoFRenumbering
   }
 
 
-//TODO: Discuss if we cannot replace this function by the next
-  template <class DH>
-  void
-  compute_cell_wise_dg (
-    std::vector<unsigned int> &new_indices,
-    std::vector<unsigned int> &reverse,
-    const DH &dof,
-    const typename std::vector<typename DH::cell_iterator> &cells)
-  {
-    Assert(cells.size() == dof.get_tria().n_active_cells(),
-           ExcDimensionMismatch(cells.size(),
-                                dof.get_tria().n_active_cells()));
-
-    unsigned int n_global_dofs = dof.n_dofs();
-
-    // Actually, we compute the
-    // inverse of the reordering
-    // vector, called reverse here.
-    // Later, its inverse is computed
-    // into new_indices, which is the
-    // return argument.
-
-    Assert(new_indices.size() == n_global_dofs,
-           ExcDimensionMismatch(new_indices.size(), n_global_dofs));
-    Assert(reverse.size() == n_global_dofs,
-           ExcDimensionMismatch(reverse.size(), n_global_dofs));
-
-    std::vector<unsigned int> cell_dofs;
-
-    unsigned int global_index = 0;
-
-    typename std::vector<typename DH::cell_iterator>::const_iterator cell;
-
-    for (cell = cells.begin(); cell != cells.end(); ++cell)
-      {
-        Assert((*cell)->get_fe().n_dofs_per_face()==0, ExcNotDGFEM());
-        // Determine the number of dofs
-        // on this cell and reinit the
-        // vector storing these
-        // numbers.
-        unsigned int n_cell_dofs = (*cell)->get_fe().n_dofs_per_cell();
-        cell_dofs.resize(n_cell_dofs);
-
-        (*cell)->get_dof_indices(cell_dofs);
-
-        // Sort here to make sure that
-        // degrees of freedom inside a
-        // single cell are in the same
-        // order after renumbering.
-        std::sort(cell_dofs.begin(), cell_dofs.end());
-
-        for (unsigned int i=0; i<n_cell_dofs; ++i)
-          {
-            reverse[global_index++] = cell_dofs[i];
-          }
-      }
-    Assert(global_index == n_global_dofs, ExcRenumberingIncomplete());
-
-    for (unsigned int i=0; i<reverse.size(); ++i)
-      new_indices[reverse[i]] = i;
-  }
-
-
   template <class DH>
   void
   compute_cell_wise (
     std::vector<unsigned int> &new_indices,
     std::vector<unsigned int> &reverse,
     const DH &dof,
-    const typename std::vector<typename DH::cell_iterator> &cells)
+    const typename std::vector<typename DH::active_cell_iterator> &cells)
   {
     Assert(cells.size() == dof.get_tria().n_active_cells(),
            ExcDimensionMismatch(cells.size(),
@@ -1538,7 +1377,7 @@ namespace DoFRenumbering
 
     unsigned int global_index = 0;
 
-    typename std::vector<typename DH::cell_iterator>::const_iterator cell;
+    typename std::vector<typename DH::active_cell_iterator>::const_iterator cell;
 
     for (cell = cells.begin(); cell != cells.end(); ++cell)
       {
@@ -1549,7 +1388,7 @@ namespace DoFRenumbering
         unsigned int n_cell_dofs = (*cell)->get_fe().n_dofs_per_cell();
         cell_dofs.resize(n_cell_dofs);
 
-        (*cell)->get_dof_indices(cell_dofs);
+        (*cell)->dof_indices(cell_dofs);
 
         // Sort here to make sure that
         // degrees of freedom inside a
@@ -1574,27 +1413,15 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
-  void cell_wise_dg (
-    MGDoFHandler<dim> &dof,
-    const unsigned int level,
-    const typename std::vector<typename MGDoFHandler<dim>::cell_iterator> &cells)
-  {
-    std::vector<unsigned int> renumbering(dof.n_dofs(level));
-    std::vector<unsigned int> reverse(dof.n_dofs(level));
-
-    compute_cell_wise_dg(renumbering, reverse, dof, level, cells);
-    dof.renumber_dofs(level, renumbering);
-  }
-
-
-
-  template <int dim>
+  template <class DH>
   void cell_wise (
-    MGDoFHandler<dim> &dof,
+    DH &dof,
     const unsigned int level,
-    const typename std::vector<typename MGDoFHandler<dim>::cell_iterator> &cells)
+    const typename std::vector<typename DH::level_cell_iterator> &cells)
   {
+    Assert(dof.n_dofs(level) != numbers::invalid_unsigned_int,
+           ExcNotInitialized());
+
     std::vector<unsigned int> renumbering(dof.n_dofs(level));
     std::vector<unsigned int> reverse(dof.n_dofs(level));
 
@@ -1604,71 +1431,13 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
-  void compute_cell_wise_dg (
-    std::vector<unsigned int> &new_order,
-    std::vector<unsigned int> &reverse,
-    const MGDoFHandler<dim> &dof,
-    const unsigned int level,
-    const typename std::vector<typename MGDoFHandler<dim>::cell_iterator> &cells)
-  {
-    Assert(cells.size() == dof.get_tria().n_cells(level),
-           ExcDimensionMismatch(cells.size(),
-                                dof.get_tria().n_cells(level)));
-    switch (dim)
-      {
-      case 3:
-        Assert(dof.get_fe().n_dofs_per_quad()==0,
-               ExcNotDGFEM());
-      case 2:
-        Assert(dof.get_fe().n_dofs_per_line()==0,
-               ExcNotDGFEM());
-      default:
-        Assert(dof.get_fe().n_dofs_per_vertex()==0,
-               ExcNotDGFEM());
-      }
-
-    Assert (new_order.size() == dof.n_dofs(level),
-            ExcDimensionMismatch(new_order.size(), dof.n_dofs(level)));
-    Assert (reverse.size() == dof.n_dofs(level),
-            ExcDimensionMismatch(reverse.size(), dof.n_dofs(level)));
-
-    unsigned int n_global_dofs = dof.n_dofs(level);
-    unsigned int n_cell_dofs = dof.get_fe().n_dofs_per_cell();
-
-    std::vector<unsigned int> cell_dofs(n_cell_dofs);
-
-    unsigned int global_index = 0;
-
-    typename std::vector<typename MGDoFHandler<dim>::cell_iterator>::const_iterator cell;
-
-    for (cell = cells.begin(); cell != cells.end(); ++cell)
-      {
-        Assert ((*cell)->level() == (int) level, ExcInternalError());
-
-        (*cell)->get_mg_dof_indices(cell_dofs);
-        std::sort(cell_dofs.begin(), cell_dofs.end());
-
-        for (unsigned int i=0; i<n_cell_dofs; ++i)
-          {
-            reverse[global_index++] = cell_dofs[i];
-          }
-      }
-    Assert(global_index == n_global_dofs, ExcRenumberingIncomplete());
-
-    for (unsigned int i=0; i<new_order.size(); ++i)
-      new_order[reverse[i]] = i;
-  }
-
-
-
-  template <int dim>
+  template <class DH>
   void compute_cell_wise (
     std::vector<unsigned int> &new_order,
     std::vector<unsigned int> &reverse,
-    const MGDoFHandler<dim> &dof,
+    const DH &dof,
     const unsigned int level,
-    const typename std::vector<typename MGDoFHandler<dim>::cell_iterator> &cells)
+    const typename std::vector<typename DH::level_cell_iterator> &cells)
   {
     Assert(cells.size() == dof.get_tria().n_cells(level),
            ExcDimensionMismatch(cells.size(),
@@ -1686,13 +1455,13 @@ namespace DoFRenumbering
 
     unsigned int global_index = 0;
 
-    typename std::vector<typename MGDoFHandler<dim>::cell_iterator>::const_iterator cell;
+    typename std::vector<typename DH::level_cell_iterator>::const_iterator cell;
 
     for (cell = cells.begin(); cell != cells.end(); ++cell)
       {
         Assert ((*cell)->level() == (int) level, ExcInternalError());
 
-        (*cell)->get_mg_dof_indices(cell_dofs);
+        (*cell)->dof_indices(cell_dofs);
         std::sort(cell_dofs.begin(), cell_dofs.end());
 
         for (unsigned int i=0; i<n_cell_dofs; ++i)
@@ -1712,21 +1481,10 @@ namespace DoFRenumbering
 
 
 
-  template <class DH, int dim>
-  void
-  downstream_dg (DH &dof, const Point<dim> &direction)
-  {
-    std::vector<unsigned int> renumbering(dof.n_dofs());
-    compute_downstream_dg(renumbering, dof, direction);
-
-    dof.renumber_dofs(renumbering);
-  }
-
-
-
-  template <class DH, int dim>
+  template <class DH>
   void
-  downstream (DH &dof, const Point<dim> &direction,
+  downstream (DH &dof,
+              const Point<DH::space_dimension> &direction,
               const bool dof_wise_renumbering)
   {
     std::vector<unsigned int> renumbering(dof.n_dofs());
@@ -1738,66 +1496,31 @@ namespace DoFRenumbering
   }
 
 
-
-  template <class DH, int dim>
-  void
-  compute_downstream_dg (
-    std::vector<unsigned int> &new_indices,
-    const DH &dof,
-    const Point<dim> &direction)
-  {
-    std::vector<typename DH::cell_iterator>
-    ordered_cells(dof.get_tria().n_active_cells());
-    const CompareDownstream<typename DH::cell_iterator, dim> comparator(direction);
-
-    typename DH::active_cell_iterator begin = dof.begin_active();
-    typename DH::active_cell_iterator end = dof.end();
-
-    copy (begin, end, ordered_cells.begin());
-    std::sort (ordered_cells.begin(), ordered_cells.end(), comparator);
-
-    std::vector<unsigned int> reverse(new_indices.size());
-    compute_cell_wise_dg(new_indices, reverse, dof, ordered_cells);
-  }
-
-
-
-  template <class DH, int dim>
+  template <int dim, int spacedim>
   void
-  compute_downstream_dg (
-    std::vector<unsigned int> &new_indices,
-    std::vector<unsigned int> &reverse,
-    const DH &dof,
-    const Point<dim> &direction)
+  downstream (MGDoFHandler<dim,spacedim>               &dof_handler,
+              const Point<spacedim> &direction,
+              const bool        dof_wise_renumbering = false)
   {
-    std::vector<typename DH::cell_iterator>
-    ordered_cells(dof.get_tria().n_active_cells());
-    const CompareDownstream<typename DH::cell_iterator, dim> comparator(direction);
-
-    typename DH::active_cell_iterator begin = dof.begin_active();
-    typename DH::active_cell_iterator end = dof.end();
-
-    copy (begin, end, ordered_cells.begin());
-    std::sort (ordered_cells.begin(), ordered_cells.end(), comparator);
-
-    compute_cell_wise_dg(new_indices, reverse, dof, ordered_cells);
+    for (unsigned int level=0; level<dof_handler.n_levels(); ++level)
+      downstream(dof_handler, level, direction, dof_wise_renumbering);
   }
 
 
-  template <class DH, int dim>
+  template <class DH>
   void
   compute_downstream (
     std::vector<unsigned int> &new_indices,
     std::vector<unsigned int> &reverse,
     const DH &dof,
-    const Point<dim> &direction,
+    const Point<DH::space_dimension> &direction,
     const bool dof_wise_renumbering)
   {
     if (dof_wise_renumbering == false)
       {
-        std::vector<typename DH::cell_iterator>
+        std::vector<typename DH::active_cell_iterator>
         ordered_cells(dof.get_tria().n_active_cells());
-        const CompareDownstream<typename DH::cell_iterator, dim> comparator(direction);
+        const CompareDownstream<typename DH::active_cell_iterator, DH::space_dimension> comparator(direction);
 
         typename DH::active_cell_iterator begin = dof.begin_active();
         typename DH::active_cell_iterator end = dof.end();
@@ -1816,17 +1539,17 @@ namespace DoFRenumbering
         // (otherwise, could use something like
         // DoFTools::map_support_points_to_dofs)
         const unsigned int n_dofs = dof.n_dofs();
-        std::vector<std::pair<Point<dim>,unsigned int> > support_point_list
+        std::vector<std::pair<Point<DH::space_dimension>,unsigned int> > support_point_list
         (n_dofs);
 
-        const hp::FECollection<dim> fe_collection (dof.get_fe ());
+        const hp::FECollection<DH::dimension> fe_collection (dof.get_fe ());
         Assert (fe_collection[0].has_support_points(),
-                typename FiniteElement<dim>::ExcFEHasNoSupportPoints());
-        hp::QCollection<dim> quadrature_collection;
+                typename FiniteElement<DH::dimension>::ExcFEHasNoSupportPoints());
+        hp::QCollection<DH::dimension> quadrature_collection;
         for (unsigned int comp=0; comp<fe_collection.size(); ++comp)
           {
             Assert (fe_collection[comp].has_support_points(),
-                    typename FiniteElement<dim>::ExcFEHasNoSupportPoints());
+                    typename FiniteElement<DH::dimension>::ExcFEHasNoSupportPoints());
             quadrature_collection.push_back
             (Quadrature<DH::dimension> (fe_collection[comp].
                                         get_unit_support_points()));
@@ -1845,9 +1568,9 @@ namespace DoFRenumbering
             const unsigned int dofs_per_cell = begin->get_fe().dofs_per_cell;
             local_dof_indices.resize (dofs_per_cell);
             hp_fe_values.reinit (begin);
-            const FEValues<dim> &fe_values =
+            const FEValues<DH::dimension> &fe_values =
               hp_fe_values.get_present_fe_values ();
-            begin->get_dof_indices(local_dof_indices);
+            begin->dof_indices(local_dof_indices);
             const std::vector<Point<DH::space_dimension> > &points
               = fe_values.get_quadrature_points ();
             for (unsigned int i=0; i<dofs_per_cell; ++i)
@@ -1860,7 +1583,7 @@ namespace DoFRenumbering
                 }
           }
 
-        ComparePointwiseDownstream<dim> comparator (direction);
+        ComparePointwiseDownstream<DH::space_dimension> comparator (direction);
         std::sort (support_point_list.begin(), support_point_list.end(),
                    comparator);
         for (unsigned int i=0; i<n_dofs; ++i)
@@ -1870,24 +1593,10 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
-  void downstream_dg (MGDoFHandler<dim> &dof,
-                      const unsigned int level,
-                      const Point<dim>  &direction)
-  {
-    std::vector<unsigned int> renumbering(dof.n_dofs(level));
-    std::vector<unsigned int> reverse(dof.n_dofs(level));
-    compute_downstream_dg(renumbering, reverse, dof, level, direction);
-
-    dof.renumber_dofs(level, renumbering);
-  }
-
-
-
-  template <int dim>
-  void downstream (MGDoFHandler<dim> &dof,
+  template <class DH>
+  void downstream (DH &dof,
                    const unsigned int level,
-                   const Point<dim>  &direction,
+                   const Point<DH::space_dimension>  &direction,
                    const bool         dof_wise_renumbering)
   {
     std::vector<unsigned int> renumbering(dof.n_dofs(level));
@@ -1900,49 +1609,24 @@ namespace DoFRenumbering
 
 
 
-  template <int dim>
-  void
-  compute_downstream_dg (
-    std::vector<unsigned int> &new_indices,
-    std::vector<unsigned int> &reverse,
-    const MGDoFHandler<dim> &dof,
-    const unsigned int level,
-    const Point<dim> &direction)
-  {
-    std::vector<typename MGDoFHandler<dim>::cell_iterator>
-    ordered_cells(dof.get_tria().n_cells(level));
-    const CompareDownstream<typename MGDoFHandler<dim>::cell_iterator, dim>
-    comparator(direction);
-
-    typename MGDoFHandler<dim>::cell_iterator begin = dof.begin(level);
-    typename MGDoFHandler<dim>::cell_iterator end = dof.end(level);
-
-    std::copy (begin, end, ordered_cells.begin());
-    std::sort (ordered_cells.begin(), ordered_cells.end(), comparator);
-
-    compute_cell_wise_dg(new_indices, reverse, dof, level, ordered_cells);
-  }
-
-
-
-  template <int dim>
+  template <class DH>
   void
   compute_downstream (
     std::vector<unsigned int> &new_indices,
     std::vector<unsigned int> &reverse,
-    const MGDoFHandler<dim> &dof,
+    const DH &dof,
     const unsigned int level,
-    const Point<dim> &direction,
+    const Point<DH::space_dimension> &direction,
     const bool dof_wise_renumbering)
   {
     if (dof_wise_renumbering == false)
       {
-        std::vector<typename MGDoFHandler<dim>::cell_iterator>
+        std::vector<typename DH::level_cell_iterator>
         ordered_cells(dof.get_tria().n_cells(level));
-        const CompareDownstream<typename MGDoFHandler<dim>::cell_iterator, dim> comparator(direction);
+        const CompareDownstream<typename DH::level_cell_iterator, DH::space_dimension> comparator(direction);
 
-        typename MGDoFHandler<dim>::cell_iterator begin = dof.begin(level);
-        typename MGDoFHandler<dim>::cell_iterator end = dof.end(level);
+        typename DH::level_cell_iterator begin = dof.begin(level);
+        typename DH::level_cell_iterator end = dof.end(level);
 
         std::copy (begin, end, ordered_cells.begin());
         std::sort (ordered_cells.begin(), ordered_cells.end(), comparator);
@@ -1952,26 +1636,27 @@ namespace DoFRenumbering
     else
       {
         Assert (dof.get_fe().has_support_points(),
-                typename FiniteElement<dim>::ExcFEHasNoSupportPoints());
+                typename FiniteElement<DH::dimension>::ExcFEHasNoSupportPoints());
         const unsigned int n_dofs = dof.n_dofs(level);
-        std::vector<std::pair<Point<dim>,unsigned int> > support_point_list
+        std::vector<std::pair<Point<DH::space_dimension>,unsigned int> > support_point_list
         (n_dofs);
 
-        Quadrature<dim>   q_dummy(dof.get_fe().get_unit_support_points());
-        FEValues<dim,dim> fe_values (dof.get_fe(), q_dummy,
-                                     update_quadrature_points);
+        Quadrature<DH::dimension>   q_dummy(dof.get_fe().get_unit_support_points());
+        FEValues<DH::dimension,DH::space_dimension> fe_values (dof.get_fe(), q_dummy,
+                                                               update_quadrature_points);
 
         std::vector<bool> already_touched (dof.n_dofs(), false);
 
         const unsigned int dofs_per_cell = dof.get_fe().dofs_per_cell;
         std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-        typename MGDoFHandler<dim>::cell_iterator begin = dof.begin(level);
-        typename MGDoFHandler<dim>::cell_iterator end = dof.end(level);
+        typename DH::level_cell_iterator begin = dof.begin(level);
+        typename DH::level_cell_iterator end = dof.end(level);
         for ( ; begin != end; ++begin)
           {
-            begin->get_mg_dof_indices(local_dof_indices);
-            fe_values.reinit (begin);
-            const std::vector<Point<dim> > &points
+            const typename Triangulation<DH::dimension,DH::space_dimension>::cell_iterator &begin_tria = begin;
+            begin->dof_indices(local_dof_indices);
+            fe_values.reinit (begin_tria);
+            const std::vector<Point<DH::space_dimension> > &points
               = fe_values.get_quadrature_points ();
             for (unsigned int i=0; i<dofs_per_cell; ++i)
               if (!already_touched[local_dof_indices[i]])
@@ -1983,7 +1668,7 @@ namespace DoFRenumbering
                 }
           }
 
-        ComparePointwiseDownstream<dim> comparator (direction);
+        ComparePointwiseDownstream<DH::space_dimension> comparator (direction);
         std::sort (support_point_list.begin(), support_point_list.end(),
                    comparator);
         for (unsigned int i=0; i<n_dofs; ++i)
@@ -2060,16 +1745,17 @@ namespace DoFRenumbering
                 ExcMessage ("This operation only makes sense for dim>=2."));
         return false;
       }
+
     };
   }
 
 
 
-  template <class DH, int dim>
+  template <class DH>
   void
   clockwise_dg (
     DH &dof,
-    const Point<dim> &center,
+    const Point<DH::space_dimension> &center,
     const bool counter)
   {
     std::vector<unsigned int> renumbering(dof.n_dofs());
@@ -2080,17 +1766,17 @@ namespace DoFRenumbering
 
 
 
-  template <class DH, int dim>
+  template <class DH>
   void
   compute_clockwise_dg (
     std::vector<unsigned int> &new_indices,
     const DH &dof,
-    const Point<dim> &center,
+    const Point<DH::space_dimension> &center,
     const bool counter)
   {
-    std::vector<typename DH::cell_iterator>
+    std::vector<typename DH::active_cell_iterator>
     ordered_cells(dof.get_tria().n_active_cells());
-    internal::ClockCells<dim> comparator(center, counter);
+    internal::ClockCells<DH::space_dimension> comparator(center, counter);
 
     typename DH::active_cell_iterator begin = dof.begin_active();
     typename DH::active_cell_iterator end = dof.end();
@@ -2099,28 +1785,28 @@ namespace DoFRenumbering
     std::sort (ordered_cells.begin(), ordered_cells.end(), comparator);
 
     std::vector<unsigned int> reverse(new_indices.size());
-    compute_cell_wise_dg(new_indices, reverse, dof, ordered_cells);
+    compute_cell_wise(new_indices, reverse, dof, ordered_cells);
   }
 
 
 
-  template <int dim>
-  void clockwise_dg (MGDoFHandler<dim> &dof,
+  template <class DH>
+  void clockwise_dg (DH &dof,
                      const unsigned int level,
-                     const Point<dim> &center,
+                     const Point<DH::space_dimension> &center,
                      const bool counter)
   {
-    std::vector<typename MGDoFHandler<dim>::cell_iterator>
+    std::vector<typename DH::level_cell_iterator>
     ordered_cells(dof.get_tria().n_cells(level));
-    internal::ClockCells<dim> comparator(center, counter);
+    internal::ClockCells<DH::space_dimension> comparator(center, counter);
 
-    typename MGDoFHandler<dim>::cell_iterator begin = dof.begin(level);
-    typename MGDoFHandler<dim>::cell_iterator end = dof.end(level);
+    typename DH::level_cell_iterator begin = dof.begin(level);
+    typename DH::level_cell_iterator end = dof.end(level);
 
     std::copy (begin, end, ordered_cells.begin());
     std::sort (ordered_cells.begin(), ordered_cells.end(), comparator);
 
-    cell_wise_dg(dof, level, ordered_cells);
+    cell_wise(dof, level, ordered_cells);
   }
 
 
index fd9feb3cd4603a910a5907d62076c61c87f2e606..1c0c76951651dbef3ea762a631190cff776b8984 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors
+//    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
@@ -140,37 +140,27 @@ namespace DoFRenumbering
        const bool,
        const bool,
        const std::vector<unsigned int>&);
-
+       
     template
-      void Cuthill_McKee<MGDoFHandler<deal_II_dimension> >
-      (MGDoFHandler<deal_II_dimension>&,
-       const bool,
-       const bool,
-       const std::vector<unsigned int>&);
-
-    template
-      void
-      compute_Cuthill_McKee<MGDoFHandler<deal_II_dimension> >
-      (std::vector<unsigned int>&,
-       const MGDoFHandler<deal_II_dimension>&,
-       const bool,
-       const bool,
+      void component_wise
+      (hp::DoFHandler<deal_II_dimension>&,
        const std::vector<unsigned int>&);
 
     template
-      void component_wise<deal_II_dimension>
-      (hp::DoFHandler<deal_II_dimension>&,
+      void component_wise
+      (DoFHandler<deal_II_dimension>&,
+       unsigned int,
        const std::vector<unsigned int>&);
 
     template
-      void component_wise<deal_II_dimension>
+      void component_wise
       (MGDoFHandler<deal_II_dimension>&,
-       unsigned int,
        const std::vector<unsigned int>&);
 
     template
-      void component_wise<deal_II_dimension>
+      void component_wise
       (MGDoFHandler<deal_II_dimension>&,
+       unsigned int,
        const std::vector<unsigned int>&);
 
     template
@@ -179,62 +169,34 @@ namespace DoFRenumbering
 
     template
       void block_wise<deal_II_dimension>
-      (MGDoFHandler<deal_II_dimension>&,
+      (DoFHandler<deal_II_dimension>&,
        unsigned int);
 
-    template
-      void block_wise<deal_II_dimension>
-      (MGDoFHandler<deal_II_dimension>&);
-
     template
       void hierarchical<deal_II_dimension>
       (DoFHandler<deal_II_dimension>&);
 
-
-// DG renumbering for DoFHandler
-
-    template
-      void
-      cell_wise_dg<DoFHandler<deal_II_dimension> >
+    template void
+      cell_wise<DoFHandler<deal_II_dimension> >
       (DoFHandler<deal_II_dimension>&,
-       const std::vector<DoFHandler<deal_II_dimension>::cell_iterator>&);
+       const std::vector<DoFHandler<deal_II_dimension>::active_cell_iterator>&);
 
-    template
-      void
-      compute_cell_wise_dg<DoFHandler<deal_II_dimension> >
+    template void
+      compute_cell_wise<DoFHandler<deal_II_dimension> >
       (std::vector<unsigned int>&, std::vector<unsigned int>&,
        const DoFHandler<deal_II_dimension>&,
-       const std::vector<DoFHandler<deal_II_dimension>::cell_iterator>&);
-
-    template
-      void
-      downstream_dg<DoFHandler<deal_II_dimension> >
-      (DoFHandler<deal_II_dimension>&,
-       const Point<deal_II_dimension>&);
-
-    template
-      void
-      compute_downstream_dg<DoFHandler<deal_II_dimension> >
-      (std::vector<unsigned int>&,std::vector<unsigned int>&,
-       const DoFHandler<deal_II_dimension>&,
-       const Point<deal_II_dimension>&);
-    template
-      void
-      compute_downstream_dg<DoFHandler<deal_II_dimension> >
-      (std::vector<unsigned int>&,
-       const DoFHandler<deal_II_dimension>&,
-       const Point<deal_II_dimension>&);
+       const std::vector<DoFHandler<deal_II_dimension>::active_cell_iterator>&);
 
     template void
       cell_wise<DoFHandler<deal_II_dimension> >
-      (DoFHandler<deal_II_dimension>&,
-       const std::vector<DoFHandler<deal_II_dimension>::cell_iterator>&);
+      (DoFHandler<deal_II_dimension>&, unsigned int,
+       const std::vector<DoFHandler<deal_II_dimension>::level_cell_iterator>&);
 
     template void
       compute_cell_wise<DoFHandler<deal_II_dimension> >
       (std::vector<unsigned int>&, std::vector<unsigned int>&,
-       const DoFHandler<deal_II_dimension>&,
-       const std::vector<DoFHandler<deal_II_dimension>::cell_iterator>&);
+       const DoFHandler<deal_II_dimension>&, unsigned int,
+       const std::vector<DoFHandler<deal_II_dimension>::level_cell_iterator>&);
 
     template void
       downstream<DoFHandler<deal_II_dimension> >
@@ -260,48 +222,33 @@ namespace DoFRenumbering
 
 // Renumbering for hp::DoFHandler
 
-    template void
-      cell_wise_dg<hp::DoFHandler<deal_II_dimension> >
-      (hp::DoFHandler<deal_II_dimension>&,
-       const std::vector<hp::DoFHandler<deal_II_dimension>::cell_iterator>&);
-
-    template void
-      compute_cell_wise_dg<hp::DoFHandler<deal_II_dimension> >
-      (std::vector<unsigned int>&, std::vector<unsigned int>&,
-       const hp::DoFHandler<deal_II_dimension>&,
-       const std::vector<hp::DoFHandler<deal_II_dimension>::cell_iterator>&);
-
     template void
       cell_wise<hp::DoFHandler<deal_II_dimension> >
       (hp::DoFHandler<deal_II_dimension>&,
-       const std::vector<hp::DoFHandler<deal_II_dimension>::cell_iterator>&);
+       const std::vector<hp::DoFHandler<deal_II_dimension>::active_cell_iterator>&);
 
     template void
       compute_cell_wise<hp::DoFHandler<deal_II_dimension> >
       (std::vector<unsigned int>&, std::vector<unsigned int>&,
        const hp::DoFHandler<deal_II_dimension>&,
-       const std::vector<hp::DoFHandler<deal_II_dimension>::cell_iterator>&);
+       const std::vector<hp::DoFHandler<deal_II_dimension>::active_cell_iterator>&);
 
     template void
-      downstream_dg<hp::DoFHandler<deal_II_dimension> >
+      downstream<hp::DoFHandler<deal_II_dimension> >
       (hp::DoFHandler<deal_II_dimension>&,
-       const Point<deal_II_dimension>&);
+       const Point<deal_II_dimension>&,
+       const bool);
 
     template void
-      compute_downstream_dg<hp::DoFHandler<deal_II_dimension> >
-      (std::vector<unsigned int>&,std::vector<unsigned int>&,
-       const hp::DoFHandler<deal_II_dimension>&,
-       const Point<deal_II_dimension>&);
-    template
-      void
-      compute_downstream_dg<hp::DoFHandler<deal_II_dimension> >
-      (std::vector<unsigned int>&,
-       const hp::DoFHandler<deal_II_dimension>&,
-       const Point<deal_II_dimension>&);
+      downstream<MGDoFHandler<deal_II_dimension> >
+      (MGDoFHandler<deal_II_dimension>&,
+       const Point<deal_II_dimension>&,
+       const bool);
 
     template void
-      downstream<hp::DoFHandler<deal_II_dimension> >
-      (hp::DoFHandler<deal_II_dimension>&,
+      downstream<MGDoFHandler<deal_II_dimension> >
+      (MGDoFHandler<deal_II_dimension>&,
+       unsigned int,
        const Point<deal_II_dimension>&,
        const bool);
 
@@ -329,19 +276,14 @@ namespace DoFRenumbering
 // MG
 
     template
-      void downstream_dg<deal_II_dimension>
-      (MGDoFHandler<deal_II_dimension>&, const unsigned int,
-       const Point<deal_II_dimension>&);
-
-    template
-      void downstream<deal_II_dimension>
-      (MGDoFHandler<deal_II_dimension>&, const unsigned int,
+      void downstream
+      (DoFHandler<deal_II_dimension>&, const unsigned int,
        const Point<deal_II_dimension>&,
        const bool);
 
     template
-      void clockwise_dg<deal_II_dimension>
-      (MGDoFHandler<deal_II_dimension>&,
+      void clockwise_dg
+      (DoFHandler<deal_II_dimension>&,
        const unsigned int,
        const Point<deal_II_dimension>&, bool);
 
@@ -411,27 +353,18 @@ namespace DoFRenumbering
       (hp::DoFHandler<deal_II_dimension> &);
 
     template
-      void Cuthill_McKee<deal_II_dimension>
-      (MGDoFHandler<deal_II_dimension>&,
+      void Cuthill_McKee<DoFHandler<deal_II_dimension> >
+      (DoFHandler<deal_II_dimension>&,
        const unsigned int,
        const bool,
        const std::vector<unsigned int>&);
 
     template
-      void cell_wise_dg<deal_II_dimension>
+      void Cuthill_McKee<MGDoFHandler<deal_II_dimension> >
       (MGDoFHandler<deal_II_dimension>&,
        const unsigned int,
-       const std::vector<MGDoFHandler<deal_II_dimension>::cell_iterator>&);
-    template
-      void compute_cell_wise_dg<deal_II_dimension>
-      (std::vector<unsigned int>&, std::vector<unsigned int>&,
-       const MGDoFHandler<deal_II_dimension>&, const unsigned int,
-       const std::vector<MGDoFHandler<deal_II_dimension>::cell_iterator>&);
-    template
-      void compute_downstream_dg<deal_II_dimension>
-      (std::vector<unsigned int>&, std::vector<unsigned int>&,
-       const MGDoFHandler<deal_II_dimension>&, const unsigned int,
-       const Point<deal_II_dimension>&);
+       const bool,
+       const std::vector<unsigned int>&);
 
     \}  // namespace DoFRenumbering
 #endif
index d813b2a3e0aa43a3518bb4d991675446ffcdf631..43234a5ab03b0e413744a1b7b4b7eee37d0e6bad 100644 (file)
@@ -241,6 +241,7 @@ namespace DoFTools
     Assert (sparsity.n_cols() == n_dofs_col,
             ExcDimensionMismatch (sparsity.n_cols(), n_dofs_col));
 
+//TODO: Looks like wasteful memory management here
 
     const std::list<std::pair<typename DH::cell_iterator,
           typename DH::cell_iterator> >
@@ -249,8 +250,7 @@ namespace DoFTools
 
 
     typename std::list<std::pair<typename DH::cell_iterator,
-             typename DH::cell_iterator> >
-             ::const_iterator
+             typename DH::cell_iterator> >::const_iterator
              cell_iter = cell_list.begin();
 
     for (; cell_iter!=cell_list.end(); ++cell_iter)
@@ -281,7 +281,7 @@ namespace DoFTools
             child_cells = GridTools::get_active_child_cells<DH> (cell_row);
             for (unsigned int i=0; i<child_cells.size(); i++)
               {
-                const typename DH::active_cell_iterator
+                const typename DH::cell_iterator
                 cell_row_child = child_cells[i];
                 const unsigned int dofs_per_cell_row =
                   cell_row_child->get_fe().dofs_per_cell;
@@ -415,7 +415,7 @@ namespace DoFTools
 
             // find active cell at that boundary: first go to left/right,
             // then to children
-            typename DH::cell_iterator cell = dof.begin(0);
+            typename DH::level_cell_iterator cell = dof.begin(0);
             while (!cell->at_boundary(direction))
               cell = cell->neighbor(direction);
             while (!cell->active())
@@ -552,7 +552,7 @@ namespace DoFTools
               typename DH::face_iterator cell_face = cell->face(face);
               if (! cell->at_boundary(face) )
                 {
-                  typename DH::cell_iterator neighbor = cell->neighbor(face);
+                  typename DH::level_cell_iterator neighbor = cell->neighbor(face);
 
                   // in 1d, we do not need to worry whether the neighbor
                   // might have children and then loop over those children.
@@ -568,7 +568,7 @@ namespace DoFTools
                            sub_nr != cell_face->number_of_children();
                            ++sub_nr)
                         {
-                          const typename DH::cell_iterator
+                          const typename DH::level_cell_iterator
                           sub_neighbor
                             = cell->neighbor_child_on_subface (face, sub_nr);
 
@@ -769,7 +769,7 @@ namespace DoFTools
                     }
                   else
                     {
-                      typename DH::cell_iterator
+                      typename DH::level_cell_iterator
                       neighbor = cell->neighbor(face);
                       // Refinement edges are taken care of by coarser
                       // cells
@@ -786,7 +786,7 @@ namespace DoFTools
                                sub_nr != cell_face->n_children();
                                ++sub_nr)
                             {
-                              const typename DH::cell_iterator
+                              const typename DH::level_cell_iterator
                               sub_neighbor
                                 = cell->neighbor_child_on_subface (face, sub_nr);
 
@@ -998,7 +998,7 @@ namespace DoFTools
                   }
                 else
                   {
-                    typename dealii::hp::DoFHandler<dim,spacedim>::cell_iterator
+                    typename dealii::hp::DoFHandler<dim,spacedim>::level_cell_iterator
                     neighbor = cell->neighbor(face);
 
                     // Refinement edges are taken care of by coarser cells
@@ -1016,7 +1016,7 @@ namespace DoFTools
                              sub_nr != cell_face->n_children();
                              ++sub_nr)
                           {
-                            const typename dealii::hp::DoFHandler<dim,spacedim>::cell_iterator
+                            const typename dealii::hp::DoFHandler<dim,spacedim>::level_cell_iterator
                             sub_neighbor
                               = cell->neighbor_child_on_subface (face, sub_nr);
 
@@ -1841,7 +1841,7 @@ namespace DoFTools
 //   currently not used but may be in the future:
 
 //     void
-//     make_hp_hanging_node_constraints (const dealii::MGDoFHandler<1,2> &,
+//     make_hp_hanging_node_constraints (const dealii::MDoFHandler<1,2> &,
 //                                    ConstraintMatrix    &)
 //     {
 //                                     // nothing to do for regular
@@ -1851,7 +1851,7 @@ namespace DoFTools
 
 
 //     void
-//     make_oldstyle_hanging_node_constraints (const dealii::MGDoFHandler<1,2> &,
+//     make_oldstyle_hanging_node_constraints (const dealii::DoFHandler<1,2> &,
 //                                          ConstraintMatrix    &,
 //                                          dealii::internal::int2type<1>)
 //     {
@@ -2637,7 +2637,7 @@ namespace DoFTools
                     (!cell->face(face)->has_children() &&
                      !cell->neighbor_is_coarser(face) ))
                   {
-                    const typename DH::cell_iterator neighbor = cell->neighbor (face);
+                    const typename DH::level_cell_iterator neighbor = cell->neighbor (face);
 
                     // see which side of the face we have to constrain
                     switch (cell->get_fe().compare_for_face_domination (neighbor->get_fe ()))
@@ -3575,7 +3575,7 @@ namespace DoFTools
 
     // then loop over all cells and do work
     std::vector<unsigned int> indices(fe.dofs_per_cell);
-    typename DH::cell_iterator c;
+    typename DH::level_cell_iterator c;
     for (c = dof.begin(level) ; c != dof.end(level) ; ++ c)
       {
         c->get_mg_dof_indices(indices);
@@ -5651,8 +5651,8 @@ namespace DoFTools
     const std::vector<bool> &selected_dofs,
     unsigned int offset)
   {
-    typename DH::cell_iterator cell;
-    typename DH::cell_iterator endc = dof_handler.end(level);
+    typename DH::level_cell_iterator cell;
+    typename DH::level_cell_iterator endc = dof_handler.end(level);
     std::vector<unsigned int> indices;
 
     unsigned int i=0;
@@ -5687,8 +5687,8 @@ namespace DoFTools
   {
     const FiniteElement<DH::dimension> &fe = dof_handler.get_fe();
     block_list.reinit(1, dof_handler.n_dofs(level), dof_handler.n_dofs(level));
-    typename DH::cell_iterator cell;
-    typename DH::cell_iterator endc = dof_handler.end(level);
+    typename DH::level_cell_iterator cell;
+    typename DH::level_cell_iterator endc = dof_handler.end(level);
 
     std::vector<unsigned int> indices;
     std::vector<bool> exclude;
@@ -5733,9 +5733,9 @@ namespace DoFTools
     Assert(level > 0 && level < dof_handler.get_tria().n_levels(),
            ExcIndexRange(level, 1, dof_handler.get_tria().n_levels()));
 
-    typename DH::cell_iterator cell;
-    typename DH::cell_iterator pcell = dof_handler.begin(level-1);
-    typename DH::cell_iterator endc = dof_handler.end(level-1);
+    typename DH::level_cell_iterator cell;
+    typename DH::level_cell_iterator pcell = dof_handler.begin(level-1);
+    typename DH::level_cell_iterator endc = dof_handler.end(level-1);
 
     std::vector<unsigned int> indices;
     std::vector<bool> exclude;
@@ -5797,8 +5797,8 @@ namespace DoFTools
     const bool level_boundary_patches,
     const bool single_cell_patches)
   {
-    typename DH::cell_iterator cell;
-    typename DH::cell_iterator endc = dof_handler.end(level);
+    typename DH::level_cell_iterator cell;
+    typename DH::level_cell_iterator endc = dof_handler.end(level);
 
     // Vector mapping from vertex index in the triangulation to consecutive
     // block indices on this level The number of cells at a vertex
index fb728c682adee5d637146451ef79e702f6fba1d6..c935ac1dd8fae2507832530b45c3f499b9f0c7ad 100644 (file)
@@ -1,6 +1,5 @@
 //---------------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$
 //
 //    Copyright (C) 2009, 2010, 2011, 2012 by the deal.II authors
 //
@@ -114,6 +113,10 @@ for (SP : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS)
     (const hp::DoFHandler<deal_II_dimension> &dof,
      SP    &sparsity);
 
+    template void
+      DoFTools::make_cell_patches<DoFHandler<deal_II_dimension>,SP>
+      (SP&, const DoFHandler<deal_II_dimension>&, unsigned int, const std::vector<bool>&, unsigned int);
+
     template void
       DoFTools::make_cell_patches<MGDoFHandler<deal_II_dimension>,SP>
       (SP&, const MGDoFHandler<deal_II_dimension>&, unsigned int, const std::vector<bool>&, unsigned int);
@@ -367,6 +370,16 @@ for (DH : DOFHANDLERS; deal_II_dimension : DIMENSIONS)
 #endif
 }
 
+for (deal_II_dimension : DIMENSIONS)
+{
+#if deal_II_dimension != 1
+  template
+  void
+  DoFTools::make_hanging_node_constraints (const MGDoFHandler<deal_II_dimension> &dof_handler,
+                                           ConstraintMatrix &constraints);
+
+#endif
+ }
 
 
 for (deal_II_dimension : DIMENSIONS)
@@ -377,6 +390,18 @@ for (deal_II_dimension : DIMENSIONS)
   (const FiniteElement<deal_II_dimension> &fe,
    const Table<2,DoFTools::Coupling> &component_couplings);
 
+  template
+  void DoFTools::make_vertex_patches (SparsityPattern&, const DoFHandler<deal_II_dimension>&,
+  unsigned int, bool, bool, bool, bool);
+
+  template
+  void DoFTools::make_single_patch (SparsityPattern&, const DoFHandler<deal_II_dimension>&,
+  unsigned int, bool);
+
+  template
+  void DoFTools::make_child_patches(SparsityPattern&, const DoFHandler<deal_II_dimension>&,
+  unsigned int, bool, bool);
+
   template
   void DoFTools::make_vertex_patches (SparsityPattern&, const MGDoFHandler<deal_II_dimension>&,
   unsigned int, bool, bool, bool, bool);
@@ -471,6 +496,22 @@ template void DoFTools::extract_level_dofs<DoFHandler<deal_II_dimension> >
  const BlockMask &,
  std::vector<bool>&);
 
+#if deal_II_dimension > 1
+template void DoFTools::extract_level_dofs<DoFHandler<1, deal_II_dimension> >
+(const unsigned int level,
+ const DoFHandler<1, deal_II_dimension>&,
+ const BlockMask &,
+ std::vector<bool>&);
+#endif
+
+#if deal_II_dimension > 2
+template void DoFTools::extract_level_dofs<DoFHandler<2, deal_II_dimension> >
+(const unsigned int level,
+ const DoFHandler<2, deal_II_dimension>&,
+ const BlockMask &,
+ std::vector<bool>&);
+#endif
+
 template void DoFTools::extract_level_dofs<MGDoFHandler<deal_II_dimension> >
 (const unsigned int level,
  const MGDoFHandler<deal_II_dimension>&,
@@ -796,14 +837,6 @@ DoFTools::extract_level_dofs<MGDoFHandler<deal_II_dimension, deal_II_dimension+1
  const BlockMask&,
  std::vector<bool>&);
 
-template
-void
-DoFTools::extract_level_dofs<DoFHandler<deal_II_dimension, deal_II_dimension+1> >
-(const unsigned int level,
- const DoFHandler<deal_II_dimension, deal_II_dimension+1>&,
- const BlockMask&,
- std::vector<bool>&);
-
 #endif
 
 
@@ -828,14 +861,6 @@ DoFTools::extract_level_dofs<DoFHandler<1, 3> >
  const ComponentMask &,
  std::vector<bool>&);
 
-template
-void
-DoFTools::extract_level_dofs<DoFHandler<1,3> >
-(const unsigned int level,
- const DoFHandler<1,3>&,
- const BlockMask&,
- std::vector<bool>&);
-
 template
 void
 DoFTools::extract_level_dofs<MGDoFHandler<1, 3> >
@@ -1156,4 +1181,5 @@ DoFTools::extract_hanging_node_dofs
 
 #endif
 
+
 }
index 5a63aa75f29b78509278e0778739a8ec220101a8..b64b82b257853dba5640445a9650d9b3f7ad909b 100644 (file)
@@ -3081,19 +3081,10 @@ FEValues<dim,spacedim>::initialize (const UpdateFlags update_flags)
 
 
 template <int dim, int spacedim>
-void
-FEValues<dim,spacedim>::reinit (const typename DoFHandler<dim,spacedim>::cell_iterator &cell)
+void FEValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell)
 {
-  // assert that the finite elements
-  // passed to the constructor and
-  // used by the DoFHandler used by
-  // this cell, are the same
-
-  typedef FEValuesBase<dim,spacedim> FEVB;
-  Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-          static_cast<const FiniteElementData<dim>&>(cell->get_fe()),
-          typename FEVB::ExcFEDontMatch());
-
+  // no FE in this cell, so no assertion
+  // necessary here
   this->maybe_invalidate_previous_present_cell (cell);
   this->check_cell_similarity(cell);
 
@@ -3103,9 +3094,7 @@ FEValues<dim,spacedim>::reinit (const typename DoFHandler<dim,spacedim>::cell_it
   // object gets destroyed in the
   // destruction of this class
   this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename DoFHandler<dim,spacedim>::cell_iterator> (cell));
-
+  (new typename FEValuesBase<dim,spacedim>::TriaCellIterator (cell));
   // this was the part of the work
   // that is dependent on the actual
   // data type of the iterator. now
@@ -3117,8 +3106,9 @@ FEValues<dim,spacedim>::reinit (const typename DoFHandler<dim,spacedim>::cell_it
 
 
 template <int dim, int spacedim>
+template <class DH, bool lda>
 void
-FEValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell)
+FEValues<dim,spacedim>::reinit (const TriaIterator<DoFCellAccessor<DH, lda> > cell)
 {
   // assert that the finite elements
   // passed to the constructor and
@@ -3139,75 +3129,8 @@ FEValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cel
   // destruction of this class
   this->present_cell.reset
   (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename hp::DoFHandler<dim,spacedim>::cell_iterator> (cell));
-
-  // this was the part of the work
-  // that is dependent on the actual
-  // data type of the iterator. now
-  // pass on to the function doing
-  // the real work.
-  do_reinit ();
-}
-
-
-template <int dim, int spacedim>
-void
-FEValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell)
-{
-  if (spacedim > dim)
-    {
-      Assert(false, ExcNotImplemented());
-      return;
-    }
-
-  // assert that the finite elements
-  // passed to the constructor and
-  // used by the DoFHandler used by
-  // this cell, are the same
-
-//TODO: This was documented out ith the repository. Why?
-
-//  Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-//        static_cast<const FiniteElementData<dim>&>(cell->get_fe()),
-//        typename FEValuesBase<dim,spacedim>::ExcFEDontMatch());
-
-  this->maybe_invalidate_previous_present_cell (cell);
-  this->check_cell_similarity(cell);
-
-  // set new cell. auto_ptr will take
-  // care that old object gets
-  // destroyed and also that this
-  // object gets destroyed in the
-  // destruction of this class
-  this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename MGDoFHandler<dim,spacedim>::cell_iterator> (cell));
-
-  // this was the part of the work
-  // that is dependent on the actual
-  // data type of the iterator. now
-  // pass on to the function doing
-  // the real work.
-  do_reinit ();
-}
-
-
-
-template <int dim, int spacedim>
-void FEValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell)
-{
-  // no FE in this cell, so no assertion
-  // necessary here
-  this->maybe_invalidate_previous_present_cell (cell);
-  this->check_cell_similarity(cell);
+   CellIterator<TriaIterator<DoFCellAccessor<DH, lda> > > (cell));
 
-  // set new cell. auto_ptr will take
-  // care that old object gets
-  // destroyed and also that this
-  // object gets destroyed in the
-  // destruction of this class
-  this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::TriaCellIterator (cell));
   // this was the part of the work
   // that is dependent on the actual
   // data type of the iterator. now
@@ -3359,43 +3282,10 @@ FEFaceValues<dim,spacedim>::initialize (const UpdateFlags update_flags)
 
 
 template <int dim, int spacedim>
-void FEFaceValues<dim,spacedim>::reinit (const typename DoFHandler<dim,spacedim>::cell_iterator &cell,
-                                         const unsigned int              face_no)
-{
-  // assert that the finite elements
-  // passed to the constructor and
-  // used by the DoFHandler used by
-  // this cell, are the same
-//   Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-//        static_cast<const FiniteElementData<dim>&>(cell->get_dof_handler().get_fe()),
-//        typename FEValuesBase<dim,spacedim>::ExcFEDontMatch());
-
-  Assert (face_no < GeometryInfo<dim>::faces_per_cell,
-          ExcIndexRange (face_no, 0, GeometryInfo<dim>::faces_per_cell));
-
-  // set new cell. auto_ptr will take
-  // care that old object gets
-  // destroyed and also that this
-  // object gets destroyed in the
-  // destruction of this class
-  this->maybe_invalidate_previous_present_cell (cell);
-  this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename DoFHandler<dim,spacedim>::cell_iterator> (cell));
-
-  // this was the part of the work
-  // that is dependent on the actual
-  // data type of the iterator. now
-  // pass on to the function doing
-  // the real work.
-  do_reinit (face_no);
-}
-
-
-
-template <int dim, int spacedim>
-void FEFaceValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-                                         const unsigned int              face_no)
+template <class DH, bool lda>
+void
+FEFaceValues<dim,spacedim>::reinit (const TriaIterator<DoFCellAccessor<DH, lda> > cell,
+                                    const unsigned int face_no)
 {
   // assert that the finite elements
   // passed to the constructor and
@@ -3418,7 +3308,7 @@ void FEFaceValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,space
   this->maybe_invalidate_previous_present_cell (cell);
   this->present_cell.reset
   (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename hp::DoFHandler<dim,spacedim>::cell_iterator> (cell));
+   CellIterator<TriaIterator<DoFCellAccessor<DH, lda> > > (cell));
 
   // this was the part of the work
   // that is dependent on the actual
@@ -3430,46 +3320,6 @@ void FEFaceValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,space
 
 
 
-template <int dim, int spacedim>
-void FEFaceValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
-                                         const unsigned int              face_no)
-{
-  if (spacedim > dim)
-    {
-      Assert(false,ExcNotImplemented());
-      return;
-    }
-  // assert that the finite elements
-  // passed to the constructor and
-  // used by the DoFHandler used by
-  // this cell, are the same
-  typedef FEValuesBase<dim,spacedim> FEVB;
-  Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-          static_cast<const FiniteElementData<dim>&>(cell->get_dof_handler().get_fe()),
-          typename FEVB::ExcFEDontMatch());
-
-  Assert (face_no < GeometryInfo<dim>::faces_per_cell,
-          ExcIndexRange (face_no, 0, GeometryInfo<dim>::faces_per_cell));
-
-  // set new cell. auto_ptr will take
-  // care that old object gets
-  // destroyed and also that this
-  // object gets destroyed in the
-  // destruction of this class
-  this->maybe_invalidate_previous_present_cell (cell);
-  this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename MGDoFHandler<dim,spacedim>::cell_iterator> (cell));
-
-  // this was the part of the work
-  // that is dependent on the actual
-  // data type of the iterator. now
-  // pass on to the function doing
-  // the real work.
-  do_reinit (face_no);
-}
-
-
 template <int dim, int spacedim>
 void FEFaceValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
                                          const unsigned int              face_no)
@@ -3589,19 +3439,21 @@ FESubfaceValues<dim,spacedim>::initialize (const UpdateFlags update_flags)
 }
 
 
-
 template <int dim, int spacedim>
-void FESubfaceValues<dim,spacedim>::reinit (const typename DoFHandler<dim,spacedim>::cell_iterator &cell,
+template <class DH, bool lda>
+void FESubfaceValues<dim,spacedim>::reinit (const TriaIterator<DoFCellAccessor<DH, lda> > cell,
                                             const unsigned int         face_no,
                                             const unsigned int         subface_no)
 {
   // assert that the finite elements
   // passed to the constructor and
-  // used by the DoFHandler used by
+  // used by the hp::DoFHandler used by
   // this cell, are the same
-//   Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-//        static_cast<const FiniteElementData<dim>&>(cell->get_dof_handler().get_fe()),
-//        typename FEValuesBase<dim,spacedim>::ExcFEDontMatch());
+  typedef FEValuesBase<dim,spacedim> FEVB;
+  Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
+          static_cast<const FiniteElementData<dim>&>(
+            cell->get_dof_handler().get_fe()[cell->active_fe_index ()]),
+          typename FEVB::ExcFEDontMatch());
   Assert (face_no < GeometryInfo<dim>::faces_per_cell,
           ExcIndexRange (face_no, 0, GeometryInfo<dim>::faces_per_cell));
   // We would like to check for
@@ -3618,87 +3470,6 @@ void FESubfaceValues<dim,spacedim>::reinit (const typename DoFHandler<dim,spaced
   Assert (!cell->face(face_no)->has_children() ||
           subface_no < cell->face(face_no)->number_of_children(),
           ExcIndexRange (subface_no, 0, cell->face(face_no)->number_of_children()));
-
-  Assert (cell->has_children() == false,
-          ExcMessage ("You can't use subface data for cells that are "
-                      "already refined. Iterate over their children "
-                      "instead in these cases."));
-
-  // set new cell. auto_ptr will take
-  // care that old object gets
-  // destroyed and also that this
-  // object gets destroyed in the
-  // destruction of this class
-  this->maybe_invalidate_previous_present_cell (cell);
-  this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename DoFHandler<dim,spacedim>::cell_iterator> (cell));
-
-  // this was the part of the work
-  // that is dependent on the actual
-  // data type of the iterator. now
-  // pass on to the function doing
-  // the real work.
-  do_reinit (face_no, subface_no);
-}
-
-
-
-template <int dim, int spacedim>
-void FESubfaceValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
-                                            const unsigned int         face_no,
-                                            const unsigned int         subface_no)
-{
-  // assert that the finite elements
-  // passed to the constructor and
-  // used by the hp::DoFHandler used by
-  // this cell, are the same
-  typedef FEValuesBase<dim,spacedim> FEVB;
-  Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-          static_cast<const FiniteElementData<dim>&>(
-            cell->get_dof_handler().get_fe()[cell->active_fe_index ()]),
-          typename FEVB::ExcFEDontMatch());
-  Assert (face_no < GeometryInfo<dim>::faces_per_cell,
-          ExcIndexRange (face_no, 0, GeometryInfo<dim>::faces_per_cell));
-  Assert (subface_no < cell->face(face_no)->number_of_children(),
-          ExcIndexRange (subface_no, 0, cell->face(face_no)->number_of_children()));
-  Assert (cell->has_children() == false,
-          ExcMessage ("You can't use subface data for cells that are "
-                      "already refined. Iterate over their children "
-                      "instead in these cases."));
-
-  // set new cell. auto_ptr will take
-  // care that old object gets
-  // destroyed and also that this
-  // object gets destroyed in the
-  // destruction of this class
-  this->maybe_invalidate_previous_present_cell (cell);
-  this->present_cell.reset
-  (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename hp::DoFHandler<dim,spacedim>::cell_iterator> (cell));
-
-  // this was the part of the work
-  // that is dependent on the actual
-  // data type of the iterator. now
-  // pass on to the function doing
-  // the real work.
-  do_reinit (face_no, subface_no);
-}
-
-
-template <int dim, int spacedim>
-void FESubfaceValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
-                                            const unsigned int         face_no,
-                                            const unsigned int         subface_no)
-{
-  typedef FEValuesBase<dim,spacedim> FEVB;
-  Assert (static_cast<const FiniteElementData<dim>&>(*this->fe) ==
-          static_cast<const FiniteElementData<dim>&>(cell->get_dof_handler().get_fe()),
-          typename FEVB::ExcFEDontMatch());
-  Assert (face_no < GeometryInfo<dim>::faces_per_cell,
-          ExcIndexRange (face_no, 0, GeometryInfo<dim>::faces_per_cell));
-  Assert (subface_no < cell->face(face_no)->number_of_children(),
-          ExcIndexRange (subface_no, 0, cell->face(face_no)->number_of_children()));
   Assert (cell->has_children() == false,
           ExcMessage ("You can't use subface data for cells that are "
                       "already refined. Iterate over their children "
@@ -3712,7 +3483,7 @@ void FESubfaceValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spac
   this->maybe_invalidate_previous_present_cell (cell);
   this->present_cell.reset
   (new typename FEValuesBase<dim,spacedim>::template
-   CellIterator<typename MGDoFHandler<dim,spacedim>::cell_iterator> (cell));
+   CellIterator<TriaIterator<DoFCellAccessor<DH, lda> > > (cell));
 
   // this was the part of the work
   // that is dependent on the actual
@@ -3723,7 +3494,6 @@ void FESubfaceValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spac
 }
 
 
-
 template <int dim, int spacedim>
 void FESubfaceValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
                                             const unsigned int         face_no,
index 90866f797f80a57d4dfae40d1c2f50f80f6b0a93..e63f835c9da8844e3366f0b6ef9697c399618b1b 100644 (file)
@@ -24,8 +24,6 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
     template class FEValues<deal_II_dimension,deal_II_space_dimension>;
     template class FEValuesBase<deal_II_dimension,deal_II_space_dimension>::
       CellIterator<DoFHandler<deal_II_dimension,deal_II_space_dimension>::cell_iterator>;
-    template class FEValuesBase<deal_II_dimension,deal_II_space_dimension>::
-      CellIterator<MGDoFHandler<deal_II_dimension,deal_II_space_dimension>::cell_iterator>;
 
     template class FEFaceValuesBase<deal_II_dimension,deal_II_space_dimension>;
     template class FEFaceValues<deal_II_dimension,deal_II_space_dimension>;
@@ -42,6 +40,20 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
   }
 
 
+for (dof_handler : DOFHANDLER_TEMPLATES; deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; lda : BOOL)
+  {
+#if deal_II_dimension <= deal_II_space_dimension
+
+    template void FEValues<deal_II_dimension,deal_II_space_dimension>::reinit(
+    TriaIterator<DoFCellAccessor<dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >);
+    template void FEFaceValues<deal_II_dimension,deal_II_space_dimension>::reinit(
+    TriaIterator<DoFCellAccessor<dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int);
+    template void FESubfaceValues<deal_II_dimension,deal_II_space_dimension>::reinit(
+    TriaIterator<DoFCellAccessor<dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int, unsigned int);
+#endif
+  }
+
+
 
 for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS)
   {
index 479a58edcacdb756ec3270d93c79af0c4217a024..a2a73a7776cf5ca710b98316227b6bc88f7ed797 100644 (file)
@@ -61,11 +61,7 @@ compute_mapping_support_points(const typename Triangulation<dim,spacedim>::cell_
   // DoFHandler<dim>::cell_iterator
   // which is necessary for access to
   // DoFCellAccessor::get_dof_values()
-  typename DoFHandler<dim,spacedim>::cell_iterator
-  dof_cell (const_cast<Triangulation<dim,spacedim> *> (&(cell->get_triangulation())),
-            cell->level(),
-            cell->index(),
-            shiftmap_dof_handler);
+  typename DoFHandler<dim,spacedim>::cell_iterator dof_cell (*cell, shiftmap_dof_handler);
 
   // We require the cell to be active
   // since we can only then get nodal
index 6e6703ad7155e7929a3e58d3ba3b70eb98c6fb81..2cf6197caa6fc9281f1e7b2158283c581686535a 100644 (file)
@@ -119,12 +119,7 @@ compute_mapping_support_points
   // into a dof iterator so we can
   // access data not associated with
   // triangulations
-
-  typename DoFHandler<dim,spacedim>::cell_iterator dof_cell
-  (const_cast<Triangulation<dim,spacedim> *> (&(cell->get_triangulation())),
-   cell->level(),
-   cell->index(),
-   euler_dof_handler);
+  typename DoFHandler<dim,spacedim>::cell_iterator dof_cell(*cell, euler_dof_handler);
 
   Assert (dof_cell->active() == true, ExcInactiveCell());
 
index 2c8b5f2e62a8f4b4ba025b11b7233dc1421dea7c..e86732eef6d1dbd792556ab15cfd18c497678018 100644 (file)
@@ -45,7 +45,7 @@ namespace GridTools
 {
 
 // This anonymous namespace contains utility functions to extract the
-// triangulation from any container such as DoFHandler, MGDoFHandler,
+// triangulation from any container such as DoFHandler
 // and the like
   namespace
   {
index 2343745ff905c6215cc8cb282b55081244349d44..132dc8ec489f13d8c3c638ca6e69e399e61e30bd 100644 (file)
 //---------------------------------------------------------------------------
 
 
+for (deal_II_dimension : DIMENSIONS)
+  {
+  namespace GridTools \{
+  template
+    std::list<std::pair<MGDoFHandler<deal_II_dimension>::cell_iterator, MGDoFHandler<deal_II_dimension>::cell_iterator> >
+    get_finest_common_cells (const MGDoFHandler<deal_II_dimension> &mesh_1,
+                            const MGDoFHandler<deal_II_dimension> &mesh_2);
+  \}
+  }
 
 for (X : TRIANGULATION_AND_DOFHANDLERS; deal_II_dimension : DIMENSIONS ; deal_II_space_dimension : SPACE_DIMENSIONS)
 {
index 4d4a5dba880a5495c51b30fa36568873e25fbbb9..840028b2605d5514de28697cc7208c7f6ad57ad3 100644 (file)
@@ -1638,7 +1638,6 @@ namespace hp
   }
 
 
-
   /*------------------------ Cell iterator functions ------------------------*/
 
   template <int dim, int spacedim>
@@ -1698,6 +1697,8 @@ namespace hp
   }
 
 
+
+
 //------------------------------------------------------------------
 
 
@@ -2022,7 +2023,7 @@ namespace hp
     // vertices at all, I can't think
     // of a finite element that would
     // make that necessary...
-    Table<2,std_cxx1x::shared_ptr<internal::hp::DoFIdentities> >
+    Table<2,std_cxx1x::shared_ptr<dealii::internal::hp::DoFIdentities> >
     vertex_dof_identities (get_fe().size(),
                            get_fe().size());
 
@@ -2033,13 +2034,13 @@ namespace hp
          ++vertex_index)
       {
         const unsigned int n_active_fe_indices
-          = internal::DoFAccessor::Implementation::
+          = dealii::internal::DoFAccessor::Implementation::
             n_active_vertex_fe_indices (*this, vertex_index);
         if (n_active_fe_indices > 1)
           {
             const unsigned int
             first_fe_index
-              = internal::DoFAccessor::Implementation::
+              = dealii::internal::DoFAccessor::Implementation::
                 nth_active_vertex_fe_index (*this, vertex_index, 0);
 
             // loop over all the
@@ -2051,14 +2052,14 @@ namespace hp
               {
                 const unsigned int
                 other_fe_index
-                  = internal::DoFAccessor::Implementation::
+                  = dealii::internal::DoFAccessor::Implementation::
                     nth_active_vertex_fe_index (*this, vertex_index, f);
 
                 // make sure the
                 // entry in the
                 // equivalence
                 // table exists
-                internal::hp::ensure_existence_of_dof_identities<0>
+                dealii::internal::hp::ensure_existence_of_dof_identities<0>
                 (get_fe()[first_fe_index],
                  get_fe()[other_fe_index],
                  vertex_dof_identities[first_fe_index][other_fe_index]);
@@ -2087,18 +2088,18 @@ namespace hp
                 // lower, to avoid
                 // circular
                 // reasoning.
-                internal::hp::DoFIdentities &identities
+                dealii::internal::hp::DoFIdentities &identities
                   = *vertex_dof_identities[first_fe_index][other_fe_index];
                 for (unsigned int i=0; i<identities.size(); ++i)
                   {
                     const unsigned int lower_dof_index
-                      = internal::DoFAccessor::Implementation::
+                      = dealii::internal::DoFAccessor::Implementation::
                         get_vertex_dof_index (*this,
                                               vertex_index,
                                               first_fe_index,
                                               identities[i].first);
                     const unsigned int higher_dof_index
-                      = internal::DoFAccessor::Implementation::
+                      = dealii::internal::DoFAccessor::Implementation::
                         get_vertex_dof_index (*this,
                                               vertex_index,
                                               other_fe_index,
@@ -2119,7 +2120,6 @@ namespace hp
   }
 
 
-
   template <>
   void
   DoFHandler<1,1>::
@@ -2574,7 +2574,7 @@ namespace hp
 
     // then allocate space for all
     // the other tables
-    internal::hp::DoFHandler::Implementation::reserve_space (*this);
+    dealii::internal::hp::DoFHandler::Implementation::reserve_space (*this);
 
     // Clear user flags because we will
     // need them. But first we save
@@ -2600,7 +2600,7 @@ namespace hp
 
       for (; cell != endc; ++cell)
         next_free_dof
-          = internal::hp::DoFHandler::Implementation::template distribute_dofs_on_cell<spacedim> (cell,
+          = dealii::internal::hp::DoFHandler::Implementation::template distribute_dofs_on_cell<spacedim> (cell,
             next_free_dof);
 
       number_cache.n_global_dofs = next_free_dof;
@@ -2659,7 +2659,7 @@ namespace hp
     // finally, do the renumbering
     // and set the number of actually
     // used dof indices
-    renumber_dofs_internal (new_dof_indices, internal::int2type<dim>());
+    renumber_dofs_internal (new_dof_indices, dealii::internal::int2type<dim>());
 
     // now set the elements of the
     // number cache appropriately
@@ -2715,7 +2715,7 @@ namespace hp
       }
 #endif
 
-    renumber_dofs_internal (new_numbers, internal::int2type<dim>());
+    renumber_dofs_internal (new_numbers, dealii::internal::int2type<dim>());
   }
 
 
@@ -2724,7 +2724,7 @@ namespace hp
   void
   DoFHandler<dim,spacedim>::
   renumber_dofs_internal (const std::vector<unsigned int> &new_numbers,
-                          internal::int2type<0>)
+                          dealii::internal::int2type<0>)
   {
     Assert (new_numbers.size() == n_dofs(), ExcRenumberingIncomplete());
 
@@ -2732,24 +2732,24 @@ namespace hp
          ++vertex_index)
       {
         const unsigned int n_active_fe_indices
-          = internal::DoFAccessor::Implementation::
+          = dealii::internal::DoFAccessor::Implementation::
             n_active_vertex_fe_indices (*this, vertex_index);
 
         for (unsigned int f=0; f<n_active_fe_indices; ++f)
           {
             const unsigned int fe_index
-              = internal::DoFAccessor::Implementation::
+              = dealii::internal::DoFAccessor::Implementation::
                 nth_active_vertex_fe_index (*this, vertex_index, f);
 
             for (unsigned int d=0; d<(*finite_elements)[fe_index].dofs_per_vertex; ++d)
               {
                 const unsigned int vertex_dof_index
-                  = internal::DoFAccessor::Implementation::
+                  = dealii::internal::DoFAccessor::Implementation::
                     get_vertex_dof_index(*this,
                                          vertex_index,
                                          fe_index,
                                          d);
-                internal::DoFAccessor::Implementation::
+                dealii::internal::DoFAccessor::Implementation::
                 set_vertex_dof_index (*this,
                                       vertex_index,
                                       fe_index,
@@ -2766,7 +2766,7 @@ namespace hp
   void
   DoFHandler<dim,spacedim>::
   renumber_dofs_internal (const std::vector<unsigned int> &new_numbers,
-                          internal::int2type<1>)
+                          dealii::internal::int2type<1>)
   {
     Assert (new_numbers.size() == n_dofs(), ExcRenumberingIncomplete());
 
@@ -2810,12 +2810,13 @@ namespace hp
   }
 
 
+
 //TODO: Merge the following three functions -- they are identical
   template<>
   void
   DoFHandler<2,2>::
   renumber_dofs_internal (const std::vector<unsigned int> &new_numbers,
-                          internal::int2type<2>)
+                          dealii::internal::int2type<2>)
   {
     const unsigned int dim = 2;
     const unsigned int spacedim = 2;
@@ -2867,7 +2868,7 @@ namespace hp
   void
   DoFHandler<2,3>::
   renumber_dofs_internal (const std::vector<unsigned int> &new_numbers,
-                          internal::int2type<2>)
+                          dealii::internal::int2type<2>)
   {
     const unsigned int dim = 2;
     const unsigned int spacedim = 3;
@@ -2918,7 +2919,7 @@ namespace hp
   void
   DoFHandler<3,3>::
   renumber_dofs_internal (const std::vector<unsigned int> &new_numbers,
-                          internal::int2type<2>)
+                          dealii::internal::int2type<2>)
   {
     const unsigned int dim = 3;
     const unsigned int spacedim = 3;
@@ -2969,7 +2970,7 @@ namespace hp
   void
   DoFHandler<3,3>::
   renumber_dofs_internal (const std::vector<unsigned int> &new_numbers,
-                          internal::int2type<3>)
+                          dealii::internal::int2type<3>)
   {
     const unsigned int dim = 3;
     const unsigned int spacedim = 3;
@@ -3025,7 +3026,7 @@ namespace hp
   DoFHandler<dim, spacedim>::max_couplings_between_dofs () const
   {
     Assert (finite_elements != 0, ExcNoFESelected());
-    return internal::hp::DoFHandler::Implementation::max_couplings_between_dofs (*this);
+    return dealii::internal::hp::DoFHandler::Implementation::max_couplings_between_dofs (*this);
   }
 
 
@@ -3075,7 +3076,7 @@ namespace hp
     // Create sufficiently many
     // hp::DoFLevels.
     while (levels.size () < tria->n_levels ())
-      levels.push_back (new internal::hp::DoFLevel<dim>);
+      levels.push_back (new dealii::internal::hp::DoFLevel<dim>);
 
     // then make sure that on each
     // level we have the appropriate
@@ -3234,7 +3235,7 @@ namespace hp
     // it is appended to the DoFHandler
     // levels.
     if (levels.size () < tria->n_levels ())
-      levels.push_back (new internal::hp::DoFLevel<dim>);
+      levels.push_back (new dealii::internal::hp::DoFLevel<dim>);
 
     // Coarsening can lead to the loss
     // of levels. Hence remove them.
index a8e7ece1d48103eba45cb9de49f03daa3921c79e..3e43ff6ce608b1c3503ecb1128934a7e7f083ca1 100644 (file)
@@ -138,8 +138,9 @@ namespace hp
 
 
   template <int dim, int spacedim>
+  template <class DH, bool lda>
   void
-  FEValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
+  FEValues<dim,spacedim>::reinit (const TriaIterator<DoFCellAccessor<DH,lda> > cell,
                                   const unsigned int q_index,
                                   const unsigned int mapping_index,
                                   const unsigned int fe_index)
@@ -187,86 +188,6 @@ namespace hp
 
 
 
-  template <int dim, int spacedim>
-  void
-  FEValues<dim,spacedim>::reinit (const typename dealii::DoFHandler<dim,spacedim>::cell_iterator &cell,
-                                  const unsigned int q_index,
-                                  const unsigned int mapping_index,
-                                  const unsigned int fe_index)
-  {
-    // determine which indices we
-    // should actually use
-    unsigned int real_q_index       = q_index,
-                 real_mapping_index = mapping_index,
-                 real_fe_index      = fe_index;
-
-    if (real_q_index == numbers::invalid_unsigned_int)
-      real_q_index = 0;
-
-    if (real_mapping_index == numbers::invalid_unsigned_int)
-      real_mapping_index = 0;
-
-    if (real_fe_index == numbers::invalid_unsigned_int)
-      real_fe_index = 0;
-
-    // some checks
-    Assert (real_q_index < this->q_collection.size(),
-            ExcIndexRange (real_q_index, 0, this->q_collection.size()));
-    Assert (real_mapping_index < this->mapping_collection->size(),
-            ExcIndexRange (real_mapping_index, 0, this->mapping_collection->size()));
-    Assert (real_fe_index < this->fe_collection->size(),
-            ExcIndexRange (real_fe_index, 0, this->fe_collection->size()));
-
-    // now finally actually get the
-    // corresponding object and
-    // initialize it
-    this->select_fe_values (real_fe_index,
-                            real_mapping_index,
-                            real_q_index).reinit (cell);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  FEValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
-                                  const unsigned int q_index,
-                                  const unsigned int mapping_index,
-                                  const unsigned int fe_index)
-  {
-    // determine which indices we
-    // should actually use
-    unsigned int real_q_index       = q_index,
-                 real_mapping_index = mapping_index,
-                 real_fe_index      = fe_index;
-
-    if (real_q_index == numbers::invalid_unsigned_int)
-      real_q_index = 0;
-
-    if (real_mapping_index == numbers::invalid_unsigned_int)
-      real_mapping_index = 0;
-
-    if (real_fe_index == numbers::invalid_unsigned_int)
-      real_fe_index = 0;
-
-    // some checks
-    Assert (real_q_index < this->q_collection.size(),
-            ExcIndexRange (real_q_index, 0, this->q_collection.size()));
-    Assert (real_mapping_index < this->mapping_collection->size(),
-            ExcIndexRange (real_mapping_index, 0, this->mapping_collection->size()));
-    Assert (real_fe_index < this->fe_collection->size(),
-            ExcIndexRange (real_fe_index, 0, this->fe_collection->size()));
-
-    // now finally actually get the
-    // corresponding object and
-    // initialize it
-    this->select_fe_values (real_fe_index,
-                            real_mapping_index,
-                            real_q_index).reinit (cell);
-  }
-
-
-
   template <int dim, int spacedim>
   void
   FEValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
@@ -334,8 +255,9 @@ namespace hp
 
 
   template <int dim, int spacedim>
+  template <class DH, bool lda>
   void
-  FEFaceValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
+  FEFaceValues<dim,spacedim>::reinit (const TriaIterator<DoFCellAccessor<DH,lda> > cell,
                                       const unsigned int face_no,
                                       const unsigned int q_index,
                                       const unsigned int mapping_index,
@@ -384,88 +306,6 @@ namespace hp
 
 
 
-  template <int dim, int spacedim>
-  void
-  FEFaceValues<dim,spacedim>::reinit (const typename dealii::DoFHandler<dim,spacedim>::cell_iterator &cell,
-                                      const unsigned int face_no,
-                                      const unsigned int q_index,
-                                      const unsigned int mapping_index,
-                                      const unsigned int fe_index)
-  {
-    // determine which indices we
-    // should actually use
-    unsigned int real_q_index       = q_index,
-                 real_mapping_index = mapping_index,
-                 real_fe_index      = fe_index;
-
-    if (real_q_index == numbers::invalid_unsigned_int)
-      real_q_index = 0;
-
-    if (real_mapping_index == numbers::invalid_unsigned_int)
-      real_mapping_index = 0;
-
-    if (real_fe_index == numbers::invalid_unsigned_int)
-      real_fe_index = 0;
-
-    // some checks
-    Assert (real_q_index < this->q_collection.size(),
-            ExcIndexRange (real_q_index, 0, this->q_collection.size()));
-    Assert (real_mapping_index < this->mapping_collection->size(),
-            ExcIndexRange (real_mapping_index, 0, this->mapping_collection->size()));
-    Assert (real_fe_index < this->fe_collection->size(),
-            ExcIndexRange (real_fe_index, 0, this->fe_collection->size()));
-
-    // now finally actually get the
-    // corresponding object and
-    // initialize it
-    this->select_fe_values (real_fe_index,
-                            real_mapping_index,
-                            real_q_index).reinit (cell, face_no);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  FEFaceValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
-                                      const unsigned int face_no,
-                                      const unsigned int q_index,
-                                      const unsigned int mapping_index,
-                                      const unsigned int fe_index)
-  {
-    // determine which indices we
-    // should actually use
-    unsigned int real_q_index       = q_index,
-                 real_mapping_index = mapping_index,
-                 real_fe_index      = fe_index;
-
-    if (real_q_index == numbers::invalid_unsigned_int)
-      real_q_index = 0;
-
-    if (real_mapping_index == numbers::invalid_unsigned_int)
-      real_mapping_index = 0;
-
-    if (real_fe_index == numbers::invalid_unsigned_int)
-      real_fe_index = 0;
-
-    // some checks
-    Assert (real_q_index < this->q_collection.size(),
-            ExcIndexRange (real_q_index, 0, this->q_collection.size()));
-    Assert (real_mapping_index < this->mapping_collection->size(),
-            ExcIndexRange (real_mapping_index, 0, this->mapping_collection->size()));
-    Assert (real_fe_index < this->fe_collection->size(),
-            ExcIndexRange (real_fe_index, 0, this->fe_collection->size()));
-
-    // now finally actually get the
-    // corresponding object and
-    // initialize it
-    this->select_fe_values (real_fe_index,
-                            real_mapping_index,
-                            real_q_index).reinit (cell, face_no);
-  }
-
-
-
   template <int dim, int spacedim>
   void
   FEFaceValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
@@ -534,8 +374,9 @@ namespace hp
 
 
   template <int dim, int spacedim>
+  template <class DH, bool lda>
   void
-  FESubfaceValues<dim,spacedim>::reinit (const typename hp::DoFHandler<dim,spacedim>::cell_iterator &cell,
+  FESubfaceValues<dim,spacedim>::reinit (const TriaIterator<DoFCellAccessor<DH,lda> > cell,
                                          const unsigned int face_no,
                                          const unsigned int subface_no,
                                          const unsigned int q_index,
@@ -585,90 +426,6 @@ namespace hp
 
 
 
-  template <int dim, int spacedim>
-  void
-  FESubfaceValues<dim,spacedim>::reinit (const typename dealii::DoFHandler<dim,spacedim>::cell_iterator &cell,
-                                         const unsigned int face_no,
-                                         const unsigned int subface_no,
-                                         const unsigned int q_index,
-                                         const unsigned int mapping_index,
-                                         const unsigned int fe_index)
-  {
-    // determine which indices we
-    // should actually use
-    unsigned int real_q_index       = q_index,
-                 real_mapping_index = mapping_index,
-                 real_fe_index      = fe_index;
-
-    if (real_q_index == numbers::invalid_unsigned_int)
-      real_q_index = 0;
-
-    if (real_mapping_index == numbers::invalid_unsigned_int)
-      real_mapping_index = 0;
-
-    if (real_fe_index == numbers::invalid_unsigned_int)
-      real_fe_index = 0;
-
-    // some checks
-    Assert (real_q_index < this->q_collection.size(),
-            ExcIndexRange (real_q_index, 0, this->q_collection.size()));
-    Assert (real_mapping_index < this->mapping_collection->size(),
-            ExcIndexRange (real_mapping_index, 0, this->mapping_collection->size()));
-    Assert (real_fe_index < this->fe_collection->size(),
-            ExcIndexRange (real_fe_index, 0, this->fe_collection->size()));
-
-    // now finally actually get the
-    // corresponding object and
-    // initialize it
-    this->select_fe_values (real_fe_index,
-                            real_mapping_index,
-                            real_q_index).reinit (cell, face_no, subface_no);
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  FESubfaceValues<dim,spacedim>::reinit (const typename MGDoFHandler<dim,spacedim>::cell_iterator &cell,
-                                         const unsigned int face_no,
-                                         const unsigned int subface_no,
-                                         const unsigned int q_index,
-                                         const unsigned int mapping_index,
-                                         const unsigned int fe_index)
-  {
-    // determine which indices we
-    // should actually use
-    unsigned int real_q_index       = q_index,
-                 real_mapping_index = mapping_index,
-                 real_fe_index      = fe_index;
-
-    if (real_q_index == numbers::invalid_unsigned_int)
-      real_q_index = 0;
-
-    if (real_mapping_index == numbers::invalid_unsigned_int)
-      real_mapping_index = 0;
-
-    if (real_fe_index == numbers::invalid_unsigned_int)
-      real_fe_index = 0;
-
-    // some checks
-    Assert (real_q_index < this->q_collection.size(),
-            ExcIndexRange (real_q_index, 0, this->q_collection.size()));
-    Assert (real_mapping_index < this->mapping_collection->size(),
-            ExcIndexRange (real_mapping_index, 0, this->mapping_collection->size()));
-    Assert (real_fe_index < this->fe_collection->size(),
-            ExcIndexRange (real_fe_index, 0, this->fe_collection->size()));
-
-    // now finally actually get the
-    // corresponding object and
-    // initialize it
-    this->select_fe_values (real_fe_index,
-                            real_mapping_index,
-                            real_q_index).reinit (cell, face_no, subface_no);
-  }
-
-
-
   template <int dim, int spacedim>
   void
   FESubfaceValues<dim,spacedim>::reinit (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
index 224b43ca485cee5a3818d2f73927795ea540faa2..59e2c968118134bc6d25eb0599046f4058b0afa5 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2010 by the deal.II authors
+//    Copyright (C) 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
@@ -81,3 +81,19 @@ namespace hp
 \}
 #endif
 }
+
+for (dof_handler : DOFHANDLER_TEMPLATES; deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS; lda : BOOL)
+{
+namespace hp
+\{
+#if deal_II_dimension <= deal_II_space_dimension
+
+    template void FEValues<deal_II_dimension,deal_II_space_dimension>::reinit(
+    TriaIterator<DoFCellAccessor<dealii::dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int, unsigned int, unsigned int);
+    template void FEFaceValues<deal_II_dimension,deal_II_space_dimension>::reinit(
+    TriaIterator<DoFCellAccessor<dealii::dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int, unsigned int, unsigned int, unsigned int);
+    template void FESubfaceValues<deal_II_dimension,deal_II_space_dimension>::reinit(
+    TriaIterator<DoFCellAccessor<dealii::dof_handler<deal_II_dimension,deal_II_space_dimension>, lda> >, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
+#endif
+\}
+}
index b75aff35e5a100533cf1b7d451c464d9fd0cc0dd..bc8b1321becd073d223471bb90e5263cfbbc412d 100644 (file)
@@ -32,11 +32,10 @@ DEAL_II_NAMESPACE_OPEN
 
 namespace TrilinosWrappers
 {
-  namespace MatrixIterators
+  namespace SparseMatrixIterators
   {
     void
-    SparseMatrix::const_iterator::Accessor::
-    visit_present_row ()
+    AccessorBase::visit_present_row ()
     {
       // if we are asked to visit the
       // past-the-end line, then simply
index b304c150b23e252259155212f0de3dd68afd4fea..222d8dc2ac60cbb5f6945e82f83699b4e5e72089 100644 (file)
@@ -29,8 +29,7 @@ namespace TrilinosWrappers
   namespace SparsityPatternIterators
   {
     void
-    const_iterator::Accessor::
-    visit_present_row ()
+    Accessor::visit_present_row ()
     {
       // if we are asked to visit the
       // past-the-end line, then simply
@@ -42,6 +41,7 @@ namespace TrilinosWrappers
 
           return;
         }
+//TODO: Is this thread safe?
 
       // otherwise first flush Trilinos caches
       sparsity_pattern->compress ();
@@ -659,7 +659,13 @@ namespace TrilinosWrappers
     AssertThrow (out, ExcIO());
   }
 
-
+//TODO: Implement!
+  std::size_t
+  SparsityPattern::memory_consumption() const
+  {
+    Assert(false, ExcNotImplemented());
+    return 0;
+  }
 
 
   // explicit instantiations
index a2b137eb909160d0b9ddfc6821cf81ff3d806f5a..fe5435bac46cdba55237625fba269ff888b45d32 100644 (file)
 
 #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/multigrid/mg_base.h>
 
 
@@ -42,25 +48,6 @@ MGCoarseGridBase<VECTOR>::~MGCoarseGridBase()
 
 // Explicit instantiations
 
-//TODO: Use the template expander script for this
-template class MGTransferBase<dealii::Vector<double> >;
-template class MGTransferBase<dealii::Vector<float> >;
-template class MGTransferBase<BlockVector<double> >;
-template class MGTransferBase<BlockVector<float> >;
-
-template class MGMatrixBase<dealii::Vector<double> >;
-template class MGMatrixBase<dealii::Vector<float> >;
-template class MGMatrixBase<BlockVector<double> >;
-template class MGMatrixBase<BlockVector<float> >;
-
-template class MGSmootherBase<dealii::Vector<float> >;
-template class MGSmootherBase<dealii::Vector<double> >;
-template class MGSmootherBase<BlockVector<float> >;
-template class MGSmootherBase<BlockVector<double> >;
-
-template class MGCoarseGridBase<dealii::Vector<double> >;
-template class MGCoarseGridBase<dealii::Vector<float> >;
-template class MGCoarseGridBase<BlockVector<double> >;
-template class MGCoarseGridBase<BlockVector<float> >;
+#include "mg_base.inst"
 
 DEAL_II_NAMESPACE_CLOSE
diff --git a/deal.II/source/multigrid/mg_base.inst.in b/deal.II/source/multigrid/mg_base.inst.in
new file mode 100644 (file)
index 0000000..6697887
--- /dev/null
@@ -0,0 +1,19 @@
+//---------------------------------------------------------------------------
+//    $Id: vector_tools.inst.in 26105 2012-08-23 22:10:05Z heister $
+//
+//    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.
+//
+//---------------------------------------------------------------------------
+
+for (VEC : SERIAL_VECTORS)
+{
+  template class MGTransferBase< VEC >;
+  template class MGMatrixBase< VEC >;
+  template class MGSmootherBase< VEC >;
+  template class MGCoarseGridBase< VEC >;
+}
diff --git a/deal.II/source/multigrid/mg_dof_accessor.cc b/deal.II/source/multigrid/mg_dof_accessor.cc
deleted file mode 100644 (file)
index af419fb..0000000
+++ /dev/null
@@ -1,706 +0,0 @@
-//---------------------------------------------------------------------------
-//    $Id$
-//    Version: $Name$
-//
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 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.
-//
-//---------------------------------------------------------------------------
-
-
-#include <deal.II/grid/tria_iterator_base.h>
-#include <deal.II/dofs/dof_levels.h>
-#include <deal.II/multigrid/mg_dof_accessor.h>
-#include <deal.II/multigrid/mg_dof_handler.h>
-#include <deal.II/grid/tria_iterator.h>
-#include <deal.II/grid/tria_iterator.templates.h>
-#include <deal.II/fe/fe.h>
-
-#include <deal.II/lac/vector.h>
-#include <deal.II/lac/full_matrix.h>
-#include <deal.II/lac/sparse_matrix.h>
-
-DEAL_II_NAMESPACE_OPEN
-
-
-//TODO:[GK] Inline simple functions
-
-/* ------------------------ MGDoFAccessor --------------------------- */
-
-
-template <int structdim, int dim, int spacedim>
-MGDoFAccessor<structdim, dim, spacedim>::MGDoFAccessor ()
-  :
-  BaseClass (0, -1, -1, 0)
-{
-  Assert (false, ExcInvalidObject());
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-MGDoFAccessor<structdim, dim, spacedim>::MGDoFAccessor (const Triangulation<dim,spacedim> *tria,
-                                                        const int                 level,
-                                                        const int                 index,
-                                                        const AccessorData       *local_data)
-  :
-  BaseClass (tria, level, index, local_data),
-  mg_dof_handler (const_cast<MGDoFHandler<dim,spacedim>*>(local_data))
-{}
-
-
-
-template <int structdim, int dim, int spacedim>
-void
-MGDoFAccessor<structdim, dim, spacedim>::set_mg_dof_handler (MGDoFHandler<dim,spacedim> *dh)
-{
-  typedef DoFAccessor<dim,DoFHandler<dim, spacedim> > BaseClass;
-  Assert (dh != 0, typename BaseClass::ExcInvalidObject());
-  mg_dof_handler = dh;
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-const MGDoFHandler<dim,spacedim> &
-MGDoFAccessor<structdim, dim, spacedim>::get_mg_dof_handler () const
-{
-  return *mg_dof_handler;
-}
-
-
-
-template <int structdim,int dim, int spacedim>
-unsigned int
-MGDoFAccessor<structdim, dim, spacedim>::mg_vertex_dof_index (const int level,
-    const unsigned int vertex,
-    const unsigned int i) const
-{
-  Assert (this->dof_handler != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (this->mg_dof_handler != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (&this->dof_handler->get_fe() != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (vertex<GeometryInfo<structdim>::vertices_per_cell,
-          ExcIndexRange (i,0,GeometryInfo<structdim>::vertices_per_cell));
-  Assert (i<this->dof_handler->get_fe().dofs_per_vertex,
-          ExcIndexRange (i, 0, this->dof_handler->get_fe().dofs_per_vertex));
-
-  return (this->mg_dof_handler->mg_vertex_dofs[this->vertex_index(vertex)]
-          .get_index (level, i, this->dof_handler->get_fe().dofs_per_vertex));
-}
-
-
-template <int structdim, int dim, int spacedim>
-void
-MGDoFAccessor<structdim, dim, spacedim>::set_mg_vertex_dof_index (const int level,
-    const unsigned int vertex,
-    const unsigned int i,
-    const unsigned int index) const
-{
-  Assert (this->dof_handler != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (this->mg_dof_handler != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (&this->dof_handler->get_fe() != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (vertex<GeometryInfo<structdim>::vertices_per_cell,
-          ExcIndexRange (i,0,GeometryInfo<structdim>::vertices_per_cell));
-  Assert (i<this->dof_handler->get_fe().dofs_per_vertex,
-          ExcIndexRange (i, 0, this->dof_handler->get_fe().dofs_per_vertex));
-
-  this->mg_dof_handler->mg_vertex_dofs[this->vertex_index(vertex)]
-  .set_index (level, i, this->dof_handler->get_fe().dofs_per_vertex, index);
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-unsigned int
-MGDoFAccessor<structdim, dim, spacedim>::mg_dof_index (const int level,
-                                                       const unsigned int i) const
-{
-  return this->mg_dof_handler
-         ->template get_dof_index<structdim>(level,
-                                             this->present_index,
-                                             0,
-                                             i);
-}
-
-
-template <int structdim, int dim, int spacedim>
-void MGDoFAccessor<structdim, dim, spacedim>::set_mg_dof_index (const int level,
-    const unsigned int i,
-    const unsigned int index) const
-{
-  this->mg_dof_handler
-  ->template set_dof_index<structdim>(level,
-                                      this->present_index,
-                                      0,
-                                      i,
-                                      index);
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-TriaIterator<MGDoFAccessor<structdim,dim,spacedim> >
-MGDoFAccessor<structdim, dim, spacedim>::child (const unsigned int i) const
-{
-  const TriaIterator<MGDoFAccessor<structdim,dim,spacedim> >
-  q (this->tria,
-     (structdim == dim ?
-      this->level() + 1 :
-      0),
-     this->child_index (i),
-     this->mg_dof_handler);
-
-  // make sure that we either created
-  // a past-the-end iterator or one
-  // pointing to a used cell
-  Assert ((q.state() == IteratorState::past_the_end)
-          ||
-          q->used(),
-          TriaAccessorExceptions::ExcUnusedCellAsChild());
-
-  return q;
-}
-
-
-template <int structdim, int dim, int spacedim>
-TriaIterator<MGDoFAccessor<structdim,dim,spacedim> >
-MGDoFAccessor<structdim, dim, spacedim>::parent () const
-{
-  Assert (this->level () > 0,
-          ExcMessage ("Cell is at coarsest level."));
-
-  const TriaIterator<MGDoFAccessor<structdim,dim,spacedim> >
-  q (this->tria,
-     (structdim == dim ?
-      this->level() - 1 :
-      0),
-     this->parent_index (),
-     this->mg_dof_handler);
-
-  return q;
-}
-
-
-template <int structdim, int dim, int spacedim>
-void
-MGDoFAccessor<structdim, dim, spacedim>::copy_from (const MGDoFAccessor &a)
-{
-  DoFAccessor<structdim, DoFHandler<dim, spacedim> >::copy_from (a);
-  this->set_mg_dof_handler (a.mg_dof_handler);
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-void
-MGDoFAccessor<structdim, dim, spacedim>::copy_from (const TriaAccessorBase<structdim,dim,spacedim> &a)
-{
-  DoFAccessor<structdim, DoFHandler<dim, spacedim> >::copy_from (a);
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-typename internal::MGDoFHandler::Iterators<dim,spacedim>::line_iterator
-MGDoFAccessor<structdim,dim,spacedim>::line (const unsigned int i) const
-{
-  Assert (structdim > 1, ExcImpossibleInDim(structdim));
-  // checking of 'i' happens in
-  // line_index(i)
-
-  return typename internal::MGDoFHandler::Iterators<dim,spacedim>::line_iterator
-         (
-           this->tria,
-           0,  // only sub-objects are allowed, which have no level
-           this->line_index(i),
-           this->mg_dof_handler
-         );
-}
-
-
-template <int structdim, int dim, int spacedim>
-typename internal::MGDoFHandler::Iterators<dim,spacedim>::quad_iterator
-MGDoFAccessor<structdim,dim,spacedim>::quad (const unsigned int i) const
-{
-  Assert (structdim > 2, ExcImpossibleInDim(structdim));
-  // checking of 'i' happens in
-  // quad_index(i)
-
-  return typename internal::MGDoFHandler::Iterators<dim,spacedim>::quad_iterator
-         (
-           this->tria,
-           0,  // only sub-objects are allowed, which have no level
-           this->quad_index (i),
-           this->mg_dof_handler
-         );
-}
-
-
-
-namespace internal
-{
-  namespace MGDoFAccessor
-  {
-    template <int dim, int spacedim>
-    void
-    get_mg_dof_indices (const dealii::MGDoFAccessor<1, dim, spacedim> &accessor,
-                        const int level,
-                        std::vector<unsigned int> &dof_indices)
-    {
-      const unsigned int dofs_per_vertex = accessor.get_dof_handler().get_fe().dofs_per_vertex,
-                         dofs_per_line   = accessor.get_dof_handler().get_fe().dofs_per_line;
-      std::vector<unsigned int>::iterator next = dof_indices.begin();
-      for (unsigned int vertex=0; vertex<2; ++vertex)
-        for (unsigned int d=0; d<dofs_per_vertex; ++d)
-          *next++ = accessor.mg_vertex_dof_index(level,vertex,d);
-      for (unsigned int d=0; d<dofs_per_line; ++d)
-        *next++ = accessor.mg_dof_index(level,d);
-
-      Assert (next == dof_indices.end(),
-              ExcInternalError());
-    }
-
-
-    template <int dim, int spacedim, typename number>
-    void
-    get_mg_dof_values (const dealii::MGDoFAccessor<1, dim, spacedim> &accessor,
-                       const int level,
-                       const dealii::Vector<number> &values,
-                       dealii::Vector<number>       &dof_values)
-    {
-      const unsigned int dofs_per_vertex = accessor.get_dof_handler().get_fe().dofs_per_vertex,
-                         dofs_per_line   = accessor.get_dof_handler().get_fe().dofs_per_line;
-      typename dealii::Vector<number>::iterator next_dof_value=dof_values.begin();
-      for (unsigned int vertex=0; vertex<2; ++vertex)
-        for (unsigned int d=0; d<dofs_per_vertex; ++d)
-          *next_dof_value++ = values(accessor.mg_vertex_dof_index(level,vertex,d));
-      for (unsigned int d=0; d<dofs_per_line; ++d)
-        *next_dof_value++ = values(accessor.mg_dof_index(level,d));
-
-      Assert (next_dof_value == dof_values.end(),
-              ExcInternalError());
-    }
-
-
-
-
-    template <int dim, int spacedim>
-    void
-    get_mg_dof_indices (const dealii::MGDoFAccessor<2, dim, spacedim> &accessor,
-                        const int level,
-                        std::vector<unsigned int> &dof_indices)
-    {
-      const unsigned int dofs_per_vertex = accessor.get_dof_handler().get_fe().dofs_per_vertex,
-                         dofs_per_line   = accessor.get_dof_handler().get_fe().dofs_per_line,
-                         dofs_per_quad   = accessor.get_dof_handler().get_fe().dofs_per_quad;
-      std::vector<unsigned int>::iterator next = dof_indices.begin();
-      for (unsigned int vertex=0; vertex<4; ++vertex)
-        for (unsigned int d=0; d<dofs_per_vertex; ++d)
-          *next++ = accessor.mg_vertex_dof_index(level,vertex,d);
-      for (unsigned int line=0; line<4; ++line)
-        for (unsigned int d=0; d<dofs_per_line; ++d)
-          *next++ = accessor.line(line)->mg_dof_index(level,d);
-      for (unsigned int d=0; d<dofs_per_quad; ++d)
-        *next++ = accessor.mg_dof_index(level,d);
-
-      Assert (next == dof_indices.end(),
-              ExcInternalError());
-    }
-
-
-    template <int dim, int spacedim, typename number>
-    void
-    get_mg_dof_values (const dealii::MGDoFAccessor<2, dim, spacedim> &accessor,
-                       const int level,
-                       const dealii::Vector<number> &values,
-                       dealii::Vector<number>       &dof_values)
-    {
-      const unsigned int dofs_per_vertex = accessor.get_dof_handler().get_fe().dofs_per_vertex,
-                         dofs_per_line   = accessor.get_dof_handler().get_fe().dofs_per_line,
-                         dofs_per_quad   = accessor.get_dof_handler().get_fe().dofs_per_quad;
-      typename dealii::Vector<number>::iterator next_dof_value=dof_values.begin();
-      for (unsigned int vertex=0; vertex<4; ++vertex)
-        for (unsigned int d=0; d<dofs_per_vertex; ++d)
-          *next_dof_value++ = values(accessor.mg_vertex_dof_index(level,vertex,d));
-      for (unsigned int line=0; line<4; ++line)
-        for (unsigned int d=0; d<dofs_per_line; ++d)
-          *next_dof_value++ = values(accessor.line(line)->mg_dof_index(level,d));
-      for (unsigned int d=0; d<dofs_per_quad; ++d)
-        *next_dof_value++ = values(accessor.mg_dof_index(level,d));
-
-      Assert (next_dof_value == dof_values.end(),
-              ExcInternalError());
-    }
-
-
-    template <int dim, int spacedim>
-    void
-    get_mg_dof_indices (const dealii::MGDoFAccessor<3, dim, spacedim> &accessor,
-                        const int level,
-                        std::vector<unsigned int> &dof_indices)
-    {
-      const unsigned int dofs_per_vertex = accessor.get_dof_handler().get_fe().dofs_per_vertex,
-                         dofs_per_line   = accessor.get_dof_handler().get_fe().dofs_per_line,
-                         dofs_per_quad   = accessor.get_dof_handler().get_fe().dofs_per_quad,
-                         dofs_per_hex    = accessor.get_dof_handler().get_fe().dofs_per_hex;
-      std::vector<unsigned int>::iterator next = dof_indices.begin();
-      for (unsigned int vertex=0; vertex<8; ++vertex)
-        for (unsigned int d=0; d<dofs_per_vertex; ++d)
-          *next++ = accessor.mg_vertex_dof_index(level,vertex,d);
-      for (unsigned int line=0; line<12; ++line)
-        for (unsigned int d=0; d<dofs_per_line; ++d)
-          *next++ = accessor.line(line)->mg_dof_index(level,d);
-      for (unsigned int quad=0; quad<6; ++quad)
-        for (unsigned int d=0; d<dofs_per_quad; ++d)
-          *next++ = accessor.quad(quad)->mg_dof_index(level,d);
-      for (unsigned int d=0; d<dofs_per_hex; ++d)
-        *next++ = accessor.mg_dof_index(level,d);
-
-      Assert (next == dof_indices.end(),
-              ExcInternalError());
-    }
-
-
-    template <int dim, int spacedim, typename number>
-    void
-    get_mg_dof_values (const dealii::MGDoFAccessor<3, dim, spacedim> &accessor,
-                       const int level,
-                       const dealii::Vector<number> &values,
-                       dealii::Vector<number>       &dof_values)
-    {
-      const unsigned int dofs_per_vertex = accessor.get_dof_handler().get_fe().dofs_per_vertex,
-                         dofs_per_line   = accessor.get_dof_handler().get_fe().dofs_per_line,
-                         dofs_per_quad   = accessor.get_dof_handler().get_fe().dofs_per_quad,
-                         dofs_per_hex    = accessor.get_dof_handler().get_fe().dofs_per_hex;
-      typename dealii::Vector<number>::iterator next_dof_value=dof_values.begin();
-      for (unsigned int vertex=0; vertex<8; ++vertex)
-        for (unsigned int d=0; d<dofs_per_vertex; ++d)
-          *next_dof_value++ = values(accessor.mg_vertex_dof_index(level,vertex,d));
-      for (unsigned int line=0; line<12; ++line)
-        for (unsigned int d=0; d<dofs_per_line; ++d)
-          *next_dof_value++ = values(accessor.line(line)->mg_dof_index(level,d));
-      for (unsigned int quad=0; quad<6; ++quad)
-        for (unsigned int d=0; d<dofs_per_quad; ++d)
-          *next_dof_value++ = values(accessor.quad(quad)->mg_dof_index(level,d));
-      for (unsigned int d=0; d<dofs_per_hex; ++d)
-        *next_dof_value++ = values(accessor.dof_index(d));
-
-      Assert (next_dof_value == dof_values.end(),
-              ExcInternalError());
-    }
-  }
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-void
-MGDoFAccessor<structdim, dim, spacedim>::
-get_mg_dof_indices (const int level,
-                    std::vector<unsigned int> &dof_indices) const
-{
-  Assert (this->dof_handler != 0,
-          ExcInvalidObject());
-  Assert (this->mg_dof_handler != 0,
-          ExcInvalidObject());
-  Assert (&this->dof_handler->get_fe() != 0,
-          ExcInvalidObject());
-  switch (structdim)
-    {
-    case 1:
-      Assert (dof_indices.size() ==
-              (2*this->dof_handler->get_fe().dofs_per_vertex +
-               this->dof_handler->get_fe().dofs_per_line),
-              typename BaseClass::ExcVectorDoesNotMatch());
-      break;
-    case 2:
-      Assert (dof_indices.size() ==
-              (4*this->dof_handler->get_fe().dofs_per_vertex +
-               4*this->dof_handler->get_fe().dofs_per_line +
-               this->dof_handler->get_fe().dofs_per_quad),
-              typename BaseClass::ExcVectorDoesNotMatch());
-      break;
-    case 3:
-      Assert (dof_indices.size() ==
-              (8*this->dof_handler->get_fe().dofs_per_vertex +
-               12*this->dof_handler->get_fe().dofs_per_line +
-               6*this->dof_handler->get_fe().dofs_per_quad +
-               this->dof_handler->get_fe().dofs_per_hex),
-              typename BaseClass::ExcVectorDoesNotMatch());
-
-      break;
-    default:
-      Assert (false, ExcNotImplemented());
-    }
-
-  internal::MGDoFAccessor::get_mg_dof_indices (*this, level, dof_indices);
-}
-
-
-
-template <int structdim, int dim, int spacedim>
-template <typename number>
-void
-MGDoFAccessor<structdim,dim,spacedim>::
-get_mg_dof_values (const int level,
-                   const Vector<number> &values,
-                   Vector<number>       &dof_values) const
-{
-  Assert (this->dof_handler != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (this->mg_dof_handler != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (&this->dof_handler->get_fe() != 0,
-          typename BaseClass::ExcInvalidObject());
-  Assert (dof_values.size() == this->dof_handler->get_fe().dofs_per_cell,
-          typename BaseClass::ExcVectorDoesNotMatch());
-  Assert (values.size() == this->mg_dof_handler->n_dofs(level),
-          typename BaseClass::ExcVectorDoesNotMatch());
-
-  internal::MGDoFAccessor::get_mg_dof_values (*this, level, values, dof_values);
-}
-
-
-
-/*------------------------- Functions: MGDoFAccessor<0,1,spacedim> -----------------------*/
-
-template <int spacedim>
-MGDoFAccessor<0,1,spacedim>::MGDoFAccessor ()
-  :
-  BaseClass ()
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
-
-
-
-template <int spacedim>
-MGDoFAccessor<0,1,spacedim>::
-MGDoFAccessor (const Triangulation<1,spacedim> *tria,
-               const typename TriaAccessor<0,1,spacedim>::VertexKind vertex_kind,
-               const unsigned int    vertex_index,
-               const MGDoFHandler<1,spacedim> *dof_handler)
-  :
-  BaseClass (tria,
-             vertex_kind,
-             vertex_index),
-  mg_dof_handler(const_cast<MGDoFHandler<1,spacedim>*>(dof_handler))
-{}
-
-
-
-template <int spacedim>
-MGDoFAccessor<0,1,spacedim>::
-MGDoFAccessor (const Triangulation<1,spacedim> *,
-               const int                 ,
-               const int                 ,
-               const MGDoFHandler<1,spacedim> *)
-  :
-  mg_dof_handler(0)
-{
-  Assert (false,
-          ExcMessage ("This constructor can not be called for face iterators in 1d."));
-}
-
-
-
-template <int spacedim>
-template <int structdim2, int dim2, int spacedim2>
-MGDoFAccessor<0,1,spacedim>::MGDoFAccessor (const InvalidAccessor<structdim2,dim2,spacedim2> &)
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
-
-
-
-template <int spacedim>
-template <int structdim2, int dim2, int spacedim2>
-MGDoFAccessor<0,1,spacedim>::MGDoFAccessor (const MGDoFAccessor<structdim2, dim2, spacedim2> &)
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
-
-
-
-template <int spacedim>
-template <int dim2, int spacedim2>
-MGDoFAccessor<0,1,spacedim>::MGDoFAccessor (const MGDoFCellAccessor<dim2, spacedim2> &)
-{
-  Assert (false, typename BaseClass::ExcInvalidObject());
-}
-
-
-
-/*------------------------- Functions: MGDoFCellAccessor -----------------------*/
-
-template <int dim, int spacedim>
-MGDoFCellAccessor<dim,spacedim>::MGDoFCellAccessor (const Triangulation<dim,spacedim> *tria,
-                                                    const int                 level,
-                                                    const int                 index,
-                                                    const AccessorData       *local_data)
-  :
-  MGDoFAccessor<dim, dim, spacedim> (tria,level,index,local_data)
-{}
-
-
-template <int dim, int spacedim>
-void
-MGDoFCellAccessor<dim,spacedim>::get_mg_dof_indices (std::vector<unsigned int> &dof_indices) const
-{
-  MGDoFAccessor<dim,dim,spacedim>::get_mg_dof_indices (this->level(), dof_indices);
-}
-
-
-template <int dim, int spacedim>
-template <typename number>
-void
-MGDoFCellAccessor<dim,spacedim>::get_mg_dof_values (const Vector<number> &values,
-                                                    Vector<number>       &dof_values) const
-{
-  MGDoFAccessor<dim,dim,spacedim>::get_mg_dof_values (this->level(), values, dof_values);
-}
-
-
-
-template <int dim, int spacedim>
-TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-MGDoFCellAccessor<dim,spacedim>::neighbor (const unsigned int i) const
-{
-  TriaIterator<MGDoFCellAccessor<dim,spacedim> > q (this->tria,
-                                                    this->neighbor_level (i),
-                                                    this->neighbor_index (i),
-                                                    this->mg_dof_handler);
-
-#ifdef DEBUG
-  if (q.state() != IteratorState::past_the_end)
-    Assert (q->used(), TriaAccessorExceptions::ExcUnusedCellAsNeighbor());
-#endif
-  return q;
-}
-
-
-template <int dim, int spacedim>
-TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-MGDoFCellAccessor<dim,spacedim>::child (const unsigned int i) const
-{
-  TriaIterator<MGDoFCellAccessor<dim,spacedim> > q (this->tria,
-                                                    this->present_level+1,
-                                                    this->child_index (i),
-                                                    this->mg_dof_handler);
-
-#ifdef DEBUG
-  if (q.state() != IteratorState::past_the_end)
-    Assert (q->used(), TriaAccessorExceptions::ExcUnusedCellAsChild());
-#endif
-  return q;
-}
-
-
-template <int dim, int spacedim>
-TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-MGDoFCellAccessor<dim, spacedim>::parent () const
-{
-  const TriaIterator<MGDoFCellAccessor<dim,spacedim> >
-  q (this->tria,
-     this->level() - 1,
-     this->parent_index (),
-     this->mg_dof_handler);
-
-  return q;
-}
-
-
-namespace internal
-{
-  namespace MGDoFCellAccessor
-  {
-    template <int spacedim>
-    inline
-    typename internal::MGDoFHandler::Iterators<1,spacedim>::face_iterator
-    get_face (const dealii::MGDoFCellAccessor<1,spacedim> &cell,
-              const unsigned int i,
-              const internal::int2type<1>)
-    {
-      dealii::MGDoFAccessor<0,1,spacedim>
-      a (&cell.get_triangulation(),
-         ((i == 0) && cell.at_boundary(0)
-          ?
-          dealii::TriaAccessor<0, 1, spacedim>::left_vertex
-          :
-          ((i == 1) && cell.at_boundary(1)
-           ?
-           dealii::TriaAccessor<0, 1, spacedim>::right_vertex
-           :
-           dealii::TriaAccessor<0, 1, spacedim>::interior_vertex)),
-         cell.vertex_index(i),
-         &cell.get_mg_dof_handler());
-      return typename internal::MGDoFHandler::Iterators<1,spacedim>::face_iterator(a);
-    }
-
-
-    template <int spacedim>
-    inline
-    typename internal::MGDoFHandler::Iterators<2,spacedim>::face_iterator
-    get_face (const dealii::MGDoFCellAccessor<2,spacedim> &cell,
-              const unsigned int i,
-              const internal::int2type<2>)
-    {
-      return cell.line(i);
-    }
-
-
-    template <int spacedim>
-    inline
-    typename internal::MGDoFHandler::Iterators<3,spacedim>::face_iterator
-    get_face (const dealii::MGDoFCellAccessor<3,spacedim> &cell,
-              const unsigned int i,
-              const internal::int2type<3>)
-    {
-      return cell.quad(i);
-    }
-  }
-}
-
-
-template <int dim, int spacedim>
-typename internal::MGDoFHandler::Iterators<dim,spacedim>::face_iterator
-MGDoFCellAccessor<dim,spacedim>::face (const unsigned int i) const
-{
-  Assert (i<GeometryInfo<dim>::faces_per_cell, ExcIndexRange (i, 0, GeometryInfo<dim>::faces_per_cell));
-
-  return internal::MGDoFCellAccessor::get_face (*this, i, internal::int2type<dim>());
-}
-
-
-
-template <int dim, int spacedim>
-typename internal::MGDoFHandler::Iterators<dim,spacedim>::cell_iterator
-MGDoFCellAccessor<dim,spacedim>::
-neighbor_child_on_subface (const unsigned int face,
-                           const unsigned int subface) const
-{
-  const TriaIterator<CellAccessor<dim,spacedim> > q
-    = CellAccessor<dim,spacedim>::neighbor_child_on_subface (face, subface);
-  return TriaIterator<MGDoFCellAccessor<dim,spacedim> > (this->tria,
-                                                         q->level (),
-                                                         q->index (),
-                                                         this->mg_dof_handler);
-}
-
-
-
-// explicit instantiations
-#include "mg_dof_accessor.inst"
-
-
-DEAL_II_NAMESPACE_CLOSE
diff --git a/deal.II/source/multigrid/mg_dof_accessor.inst.in b/deal.II/source/multigrid/mg_dof_accessor.inst.in
deleted file mode 100644 (file)
index 8b8e100..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-//---------------------------------------------------------------------------
-//    $Id$
-//    Version: $Name$
-//
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 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.
-//
-//---------------------------------------------------------------------------
-
-
-for (deal_II_dimension : DIMENSIONS)
-  {
-  template
-  void
-  MGDoFAccessor<1,deal_II_dimension>::
-  get_mg_dof_values (const int level,
-                    const Vector<double> &values,
-                    Vector<double>       &dof_values) const;
-
-  template
-  void
-  MGDoFAccessor<1,deal_II_dimension>::
-  get_mg_dof_values (const int level,
-                    const Vector<float> &values,
-                    Vector<float>       &dof_values) const;
-
-
-#if deal_II_dimension >= 2
-
-  template
-  void
-  MGDoFAccessor<2,deal_II_dimension>::
-  get_mg_dof_values (const int level,
-                    const Vector<double> &values,
-                    Vector<double>       &dof_values) const;
-
-  template
-  void
-  MGDoFAccessor<2,deal_II_dimension>::
-  get_mg_dof_values (const int level,
-                    const Vector<float> &values,
-                    Vector<float>       &dof_values) const;
-
-#endif
-
-
-#if deal_II_dimension >= 3
-
-  template
-  void
-  MGDoFAccessor<3,deal_II_dimension>::
-  get_mg_dof_values (const int level,
-                    const Vector<double> &values,
-                    Vector<double>       &dof_values) const;
-
-  template
-  void
-  MGDoFAccessor<3,deal_II_dimension>::
-  get_mg_dof_values (const int level,
-                    const Vector<float> &values,
-                    Vector<float>       &dof_values) const;
-
-#endif
-
-  template
-  void
-  MGDoFCellAccessor<deal_II_dimension>::
-  get_mg_dof_values (const Vector<double> &values,
-                    Vector<double>       &dof_values) const;
-
-  template
-  void
-  MGDoFCellAccessor<deal_II_dimension>::
-  get_mg_dof_values (const Vector<float> &values,
-                    Vector<float>       &dof_values) const;
-
-
-
-
-#if deal_II_dimension == 1
-  template class MGDoFAccessor<0, 1, 1>;
-  template class MGDoFAccessor<0, 1, 2>;
-  template class MGDoFAccessor<0, 1, 3>;       
-  
-  template class MGDoFAccessor<1, 1, 1>;
-  template class MGDoFAccessor<1, 1, 2>;
-  template class MGDoFAccessor<1, 1, 3>;
-
-  template class MGDoFCellAccessor<1>;
-  template class MGDoFCellAccessor<1,2>;
-  template class MGDoFCellAccessor<1,3>;
-
-  template MGDoFAccessor<0, 1, 1>::MGDoFAccessor (const MGDoFCellAccessor<1, 1> &);
-  template MGDoFAccessor<0, 1, 1>::MGDoFAccessor (const InvalidAccessor<2, 1, 1> &);
-  template MGDoFAccessor<0, 1, 2>::MGDoFAccessor (const MGDoFCellAccessor<1, 2> &);
-  template MGDoFAccessor<0, 1, 2>::MGDoFAccessor (const InvalidAccessor<2, 1, 2> &);
-  template MGDoFAccessor<0, 1, 3>::MGDoFAccessor (const MGDoFCellAccessor<1, 3> &);
-  template MGDoFAccessor<0, 1, 3>::MGDoFAccessor (const InvalidAccessor<2, 1, 3> &);
-
-  template class TriaRawIterator<MGDoFCellAccessor<1> >;
-  template class TriaIterator<MGDoFCellAccessor<1> >;
-  template class TriaActiveIterator<MGDoFCellAccessor<1> >;
-#endif
-
-#if deal_II_dimension == 2
-  template class MGDoFAccessor<1, 2, 2>;
-  template class MGDoFAccessor<2, 2, 2>;
-
-  template class MGDoFAccessor<1, 2, 3>;
-  template class MGDoFAccessor<2, 2, 3>;
-
-  template class MGDoFCellAccessor<2>;
-  template class MGDoFCellAccessor<2,3>;
-
-  template class TriaRawIterator   <MGDoFAccessor<1, 2, 2> >;
-  template class TriaIterator      <MGDoFAccessor<1, 2, 2> >;
-  template class TriaActiveIterator<MGDoFAccessor<1, 2, 2> >;
-
-  template class TriaRawIterator   <MGDoFAccessor<1, 2, 3> >;
-  template class TriaIterator      <MGDoFAccessor<1, 2, 3> >;
-  template class TriaActiveIterator<MGDoFAccessor<1, 2, 3> >;
-
-  template class TriaRawIterator   <MGDoFCellAccessor<2> >;
-  template class TriaIterator      <MGDoFCellAccessor<2> >;
-  template class TriaActiveIterator<MGDoFCellAccessor<2> >;
-#endif
-
-
-#if deal_II_dimension == 3
-  template class MGDoFAccessor<1, 3, 3>;
-  template class MGDoFAccessor<2, 3, 3>;
-  template class MGDoFAccessor<3, 3, 3>;
-
-  template class MGDoFCellAccessor<3>;
-
-  template class TriaRawIterator   <MGDoFAccessor<1, 3, 3> >;
-  template class TriaIterator      <MGDoFAccessor<1, 3, 3> >;
-  template class TriaActiveIterator<MGDoFAccessor<1, 3, 3> >;
-
-  template class TriaRawIterator   <MGDoFAccessor<2, 3, 3> >;
-  template class TriaIterator      <MGDoFAccessor<2, 3, 3> >;
-  template class TriaActiveIterator<MGDoFAccessor<2, 3, 3> >;
-
-  template class TriaRawIterator   <MGDoFCellAccessor<3> >;
-  template class TriaIterator      <MGDoFCellAccessor<3> >;
-  template class TriaActiveIterator<MGDoFCellAccessor<3> >;
-#endif
-  }
-
index 351811a180cccfc3ccc8c7c1bc2c2b8dff4ce6fc..5f80897d8f95947d8fdb393ba8cd229a8127ec87 100644 (file)
@@ -16,8 +16,8 @@
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/dofs/dof_levels.h>
 #include <deal.II/dofs/dof_faces.h>
+#include <deal.II/dofs/dof_accessor.h>
 #include <deal.II/multigrid/mg_dof_handler.h>
-#include <deal.II/multigrid/mg_dof_accessor.h>
 #include <deal.II/grid/tria_levels.h>
 #include <deal.II/grid/tria_accessor.h>
 #include <deal.II/grid/tria_iterator.h>
@@ -39,797 +39,6 @@ namespace parallel
 }
 
 
-//TODO[WB]: this class is currently only implemented for dim==spacedim. to
-//make the general case happen it should undergo a similar transformation as
-//the ::DoFHandler class, i.e. much of the functions here that are dimension
-//dependent should be moved into a local Implementation class.
-// Some of the following already goes in the right direction
-namespace internal
-{
-  namespace MGDoFHandler
-  {
-    // access class
-    // dealii::MGDoFHandler instead
-    // of namespace
-    // internal::MGDoFHandler. same
-    // for dealii::DoFHandler
-    using dealii::MGDoFHandler;
-    using dealii::DoFHandler;
-
-    /**
-     * A class with the same purpose as the similarly named class of the
-     * Triangulation class. See there for more information.
-     */
-    struct Implementation
-    {
-
-      /**
-       * Distribute dofs on the given
-       * cell, with new dofs starting
-       * with index
-       * @p next_free_dof. Return the
-       * next unused index number.
-       *
-       * This function is excluded from
-       * the @p distribute_dofs
-       * function since it can not be
-       * implemented dimension
-       * independent.
-       *
-       * Note that unlike for the usual
-       * dofs, here all cells and not
-       * only active ones are allowed.
-       */
-      template <int spacedim>
-      static
-      unsigned int
-      distribute_dofs_on_cell (typename MGDoFHandler<1,spacedim>::cell_iterator &cell,
-                               unsigned int   next_free_dof)
-      {
-        const unsigned int dim = 1;
-
-        // distribute dofs of vertices
-        if (cell->get_fe().dofs_per_vertex > 0)
-          for (unsigned int v=0; v<GeometryInfo<1>::vertices_per_cell; ++v)
-            {
-              typename MGDoFHandler<dim,spacedim>::cell_iterator neighbor = cell->neighbor(v);
-
-              if (neighbor.state() == IteratorState::valid)
-                {
-                  // has neighbor already been processed?
-                  if (neighbor->user_flag_set() &&
-                      (neighbor->level() == cell->level()))
-                    // copy dofs if the neighbor is on
-                    // the same level (only then are
-                    // mg dofs the same)
-                    {
-                      if (v==0)
-                        for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
-                          cell->set_mg_vertex_dof_index (cell->level(), 0, d,
-                                                         neighbor->mg_vertex_dof_index (cell->level(), 1, d));
-                      else
-                        for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
-                          cell->set_mg_vertex_dof_index (cell->level(), 1, d,
-                                                         neighbor->mg_vertex_dof_index (cell->level(), 0, d));
-
-                      // next neighbor
-                      continue;
-                    };
-                };
-
-              // otherwise: create dofs newly
-              for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
-                cell->set_mg_vertex_dof_index (cell->level(), v, d, next_free_dof++);
-            };
-
-        // dofs of line
-        if (cell->get_fe().dofs_per_line > 0)
-          for (unsigned int d=0; d<cell->get_fe().dofs_per_line; ++d)
-            cell->set_mg_dof_index (cell->level(), d, next_free_dof++);
-
-        // note that this cell has been processed
-        cell->set_user_flag ();
-
-        return next_free_dof;
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      distribute_dofs_on_cell (typename MGDoFHandler<2,spacedim>::cell_iterator &cell,
-                               unsigned int   next_free_dof)
-      {
-        const unsigned int dim = 2;
-        if (cell->get_fe().dofs_per_vertex > 0)
-          // number dofs on vertices
-          for (unsigned int vertex=0; vertex<GeometryInfo<2>::vertices_per_cell; ++vertex)
-            // check whether dofs for this
-            // vertex have been distributed
-            // (only check the first dof)
-            if (cell->mg_vertex_dof_index(cell->level(), vertex, 0) == DoFHandler<2>::invalid_dof_index)
-              for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
-                cell->set_mg_vertex_dof_index (cell->level(), vertex, d, next_free_dof++);
-
-        // for the four sides
-        if (cell->get_fe().dofs_per_line > 0)
-          for (unsigned int side=0; side<GeometryInfo<2>::faces_per_cell; ++side)
-            {
-              typename MGDoFHandler<dim,spacedim>::line_iterator line = cell->line(side);
-
-              // distribute dofs if necessary:
-              // check whether line dof is already
-              // numbered (check only first dof)
-              if (line->mg_dof_index(cell->level(), 0) == DoFHandler<2>::invalid_dof_index)
-                // if not: distribute dofs
-                for (unsigned int d=0; d<cell->get_fe().dofs_per_line; ++d)
-                  line->set_mg_dof_index (cell->level(), d, next_free_dof++);
-            };
-
-
-        // dofs of quad
-        if (cell->get_fe().dofs_per_quad > 0)
-          for (unsigned int d=0; d<cell->get_fe().dofs_per_quad; ++d)
-            cell->set_mg_dof_index (cell->level(), d, next_free_dof++);
-
-
-        // note that this cell has been processed
-        cell->set_user_flag ();
-
-        return next_free_dof;
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      distribute_dofs_on_cell (typename MGDoFHandler<3,spacedim>::cell_iterator &cell,
-                               unsigned int   next_free_dof)
-      {
-        const unsigned int dim = 3;
-        if (cell->get_fe().dofs_per_vertex > 0)
-          // number dofs on vertices
-          for (unsigned int vertex=0; vertex<GeometryInfo<3>::vertices_per_cell; ++vertex)
-            // check whether dofs for this
-            // vertex have been distributed
-            // (only check the first dof)
-            if (cell->mg_vertex_dof_index(cell->level(), vertex, 0) == DoFHandler<3>::invalid_dof_index)
-              for (unsigned int d=0; d<cell->get_fe().dofs_per_vertex; ++d)
-                cell->set_mg_vertex_dof_index (cell->level(), vertex, d, next_free_dof++);
-
-        // for the lines
-        if (cell->get_fe().dofs_per_line > 0)
-          for (unsigned int l=0; l<GeometryInfo<3>::lines_per_cell; ++l)
-            {
-              typename MGDoFHandler<dim,spacedim>::line_iterator line = cell->line(l);
-
-              // distribute dofs if necessary:
-              // check whether line dof is already
-              // numbered (check only first dof)
-              if (line->mg_dof_index(cell->level(), 0) == DoFHandler<3>::invalid_dof_index)
-                // if not: distribute dofs
-                for (unsigned int d=0; d<cell->get_fe().dofs_per_line; ++d)
-                  line->set_mg_dof_index (cell->level(), d, next_free_dof++);
-            };
-
-        // for the quads
-        if (cell->get_fe().dofs_per_quad > 0)
-          for (unsigned int q=0; q<GeometryInfo<3>::quads_per_cell; ++q)
-            {
-              typename MGDoFHandler<dim,spacedim>::quad_iterator quad = cell->quad(q);
-
-              // distribute dofs if necessary:
-              // check whether line dof is already
-              // numbered (check only first dof)
-              if (quad->mg_dof_index(cell->level(), 0) == DoFHandler<3>::invalid_dof_index)
-                // if not: distribute dofs
-                for (unsigned int d=0; d<cell->get_fe().dofs_per_quad; ++d)
-                  quad->set_mg_dof_index (cell->level(), d, next_free_dof++);
-            };
-
-
-        // dofs of cell
-        if (cell->get_fe().dofs_per_hex > 0)
-          for (unsigned int d=0; d<cell->get_fe().dofs_per_hex; ++d)
-            cell->set_mg_dof_index (cell->level(), d, next_free_dof++);
-
-
-        // note that this cell has
-        // been processed
-        cell->set_user_flag ();
-
-        return next_free_dof;
-      }
-
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      get_dof_index (const MGDoFHandler<1,spacedim> &mg_dof_handler,
-                     const internal::DoFHandler::DoFLevel<1> &mg_level,
-                     const internal::DoFHandler::DoFFaces<1> &,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const int2type<1>)
-      {
-        return mg_level.dof_object.
-               get_dof_index (mg_dof_handler,
-                              obj_index,
-                              fe_index,
-                              local_index);
-      }
-
-
-      template <int spacedim>
-      static
-      void
-      set_dof_index (const MGDoFHandler<1,spacedim> &mg_dof_handler,
-                     internal::DoFHandler::DoFLevel<1> &mg_level,
-                     internal::DoFHandler::DoFFaces<1> &,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const unsigned int       global_index,
-                     const int2type<1>)
-      {
-        mg_level.dof_object.
-        set_dof_index (mg_dof_handler,
-                       obj_index,
-                       fe_index,
-                       local_index,
-                       global_index);
-
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      get_dof_index(const MGDoFHandler<2,spacedim> &mg_dof_handler,
-                    const internal::DoFHandler::DoFLevel<2> &,
-                    const internal::DoFHandler::DoFFaces<2> &mg_faces,
-                    const unsigned int       obj_index,
-                    const unsigned int       fe_index,
-                    const unsigned int       local_index,
-                    const int2type<1>)
-      {
-        return mg_faces.lines.
-               get_dof_index (mg_dof_handler,
-                              obj_index,
-                              fe_index,
-                              local_index);
-      }
-
-
-      template <int spacedim>
-      static
-      void
-      set_dof_index (const MGDoFHandler<2,spacedim> &mg_dof_handler,
-                     internal::DoFHandler::DoFLevel<2> &,
-                     internal::DoFHandler::DoFFaces<2> &mg_faces,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const unsigned int       global_index,
-                     const int2type<1>)
-      {
-        mg_faces.lines.
-        set_dof_index (mg_dof_handler,
-                       obj_index,
-                       fe_index,
-                       local_index,
-                       global_index);
-
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      get_dof_index (const MGDoFHandler<2,spacedim> &mg_dof_handler,
-                     const internal::DoFHandler::DoFLevel<2> &mg_level,
-                     const internal::DoFHandler::DoFFaces<2> &,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const int2type<2>)
-      {
-        return mg_level.dof_object.
-               get_dof_index (mg_dof_handler,
-                              obj_index,
-                              fe_index,
-                              local_index);
-      }
-
-
-      template <int spacedim>
-      static
-      void
-      set_dof_index (const MGDoFHandler<2,spacedim> &mg_dof_handler,
-                     internal::DoFHandler::DoFLevel<2> &mg_level,
-                     internal::DoFHandler::DoFFaces<2> &,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const unsigned int       global_index,
-                     const int2type<2>)
-      {
-        mg_level.dof_object.
-        set_dof_index (mg_dof_handler,
-                       obj_index,
-                       fe_index,
-                       local_index,
-                       global_index);
-
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      get_dof_index (const MGDoFHandler<3,spacedim> &mg_dof_handler,
-                     const internal::DoFHandler::DoFLevel<3> &,
-                     const internal::DoFHandler::DoFFaces<3> &mg_faces,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const int2type<1>)
-      {
-        return mg_faces.lines.
-               get_dof_index (mg_dof_handler,
-                              obj_index,
-                              fe_index,
-                              local_index);
-      }
-
-
-      template <int spacedim>
-      static
-      void
-      set_dof_index (const MGDoFHandler<3,spacedim> &mg_dof_handler,
-                     internal::DoFHandler::DoFLevel<3> &,
-                     internal::DoFHandler::DoFFaces<3> &mg_faces,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const unsigned int       global_index,
-                     const int2type<1>)
-      {
-        mg_faces.lines.
-        set_dof_index (mg_dof_handler,
-                       obj_index,
-                       fe_index,
-                       local_index,
-                       global_index);
-
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      get_dof_index (const MGDoFHandler<3,spacedim> &mg_dof_handler,
-                     const internal::DoFHandler::DoFLevel<3> &,
-                     const internal::DoFHandler::DoFFaces<3> &mg_faces,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const int2type<2>)
-      {
-        return mg_faces.quads.
-               get_dof_index (mg_dof_handler,
-                              obj_index,
-                              fe_index,
-                              local_index);
-      }
-
-
-      template <int spacedim>
-      static
-      unsigned int
-      get_dof_index (const MGDoFHandler<3,spacedim> &mg_dof_handler,
-                     const internal::DoFHandler::DoFLevel<3> &mg_level,
-                     const internal::DoFHandler::DoFFaces<3> &,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const int2type<3>)
-      {
-        return mg_level.dof_object.
-               get_dof_index (mg_dof_handler,
-                              obj_index,
-                              fe_index,
-                              local_index);
-      }
-
-
-      template <int spacedim>
-      static
-      void
-      set_dof_index (const MGDoFHandler<3,spacedim> &mg_dof_handler,
-                     internal::DoFHandler::DoFLevel<3> &,
-                     internal::DoFHandler::DoFFaces<3> &mg_faces,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const unsigned int       global_index,
-                     const int2type<2>)
-      {
-        mg_faces.quads.
-        set_dof_index (mg_dof_handler,
-                       obj_index,
-                       fe_index,
-                       local_index,
-                       global_index);
-
-      }
-
-
-      template <int spacedim>
-      static
-      void
-      set_dof_index (const MGDoFHandler<3,spacedim> &mg_dof_handler,
-                     internal::DoFHandler::DoFLevel<3> &mg_level,
-                     internal::DoFHandler::DoFFaces<3> &,
-                     const unsigned int       obj_index,
-                     const unsigned int       fe_index,
-                     const unsigned int       local_index,
-                     const unsigned int       global_index,
-                     const int2type<3>)
-      {
-        mg_level.dof_object.
-        set_dof_index (mg_dof_handler,
-                       obj_index,
-                       fe_index,
-                       local_index,
-                       global_index);
-
-      }
-
-
-
-
-      template <int spacedim>
-      static
-      void reserve_space (MGDoFHandler<1,spacedim> &mg_dof_handler)
-      {
-        const unsigned int dim = 1;
-
-        Assert (mg_dof_handler.get_tria().n_levels() > 0,
-                ExcMessage("Invalid triangulation"));
-
-        //////////////////////////
-        // DESTRUCTION
-        mg_dof_handler.clear_space ();
-
-        ////////////////////////////
-        // CONSTRUCTION
-
-        // first allocate space for the
-        // lines on each level
-        for (unsigned int i=0; i<mg_dof_handler.get_tria().n_levels(); ++i)
-          {
-            mg_dof_handler.mg_levels.push_back (new internal::DoFHandler::DoFLevel<1>);
-
-            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);
-          }
-
-        // now allocate space for the
-        // vertices. To this end, we need
-        // to construct as many objects as
-        // there are vertices and let them
-        // allocate enough space for their
-        // vertex indices on the levels they
-        // live on. We need therefore to
-        // count to how many levels a cell
-        // belongs to, which we do by looping
-        // over all cells and storing the
-        // maximum and minimum level each
-        // vertex we pass by  belongs to
-        mg_dof_handler.mg_vertex_dofs.resize (mg_dof_handler.get_tria().n_vertices());
-
-        std::vector<unsigned int> min_level (mg_dof_handler.get_tria().n_vertices(), mg_dof_handler.get_tria().n_levels());
-        std::vector<unsigned int> max_level (mg_dof_handler.get_tria().n_vertices(), 0);
-
-        typename dealii::Triangulation<dim,spacedim>::cell_iterator cell = mg_dof_handler.get_tria().begin(),
-                                                                    endc = mg_dof_handler.get_tria().end();
-        for (; cell!=endc; ++cell)
-          for (unsigned int vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell;
-               ++vertex)
-            {
-              const unsigned int vertex_index = cell->vertex_index(vertex);
-              if (min_level[vertex_index] > static_cast<unsigned int>(cell->level()))
-                min_level[vertex_index] = cell->level();
-              if (max_level[vertex_index] < static_cast<unsigned int>(cell->level()))
-                max_level[vertex_index] = cell->level();
-            }
-
-        // now allocate the needed space
-        for (unsigned int vertex=0; vertex<mg_dof_handler.get_tria().n_vertices(); ++vertex)
-          if (mg_dof_handler.get_tria().vertex_used(vertex))
-            {
-              Assert (min_level[vertex] < mg_dof_handler.get_tria().n_levels(),   ExcInternalError());
-              Assert (max_level[vertex] >= min_level[vertex], ExcInternalError());
-
-              mg_dof_handler.mg_vertex_dofs[vertex].init (min_level[vertex],
-                                                          max_level[vertex],
-                                                          mg_dof_handler.get_fe().dofs_per_vertex);
-            }
-          else
-            {
-              Assert (min_level[vertex] == mg_dof_handler.get_tria().n_levels(),   ExcInternalError());
-              Assert (max_level[vertex] == 0, ExcInternalError());
-
-              // reset to original state
-              mg_dof_handler.mg_vertex_dofs[vertex].init (1, 0, 0);
-            }
-      }
-
-
-
-      template <int spacedim>
-      static
-      void reserve_space (MGDoFHandler<2,spacedim> &mg_dof_handler)
-      {
-        const unsigned int dim = 2;
-        Assert (mg_dof_handler.get_tria().n_levels() > 0,
-                ExcMessage("Invalid triangulation"));
-
-        ////////////////////////////
-        // DESTRUCTION
-        mg_dof_handler.clear_space ();
-
-        ////////////////////////////
-        // CONSTRUCTION
-
-        // first allocate space for the
-        // lines and quads on each level
-        for (unsigned int i=0; i<mg_dof_handler.get_tria().n_levels(); ++i)
-          {
-            mg_dof_handler.mg_levels.push_back (new internal::DoFHandler::DoFLevel<2>);
-
-            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);
-          }
-
-        mg_dof_handler.mg_faces = new internal::DoFHandler::DoFFaces<2>;
-        mg_dof_handler.mg_faces->lines.dofs = std::vector<unsigned int> (mg_dof_handler.get_tria().n_raw_lines() *
-                                              mg_dof_handler.get_fe().dofs_per_line,
-                                              DoFHandler<2>::invalid_dof_index);
-
-
-        // now allocate space for the
-        // vertices. To this end, we need
-        // to construct as many objects as
-        // there are vertices and let them
-        // allocate enough space for their
-        // vertex indices on the levels they
-        // live on. We need therefore to
-        // count to how many levels a cell
-        // belongs to, which we do by looping
-        // over all cells and storing the
-        // maximum and minimum level each
-        // vertex we pass by  belongs to
-        mg_dof_handler.mg_vertex_dofs.resize (mg_dof_handler.get_tria().n_vertices());
-
-        // initialize these arrays with
-        // invalid values (min>max)
-        std::vector<unsigned int> min_level (mg_dof_handler.get_tria().n_vertices(),
-                                             mg_dof_handler.get_tria().n_levels());
-        std::vector<unsigned int> max_level (mg_dof_handler.get_tria().n_vertices(), 0);
-
-        typename dealii::Triangulation<dim,spacedim>::cell_iterator cell = mg_dof_handler.get_tria().begin(),
-                                                                    endc = mg_dof_handler.get_tria().end();
-        for (; cell!=endc; ++cell)
-          for (unsigned int vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell;
-               ++vertex)
-            {
-              const unsigned int vertex_index = cell->vertex_index(vertex);
-              if (min_level[vertex_index] > static_cast<unsigned int>(cell->level()))
-                min_level[vertex_index] = cell->level();
-              if (max_level[vertex_index] < static_cast<unsigned int>(cell->level()))
-                max_level[vertex_index] = cell->level();
-            }
-
-
-        // now allocate the needed space
-        for (unsigned int vertex=0; vertex<mg_dof_handler.get_tria().n_vertices(); ++vertex)
-          if (mg_dof_handler.get_tria().vertex_used(vertex))
-            {
-              Assert (min_level[vertex] < mg_dof_handler.get_tria().n_levels(), ExcInternalError());
-              Assert (max_level[vertex] >= min_level[vertex], ExcInternalError());
-
-              mg_dof_handler.mg_vertex_dofs[vertex].init (min_level[vertex],
-                                                          max_level[vertex],
-                                                          mg_dof_handler.get_fe().dofs_per_vertex);
-            }
-          else
-            {
-              Assert (min_level[vertex] == mg_dof_handler.get_tria().n_levels(),   ExcInternalError());
-              Assert (max_level[vertex] == 0, ExcInternalError());
-
-              // reset to original state
-              mg_dof_handler.mg_vertex_dofs[vertex].init (1, 0, 0);
-            }
-      }
-
-
-
-      template <int spacedim>
-      static
-      void reserve_space (MGDoFHandler<3,spacedim> &mg_dof_handler)
-      {
-        const unsigned int dim = 3;
-
-        Assert (mg_dof_handler.get_tria().n_levels() > 0,
-                ExcMessage("Invalid triangulation"));
-
-        ////////////////////////////
-        // DESTRUCTION
-        mg_dof_handler.clear_space ();
-
-        ////////////////////////////
-        // CONSTRUCTION
-
-        // first allocate space for the
-        // lines and quads on each level
-        for (unsigned int i=0; i<mg_dof_handler.get_tria().n_levels(); ++i)
-          {
-            mg_dof_handler.mg_levels.push_back (new internal::DoFHandler::DoFLevel<3>);
-
-            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);
-          }
-        mg_dof_handler.mg_faces = new internal::DoFHandler::DoFFaces<3>;
-        mg_dof_handler.mg_faces->lines.dofs = std::vector<unsigned int> (mg_dof_handler.get_tria().n_raw_lines() *
-                                              mg_dof_handler.get_fe().dofs_per_line,
-                                              DoFHandler<3>::invalid_dof_index);
-        mg_dof_handler.mg_faces->quads.dofs = std::vector<unsigned int> (mg_dof_handler.get_tria().n_raw_quads() *
-                                              mg_dof_handler.get_fe().dofs_per_quad,
-                                              DoFHandler<3>::invalid_dof_index);
-
-
-        // now allocate space for the
-        // vertices. To this end, we need
-        // to construct as many objects as
-        // there are vertices and let them
-        // allocate enough space for their
-        // vertex indices on the levels they
-        // live on. We need therefore to
-        // count to how many levels a cell
-        // belongs to, which we do by looping
-        // over all cells and storing the
-        // maximum and minimum level each
-        // vertex we pass by  belongs to
-        mg_dof_handler.mg_vertex_dofs.resize (mg_dof_handler.get_tria().n_vertices());
-
-        std::vector<unsigned int> min_level (mg_dof_handler.get_tria().n_vertices(), mg_dof_handler.get_tria().n_levels());
-        std::vector<unsigned int> max_level (mg_dof_handler.get_tria().n_vertices(), 0);
-
-        typename dealii::Triangulation<dim,spacedim>::cell_iterator cell = mg_dof_handler.get_tria().begin(),
-                                                                    endc = mg_dof_handler.get_tria().end();
-        for (; cell!=endc; ++cell)
-          for (unsigned int vertex=0; vertex<GeometryInfo<dim>::vertices_per_cell;
-               ++vertex)
-            {
-              const unsigned int vertex_index = cell->vertex_index(vertex);
-              if (min_level[vertex_index] > static_cast<unsigned int>(cell->level()))
-                min_level[vertex_index] = cell->level();
-              if (max_level[vertex_index] < static_cast<unsigned int>(cell->level()))
-                max_level[vertex_index] = cell->level();
-            }
-
-
-        // now allocate the needed space
-        for (unsigned int vertex=0; vertex<mg_dof_handler.get_tria().n_vertices(); ++vertex)
-          if (mg_dof_handler.get_tria().vertex_used(vertex))
-            {
-              Assert (min_level[vertex] < mg_dof_handler.get_tria().n_levels(), ExcInternalError());
-              Assert (max_level[vertex] >= min_level[vertex], ExcInternalError());
-
-              mg_dof_handler.mg_vertex_dofs[vertex].init (min_level[vertex],
-                                                          max_level[vertex],
-                                                          mg_dof_handler.get_fe().dofs_per_vertex);
-            }
-          else
-            {
-              Assert (min_level[vertex] == mg_dof_handler.get_tria().n_levels(), ExcInternalError());
-              Assert (max_level[vertex] == 0, ExcInternalError());
-
-              // reset to original state
-              mg_dof_handler.mg_vertex_dofs[vertex].init (1, 0, 0);
-            }
-      }
-
-
-    };
-  }
-}
-
-
-
-
-/* ------------------------ MGVertexDoFs ----------------------------------- */
-//TODO: This seems horrible memory fragmentation!
-
-template <int dim, int spacedim>
-MGDoFHandler<dim,spacedim>::MGVertexDoFs::MGVertexDoFs ()
-  :
-  coarsest_level (numbers::invalid_unsigned_int),
-  finest_level (0),
-  indices (0)
-{}
-
-
-template <int dim, int spacedim>
-void MGDoFHandler<dim,spacedim>::MGVertexDoFs::init (const unsigned int cl,
-                                                     const unsigned int fl,
-                                                     const unsigned int dofs_per_vertex)
-{
-  if (indices != 0)
-    {
-      delete[] indices;
-      indices = 0;
-    }
-
-  coarsest_level = cl;
-  finest_level   = fl;
-
-  // in the case where an invalid
-  // entry is requested, just leave
-  // everything else alone
-  if (cl > fl)
-    return;
-
-  const unsigned int n_levels = finest_level-coarsest_level + 1;
-
-  indices = new unsigned int[n_levels * dofs_per_vertex];
-  Assert (indices != 0, ExcNoMemory ());
-
-  for (unsigned int i=0; i<n_levels*dofs_per_vertex; ++i)
-    indices[i] = DoFHandler<dim, spacedim>::invalid_dof_index;
-}
-
-
-template <int dim, int spacedim>
-MGDoFHandler<dim,spacedim>::MGVertexDoFs::~MGVertexDoFs ()
-{
-  delete[] indices;
-}
-
-
-template <int dim, int spacedim>
-typename MGDoFHandler<dim,spacedim>::MGVertexDoFs &
-MGDoFHandler<dim,spacedim>::MGVertexDoFs::operator = (const MGVertexDoFs &)
-{
-  Assert (false,
-          ExcMessage ("We don't know how many dofs per vertex there are, so there's "
-                      "no way we can copy the 'indices' array"));
-  return *this;
-}
-
-
-
-template <int dim, int spacedim>
-unsigned int MGDoFHandler<dim,spacedim>::MGVertexDoFs::get_coarsest_level () const
-{
-  return coarsest_level;
-}
-
-
-template <int dim, int spacedim>
-unsigned int MGDoFHandler<dim,spacedim>::MGVertexDoFs::get_finest_level () const
-{
-  return finest_level;
-}
-
 
 /* ------------------------ MGDoFHandler ------------------------------------- */
 
@@ -839,8 +48,6 @@ const unsigned int MGDoFHandler<dim,spacedim>::dimension;
 
 template <int dim, int spacedim>
 MGDoFHandler<dim,spacedim>::MGDoFHandler ()
-  :
-  mg_faces (NULL)
 {}
 
 
@@ -848,81 +55,29 @@ MGDoFHandler<dim,spacedim>::MGDoFHandler ()
 template <int dim, int spacedim>
 MGDoFHandler<dim,spacedim>::MGDoFHandler (const Triangulation<dim,spacedim> &tria)
   :
-  DoFHandler<dim,spacedim> (tria),
-  mg_faces (NULL)
-{
-  Assert ((dynamic_cast<const parallel::distributed::Triangulation< dim, spacedim >*>
-           (&tria)
-           == 0),
-          ExcMessage ("The given triangulation is parallel distributed but "
-                      "this class does not currently support this."));
-}
+  DoFHandler<dim,spacedim> (tria)
+{}
 
 
 template <int dim, int spacedim>
 MGDoFHandler<dim,spacedim>::~MGDoFHandler ()
-{
-  clear ();
-}
-
-
+{}
 
 template <int dim, int spacedim>
-std::size_t
-MGDoFHandler<dim,spacedim>::memory_consumption() const
+void MGDoFHandler<dim,spacedim>::distribute_dofs (const FiniteElement<dim,spacedim> &fe)
 {
-  std::size_t mem = DoFHandler<dim,spacedim>::memory_consumption();
-  for (unsigned int l=0; l<mg_levels.size(); ++l)
-    mem += mg_levels[l]->memory_consumption();
-
-  mem += MemoryConsumption::memory_consumption(*mg_faces);
-
-  for (unsigned int l=0; l<mg_vertex_dofs.size(); ++l)
-    mem += sizeof(MGVertexDoFs)
-           + (1+mg_vertex_dofs[l].get_finest_level()-mg_vertex_dofs[l].get_coarsest_level())
-           * sizeof(unsigned int);
-  mem += MemoryConsumption::memory_consumption(mg_used_dofs);
-  return mem;
+  // first distribute global dofs
+  DoFHandler<dim,spacedim>::distribute_dofs (fe);
+  DoFHandler<dim,spacedim>::distribute_mg_dofs (fe);
 }
 
 
-/*------------------------ Cell iterator functions ------------------------*/
-
 
 template <int dim, int spacedim>
 typename MGDoFHandler<dim,spacedim>::cell_iterator
 MGDoFHandler<dim,spacedim>::begin (const unsigned int level) const
 {
-  return cell_iterator (*this->get_tria().begin(level),
-                        this);
-}
-
-
-
-template <int dim, int spacedim>
-typename MGDoFHandler<dim,spacedim>::active_cell_iterator
-MGDoFHandler<dim,spacedim>::begin_active (const unsigned int level) const
-{
-  // level is checked in begin_raw
-  cell_iterator i = begin (level);
-  if (i.state() != IteratorState::valid)
-    return i;
-  while (i->has_children())
-    if ((++i).state() != IteratorState::valid)
-      return i;
-  return i;
-}
-
-
-
-template <int dim, int spacedim>
-typename MGDoFHandler<dim,spacedim>::cell_iterator
-MGDoFHandler<dim,spacedim>::end () const
-{
-  return cell_iterator (&this->get_tria(),
-                        -1,
-                        -1,
-                        this);
+  return DoFHandler<dim,spacedim>::begin_mg(level);
 }
 
 
@@ -930,343 +85,18 @@ template <int dim, int spacedim>
 typename MGDoFHandler<dim,spacedim>::cell_iterator
 MGDoFHandler<dim,spacedim>::end (const unsigned int level) const
 {
-  return (level == this->get_tria().n_levels()-1 ?
-          end() :
-          begin (level+1));
-}
-
-
-template <int dim, int spacedim>
-typename MGDoFHandler<dim, spacedim>::active_cell_iterator
-MGDoFHandler<dim, spacedim>::end_active (const unsigned int level) const
-{
-  return (level == this->get_tria().n_levels()-1 ?
-          active_cell_iterator(end()) :
-          begin_active (level+1));
-}
-
-
-
-//---------------------------------------------------------------------------
-
-
-template <int dim, int spacedim>
-template <int structdim>
-unsigned int
-MGDoFHandler<dim,spacedim>::
-get_dof_index (const unsigned int       obj_level,
-               const unsigned int       obj_index,
-               const unsigned int       fe_index,
-               const unsigned int       local_index) const
-{
-  return internal::MGDoFHandler::Implementation::
-         get_dof_index (*this,
-                        *this->mg_levels[obj_level],
-                        *this->mg_faces,
-                        obj_index,
-                        fe_index,
-                        local_index,
-                        internal::int2type<structdim>());
-}
-
-
-
-template <int dim, int spacedim>
-template <int structdim>
-void
-MGDoFHandler<dim,spacedim>::
-set_dof_index (const unsigned int obj_level,
-               const unsigned int obj_index,
-               const unsigned int fe_index,
-               const unsigned int local_index,
-               const unsigned int global_index) const
-{
-  internal::MGDoFHandler::Implementation::
-  set_dof_index (*this,
-                 *this->mg_levels[obj_level],
-                 *this->mg_faces,
-                 obj_index,
-                 fe_index,
-                 local_index,
-                 global_index,
-                 internal::int2type<structdim>());
-}
-
-
-
-template <int dim, int spacedim>
-void MGDoFHandler<dim,spacedim>::distribute_dofs (const FiniteElement<dim,spacedim> &fe)
-{
-  // first distribute global dofs
-  DoFHandler<dim,spacedim>::distribute_dofs (fe);
-
-
-  // reserve space for the MG dof numbers
-  reserve_space ();
-  mg_used_dofs.resize (this->get_tria().n_levels(), 0);
-
-  // Clear user flags because we will
-  // need them. But first we save
-  // them and make sure that we
-  // restore them later such that at
-  // the end of this function the
-  // Triangulation will be in the
-  // same state as it was at the
-  // beginning of this function.
-  std::vector<bool> user_flags;
-  this->get_tria().save_user_flags(user_flags);
-  const_cast<Triangulation<dim,spacedim> &>(this->get_tria()).clear_user_flags ();
-
-  // now distribute indices on each level
-  // separately
-  for (unsigned int level=0; level<this->get_tria().n_levels(); ++level)
-    {
-      unsigned int next_free_dof = 0;
-      cell_iterator cell = begin(level),
-                    endc = end(level);
-
-      for (; cell != endc; ++cell)
-        next_free_dof = internal::MGDoFHandler::Implementation::distribute_dofs_on_cell<spacedim> (cell, next_free_dof);
-
-      mg_used_dofs[level] = next_free_dof;
-    }
-
-  // finally restore the user flags
-  const_cast<Triangulation<dim,spacedim> &>(this->get_tria())
-  .load_user_flags(user_flags);
-
-  this->block_info_object.initialize(*this, true);
-}
-
-
-
-template <int dim, int spacedim>
-void
-MGDoFHandler<dim,spacedim>::clear ()
-{
-  // release own memory
-  clear_space ();
-
-  // let base class release its mem
-  // as well
-  DoFHandler<dim,spacedim>::clear ();
-}
-
-
-
-template <int dim, int spacedim>
-unsigned int MGDoFHandler<dim,spacedim>::n_dofs (const unsigned int level) const
-{
-  Assert (level < mg_used_dofs.size(), ExcInvalidLevel(level));
-
-  return mg_used_dofs[level];
-}
-
-
-
-template <>
-void MGDoFHandler<1>::renumber_dofs (const unsigned int level,
-                                     const std::vector<unsigned int> &new_numbers)
-{
-  Assert (new_numbers.size() == n_dofs(level), DoFHandler<1>::ExcRenumberingIncomplete());
-
-  // note that we can not use cell iterators
-  // in this function since then we would
-  // renumber the dofs on the interface of
-  // two cells more than once. Anyway, this
-  // ways it's not only more correct but also
-  // faster
-  for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
-       i!=mg_vertex_dofs.end(); ++i)
-    // if the present vertex lives on
-    // the present level
-    if ((i->get_coarsest_level() <= level) &&
-        (i->get_finest_level() >= level))
-      for (unsigned int d=0; d<this->get_fe().dofs_per_vertex; ++d)
-        i->set_index (level, d, this->get_fe().dofs_per_vertex,
-                      new_numbers[i->get_index (level, d,
-                                                this->get_fe().dofs_per_vertex)]);
-
-  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)
-        {
-          Assert(*i<new_numbers.size(), ExcInternalError());
-          *i = new_numbers[*i];
-        }
-    }
-}
-
-
-
-template <>
-void MGDoFHandler<2>::renumber_dofs (const unsigned int  level,
-                                     const std::vector<unsigned int>  &new_numbers)
-{
-  Assert (new_numbers.size() == n_dofs(level),
-          DoFHandler<2>::ExcRenumberingIncomplete());
-
-  for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
-       i!=mg_vertex_dofs.end(); ++i)
-    // if the present vertex lives on
-    // the present level
-    if ((i->get_coarsest_level() <= level) &&
-        (i->get_finest_level() >= level))
-      for (unsigned int d=0; d<this->get_fe().dofs_per_vertex; ++d)
-        i->set_index (level, d, this->get_fe().dofs_per_vertex,
-                      new_numbers[i->get_index (level, d,
-                                                this->get_fe().dofs_per_vertex)]);
-
-  if (this->get_fe().dofs_per_line > 0)
-    {
-      // save user flags as they will be modified
-      std::vector<bool> user_flags;
-      this->get_tria().save_user_flags(user_flags);
-      const_cast<Triangulation<2> &>(this->get_tria()).clear_user_flags ();
-
-      cell_iterator cell = begin(level),
-                    endcell  = end(level);
-      for ( ; cell != endcell ; ++cell)
-        for (unsigned int l=0; l < GeometryInfo<2>::lines_per_cell; ++l)
-          {
-            const line_iterator line = cell->line(l);
-            if (line->user_flag_set() == false)
-              {
-                for (unsigned int d=0; d<this->get_fe().dofs_per_line; ++d)
-                  line->set_mg_dof_index (level, d, new_numbers[line->mg_dof_index(level, d)]);
-                line->set_user_flag();
-              }
-          }
-
-      // finally, restore user flags
-      const_cast<Triangulation<2> &>(this->get_tria()).load_user_flags (user_flags);
-    }
-
-  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)
-        {
-          Assert(*i<new_numbers.size(), ExcInternalError());
-          *i = new_numbers[*i];
-        }
-    }
-}
-
-
-
-template <>
-void MGDoFHandler<3>::renumber_dofs (const unsigned int  level,
-                                     const std::vector<unsigned int>  &new_numbers)
-{
-  Assert (new_numbers.size() == n_dofs(level),
-          DoFHandler<3>::ExcRenumberingIncomplete());
-
-  for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
-       i!=mg_vertex_dofs.end(); ++i)
-    // if the present vertex lives on
-    // the present level
-    if ((i->get_coarsest_level() <= level) &&
-        (i->get_finest_level() >= level))
-      for (unsigned int d=0; d<this->get_fe().dofs_per_vertex; ++d)
-        i->set_index (level, d, this->get_fe().dofs_per_vertex,
-                      new_numbers[i->get_index (level, d,
-                                                this->get_fe().dofs_per_vertex)]);
-
-  // LINE DoFs
-  if (this->get_fe().dofs_per_line > 0)
-    {
-      // save user flags as they will be modified
-      std::vector<bool> user_flags;
-      this->get_tria().save_user_flags(user_flags);
-      const_cast<Triangulation<3> &>(this->get_tria()).clear_user_flags ();
-
-      cell_iterator cell = begin(level),
-                    endcell  = end(level);
-      for ( ; cell != endcell ; ++cell)
-        for (unsigned int l=0; l < GeometryInfo<3>::lines_per_cell; ++l)
-          {
-            const line_iterator line = cell->line(l);
-            if (line->user_flag_set() == false)
-              {
-                for (unsigned int d=0; d<this->get_fe().dofs_per_line; ++d)
-                  line->set_mg_dof_index (level, d, new_numbers[line->mg_dof_index(level, d)]);
-                line->set_user_flag();
-              }
-          }
-      // finally, restore user flags
-      const_cast<Triangulation<3> &>(this->get_tria()).load_user_flags (user_flags);
-    }
-
-  // QUAD DoFs
-  if (this->get_fe().dofs_per_quad > 0)
-    {
-      // save user flags as they will be modified
-      std::vector<bool> user_flags;
-      this->get_tria().save_user_flags(user_flags);
-      const_cast<Triangulation<3> &>(this->get_tria()).clear_user_flags ();
-
-      cell_iterator cell = begin(level),
-                    endcell  = end(level);
-      for ( ; cell != endcell ; ++cell)
-        for (unsigned int q=0; q < GeometryInfo<3>::faces_per_cell; ++q)
-          {
-            const quad_iterator quad = cell->quad(q);
-            if (quad->user_flag_set() == false)
-              {
-                for (unsigned int d=0; d<this->get_fe().dofs_per_quad; ++d)
-                  quad->set_mg_dof_index (level, d, new_numbers[quad->mg_dof_index(level, d)]);
-                quad->set_user_flag();
-              }
-          }
-      // finally, restore user flags
-      const_cast<Triangulation<3> &>(this->get_tria()).load_user_flags (user_flags);
-    }
-
-  //HEX DoFs
-  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)
-        {
-          Assert(*i<new_numbers.size(), ExcInternalError());
-          *i = new_numbers[*i];
-        }
-    }
+  return DoFHandler<dim,spacedim>::end_mg(level);
 }
 
 
-
 template <int dim, int spacedim>
-void MGDoFHandler<dim,spacedim>::reserve_space ()
-{
-  internal::MGDoFHandler::Implementation::reserve_space (*this);
-}
-
-
-
-template <int dim, int spacedim>
-void MGDoFHandler<dim,spacedim>::clear_space ()
+typename MGDoFHandler<dim,spacedim>::cell_iterator
+MGDoFHandler<dim,spacedim>::end () const
 {
-  // delete all levels and set them up
-  // newly, since vectors are
-  // troublesome if you want to change
-  // their size
-  for (unsigned int i=0; i<mg_levels.size(); ++i)
-    delete mg_levels[i];
-  mg_levels.clear ();
-  delete mg_faces;
-  mg_faces=NULL;
-
-  // also delete vector of vertex
-  // indices
-  std::vector<MGVertexDoFs> tmp;
-  std::swap (mg_vertex_dofs, tmp);
+  return DoFHandler<dim,spacedim>::end_mg();
 }
 
 
-
 // explicit instantiations
 #include "mg_dof_handler.inst"
 
index 1a3b374b431e56fb7e5a58e0fb5d4b2739b84564..8ae02f0e919577f5c90de2e06f77634517cec630 100644 (file)
@@ -22,133 +22,6 @@ template class MGDoFHandler<deal_II_dimension,deal_II_dimension+1>;
 
 #if deal_II_dimension==3
 template class MGDoFHandler<1,3>;
-#endif
-
-template
-unsigned int
-MGDoFHandler<deal_II_dimension,deal_II_dimension>::
-get_dof_index<1> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index) const;
-
-#if deal_II_dimension < 3
-template
-unsigned int
-MGDoFHandler<deal_II_dimension,deal_II_dimension+1>::
-get_dof_index<1> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index) const;
-#endif
-
-#if deal_II_dimension == 3
-template
-unsigned int
-MGDoFHandler<1,3>::
-get_dof_index<1> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index) const;
-#endif
-
-
-
-#if deal_II_dimension >= 2
-template
-unsigned int
-MGDoFHandler<deal_II_dimension,deal_II_dimension>::
-get_dof_index<2> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index) const;
-
-#if deal_II_dimension < 3
-template
-unsigned int
-MGDoFHandler<deal_II_dimension,deal_II_dimension+1>::
-get_dof_index<2> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index) const;
-#endif
-
-
-
-#if deal_II_dimension >= 3
-template
-unsigned int
-MGDoFHandler<deal_II_dimension,deal_II_dimension>::
-get_dof_index<3> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index) const;
-#endif
-#endif
-
-template
-void
-MGDoFHandler<deal_II_dimension,deal_II_dimension>::
-set_dof_index<1> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index,
-                 const unsigned int       global_index) const;
-
-#if deal_II_dimension < 3
-template
-void
-MGDoFHandler<deal_II_dimension,deal_II_dimension+1>::
-set_dof_index<1> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index,
-                 const unsigned int       global_index) const;
-#endif
-
-#if deal_II_dimension == 3
-template
-void
-MGDoFHandler<1,3>::
-set_dof_index<1> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index,
-                 const unsigned int       global_index) const;
-#endif
-
-#if deal_II_dimension >= 2
-template
-void
-MGDoFHandler<deal_II_dimension,deal_II_dimension>::
-set_dof_index<2> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index,
-                 const unsigned int       global_index) const;
-
-#if deal_II_dimension < 3
-template
-void
-MGDoFHandler<deal_II_dimension,deal_II_dimension+1>::
-set_dof_index<2> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index,
-                 const unsigned int       global_index) const;
-#endif
-
-
-#if deal_II_dimension >= 3
-template
-void
-MGDoFHandler<deal_II_dimension,deal_II_dimension>::
-set_dof_index<3> (const unsigned int       obj_level,
-                 const unsigned int       obj_index,
-                 const unsigned int       fe_index,
-                 const unsigned int       local_index,
-                 const unsigned int       global_index) const;
-#endif
 #endif
   }
 
index 0019cc798c142b96c46bbe8d44978f85fdbbc2b4..1114b5754714dc54b795d43049a743470211d95e 100644 (file)
@@ -50,7 +50,7 @@ namespace MGTools
   template <>
   void
   compute_row_length_vector(
-    const MGDoFHandler<1,1> &,
+    const DoFHandler<1,1> &,
     const unsigned int,
     std::vector<unsigned int> &,
     const DoFTools::Coupling)
@@ -63,7 +63,7 @@ namespace MGTools
   template <>
   void
   compute_row_length_vector(
-    const MGDoFHandler<1,1> &,
+    const DoFHandler<1,1> &,
     const unsigned int,
     std::vector<unsigned int> &,
     const Table<2,DoFTools::Coupling> &,
@@ -77,7 +77,7 @@ namespace MGTools
   template <>
   void
   compute_row_length_vector(
-    const MGDoFHandler<1,2> &,
+    const DoFHandler<1,2> &,
     const unsigned int,
     std::vector<unsigned int> &,
     const DoFTools::Coupling)
@@ -89,7 +89,7 @@ namespace MGTools
   template <>
   void
   compute_row_length_vector(
-    const MGDoFHandler<1,2> &,
+    const DoFHandler<1,2> &,
     const unsigned int,
     std::vector<unsigned int> &,
     const Table<2,DoFTools::Coupling> &,
@@ -104,7 +104,7 @@ namespace MGTools
   template <int dim, int spacedim>
   void
   compute_row_length_vector(
-    const MGDoFHandler<dim,spacedim> &dofs,
+    const DoFHandler<dim,spacedim> &dofs,
     const unsigned int level,
     std::vector<unsigned int> &row_lengths,
     const DoFTools::Coupling             flux_coupling)
@@ -127,8 +127,8 @@ namespace MGTools
     user_flags_triangulation.save_user_flags(old_flags);
     user_flags_triangulation.clear_user_flags();
 
-    const typename MGDoFHandler<dim,spacedim>::cell_iterator end = dofs.end(level);
-    typename MGDoFHandler<dim,spacedim>::active_cell_iterator cell;
+    const typename DoFHandler<dim,spacedim>::cell_iterator end = dofs.end(level);
+    typename DoFHandler<dim,spacedim>::active_cell_iterator cell;
     std::vector<unsigned int> cell_indices;
     std::vector<unsigned int> neighbor_indices;
 
@@ -211,7 +211,7 @@ namespace MGTools
         for (unsigned int iface=0; iface<GeometryInfo<dim>::faces_per_cell; ++iface)
           {
             bool level_boundary = cell->at_boundary(iface);
-            typename MGDoFHandler<dim,spacedim>::cell_iterator neighbor;
+            typename DoFHandler<dim,spacedim>::cell_iterator neighbor;
             if (!level_boundary)
               {
                 neighbor = cell->neighbor(iface);
@@ -227,7 +227,7 @@ namespace MGTools
               }
 
             const FiniteElement<dim> &nfe = neighbor->get_fe();
-            typename MGDoFHandler<dim,spacedim>::face_iterator face = cell->face(iface);
+            typename DoFHandler<dim,spacedim>::face_iterator face = cell->face(iface);
 
             // Flux couplings are
             // computed from both sides
@@ -277,7 +277,7 @@ namespace MGTools
   template <int dim, int spacedim>
   void
   compute_row_length_vector(
-    const MGDoFHandler<dim,spacedim> &dofs,
+    const DoFHandler<dim,spacedim> &dofs,
     const unsigned int level,
     std::vector<unsigned int> &row_lengths,
     const Table<2,DoFTools::Coupling> &couplings,
@@ -301,8 +301,8 @@ namespace MGTools
     user_flags_triangulation.save_user_flags(old_flags);
     user_flags_triangulation.clear_user_flags();
 
-    const typename MGDoFHandler<dim,spacedim>::cell_iterator end = dofs.end(level);
-    typename MGDoFHandler<dim,spacedim>::active_cell_iterator cell;
+    const typename DoFHandler<dim,spacedim>::cell_iterator end = dofs.end(level);
+    typename DoFHandler<dim,spacedim>::active_cell_iterator cell;
     std::vector<unsigned int> cell_indices;
     std::vector<unsigned int> neighbor_indices;
 
@@ -449,7 +449,7 @@ namespace MGTools
         for (unsigned int iface=0; iface<GeometryInfo<dim>::faces_per_cell; ++iface)
           {
             bool level_boundary = cell->at_boundary(iface);
-            typename MGDoFHandler<dim,spacedim>::cell_iterator neighbor;
+            typename DoFHandler<dim,spacedim>::cell_iterator neighbor;
             if (!level_boundary)
               {
                 neighbor = cell->neighbor(iface);
@@ -465,7 +465,7 @@ namespace MGTools
               }
 
             const FiniteElement<dim> &nfe = neighbor->get_fe();
-            typename MGDoFHandler<dim,spacedim>::face_iterator face = cell->face(iface);
+            typename DoFHandler<dim,spacedim>::face_iterator face = cell->face(iface);
 
             // Flux couplings are
             // computed from both sides
@@ -553,14 +553,15 @@ namespace MGTools
     typename DH::cell_iterator cell = dof.begin(level),
                                endc = dof.end(level);
     for (; cell!=endc; ++cell)
-      {
-        cell->get_mg_dof_indices (dofs_on_this_cell);
-        // make sparsity pattern for this cell
-        for (unsigned int i=0; i<dofs_per_cell; ++i)
-          for (unsigned int j=0; j<dofs_per_cell; ++j)
-            sparsity.add (dofs_on_this_cell[i],
-                          dofs_on_this_cell[j]);
-      }
+      if (dof.get_tria().locally_owned_subdomain()==numbers::invalid_subdomain_id || cell->level_subdomain_id()==dof.get_tria().locally_owned_subdomain())
+        {
+          cell->get_mg_dof_indices (dofs_on_this_cell);
+          // make sparsity pattern for this cell
+          for (unsigned int i=0; i<dofs_per_cell; ++i)
+            for (unsigned int j=0; j<dofs_per_cell; ++j)
+              sparsity.add (dofs_on_this_cell[i],
+                            dofs_on_this_cell[j]);
+        }
   }
 
 
@@ -568,7 +569,7 @@ namespace MGTools
   template <int dim, class SparsityPattern, int spacedim>
   void
   make_flux_sparsity_pattern (
-    const MGDoFHandler<dim,spacedim> &dof,
+    const DoFHandler<dim,spacedim> &dof,
     SparsityPattern       &sparsity,
     const unsigned int level)
   {
@@ -582,8 +583,8 @@ namespace MGTools
     const unsigned int dofs_per_cell = dof.get_fe().dofs_per_cell;
     std::vector<unsigned int> dofs_on_this_cell(dofs_per_cell);
     std::vector<unsigned int> dofs_on_other_cell(dofs_per_cell);
-    typename MGDoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
-                                                       endc = dof.end(level);
+    typename DoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
+                                                     endc = dof.end(level);
     for (; cell!=endc; ++cell)
       {
         cell->get_mg_dof_indices (dofs_on_this_cell);
@@ -601,7 +602,7 @@ namespace MGTools
             if ( (! cell->at_boundary(face)) &&
                  (static_cast<unsigned int>(cell->neighbor_level(face)) == level) )
               {
-                typename MGDoFHandler<dim,spacedim>::cell_iterator
+                typename DoFHandler<dim,spacedim>::cell_iterator
                 neighbor = cell->neighbor(face);
                 neighbor->get_mg_dof_indices (dofs_on_other_cell);
                 // only add one direction
@@ -625,7 +626,7 @@ namespace MGTools
   template <int dim, class SparsityPattern, int spacedim>
   void
   make_flux_sparsity_pattern_edge (
-    const MGDoFHandler<dim,spacedim> &dof,
+    const DoFHandler<dim,spacedim> &dof,
     SparsityPattern       &sparsity,
     const unsigned int level)
   {
@@ -645,8 +646,8 @@ namespace MGTools
     const unsigned int dofs_per_cell = dof.get_fe().dofs_per_cell;
     std::vector<unsigned int> dofs_on_this_cell(dofs_per_cell);
     std::vector<unsigned int> dofs_on_other_cell(dofs_per_cell);
-    typename MGDoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
-                                                       endc = dof.end(level);
+    typename DoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
+                                                     endc = dof.end(level);
     for (; cell!=endc; ++cell)
       {
         cell->get_mg_dof_indices (dofs_on_this_cell);
@@ -660,7 +661,7 @@ namespace MGTools
             if ( (! cell->at_boundary(face)) &&
                  (static_cast<unsigned int>(cell->neighbor_level(face)) != level) )
               {
-                typename MGDoFHandler<dim,spacedim>::cell_iterator
+                typename DoFHandler<dim,spacedim>::cell_iterator
                 neighbor = cell->neighbor(face);
                 neighbor->get_mg_dof_indices (dofs_on_other_cell);
 
@@ -684,7 +685,7 @@ namespace MGTools
   template <int dim, class SparsityPattern, int spacedim>
   void
   make_flux_sparsity_pattern (
-    const MGDoFHandler<dim,spacedim> &dof,
+    const DoFHandler<dim,spacedim> &dof,
     SparsityPattern       &sparsity,
     const unsigned int level,
     const Table<2,DoFTools::Coupling> &int_mask,
@@ -712,8 +713,8 @@ namespace MGTools
     std::vector<unsigned int> dofs_on_other_cell(total_dofs);
     Table<2,bool> support_on_face(total_dofs, GeometryInfo<dim>::faces_per_cell);
 
-    typename MGDoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
-                                                       endc = dof.end(level);
+    typename DoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
+                                                     endc = dof.end(level);
 
     const Table<2,DoFTools::Coupling>
     int_dof_mask  = DoFTools::dof_couplings_from_component_couplings(fe, int_mask),
@@ -750,7 +751,7 @@ namespace MGTools
              face < GeometryInfo<dim>::faces_per_cell;
              ++face)
           {
-            typename MGDoFHandler<dim,spacedim>::face_iterator cell_face = cell->face(face);
+            typename DoFHandler<dim,spacedim>::face_iterator cell_face = cell->face(face);
             if (cell_face->user_flag_set ())
               continue;
 
@@ -775,7 +776,7 @@ namespace MGTools
               }
             else
               {
-                typename MGDoFHandler<dim,spacedim>::cell_iterator
+                typename DoFHandler<dim,spacedim>::cell_iterator
                 neighbor = cell->neighbor(face);
 
                 if (neighbor->level() < cell->level())
@@ -861,7 +862,7 @@ namespace MGTools
   template <int dim, class SparsityPattern, int spacedim>
   void
   make_flux_sparsity_pattern_edge (
-    const MGDoFHandler<dim,spacedim> &dof,
+    const DoFHandler<dim,spacedim> &dof,
     SparsityPattern       &sparsity,
     const unsigned int level,
     const Table<2,DoFTools::Coupling> &flux_mask)
@@ -891,8 +892,8 @@ namespace MGTools
     std::vector<unsigned int> dofs_on_other_cell(dofs_per_cell);
     Table<2,bool> support_on_face(dofs_per_cell, GeometryInfo<dim>::faces_per_cell);
 
-    typename MGDoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
-                                                       endc = dof.end(level);
+    typename DoFHandler<dim,spacedim>::cell_iterator cell = dof.begin(level),
+                                                     endc = dof.end(level);
 
     const Table<2,DoFTools::Coupling> flux_dof_mask
       = DoFTools::dof_couplings_from_component_couplings(fe, flux_mask);
@@ -914,7 +915,7 @@ namespace MGTools
             if ( (! cell->at_boundary(face)) &&
                  (static_cast<unsigned int>(cell->neighbor_level(face)) != level) )
               {
-                typename MGDoFHandler<dim,spacedim>::cell_iterator
+                typename DoFHandler<dim,spacedim>::cell_iterator
                 neighbor = cell->neighbor(face);
                 neighbor->get_mg_dof_indices (dofs_on_other_cell);
 
@@ -940,7 +941,7 @@ namespace MGTools
 
   template <int dim, int spacedim>
   void
-  count_dofs_per_component (const MGDoFHandler<dim,spacedim> &dof_handler,
+  count_dofs_per_component (const DoFHandler<dim,spacedim> &dof_handler,
                             std::vector<std::vector<unsigned int> > &result,
                             bool                              only_once,
                             std::vector<unsigned int>         target_component)
@@ -989,10 +990,10 @@ namespace MGTools
             for (unsigned int i=0; i<n_components; ++i)
               {
                 void (*fun_ptr) (const unsigned int       level,
-                                 const MGDoFHandler<dim,spacedim> &,
+                                 const DoFHandler<dim,spacedim> &,
                                  const ComponentMask &,
                                  std::vector<bool> &)
-                  = &DoFTools::template extract_level_dofs<MGDoFHandler<dim,spacedim> >;
+                  = &DoFTools::template extract_level_dofs<DoFHandler<dim,spacedim> >;
 
                 std::vector<bool> tmp(n_components, false);
                 tmp[i] = true;
@@ -1042,7 +1043,7 @@ namespace MGTools
 
   template <int dim, int spacedim>
   void
-  count_dofs_per_component (const MGDoFHandler<dim,spacedim>        &dof_handler,
+  count_dofs_per_component (const DoFHandler<dim,spacedim>        &dof_handler,
                             std::vector<std::vector<unsigned int> > &result,
                             std::vector<unsigned int>            target_component)
   {
@@ -1137,7 +1138,7 @@ namespace MGTools
   template <>
   void
   make_boundary_list(
-    const MGDoFHandler<1,1> &,
+    const DoFHandler<1,1> &,
     const FunctionMap<1>::type &,
     std::vector<std::set<unsigned int> > &,
     const ComponentMask &)
@@ -1150,7 +1151,7 @@ namespace MGTools
   template <>
   void
   make_boundary_list(
-    const MGDoFHandler<1,2> &,
+    const DoFHandler<1,2> &,
     const FunctionMap<1>::type &,
     std::vector<std::set<unsigned int> > &,
     const ComponentMask &)
@@ -1163,7 +1164,7 @@ namespace MGTools
   template <int dim, int spacedim>
   void
   make_boundary_list(
-    const MGDoFHandler<dim,spacedim> &dof,
+    const DoFHandler<dim,spacedim> &dof,
     const typename FunctionMap<dim>::type &function_map,
     std::vector<std::set<unsigned int> > &boundary_indices,
     const ComponentMask &component_mask)
@@ -1194,7 +1195,7 @@ namespace MGTools
     // all boundary dofs
     if (component_mask.n_selected_components(n_components) == n_components)
       {
-        typename MGDoFHandler<dim,spacedim>::cell_iterator
+        typename DoFHandler<dim,spacedim>::cell_iterator
         cell = dof.begin(),
         endc = dof.end();
         for (; cell!=endc; ++cell)
@@ -1207,7 +1208,7 @@ namespace MGTools
                  ++face_no)
               if (cell->at_boundary(face_no) == true)
                 {
-                  const typename MGDoFHandler<dim,spacedim>::face_iterator
+                  const typename DoFHandler<dim,spacedim>::face_iterator
                   face = cell->face(face_no);
                   const types::boundary_id bi = face->boundary_indicator();
                   // Face is listed in
@@ -1226,216 +1227,6 @@ namespace MGTools
         Assert (component_mask.n_selected_components(n_components) > 0,
                 ExcMessage("It's probably worthwhile to select at least one component."));
 
-        typename MGDoFHandler<dim,spacedim>::cell_iterator
-        cell = dof.begin(),
-        endc = dof.end();
-        for (; cell!=endc; ++cell)
-          for (unsigned int face_no = 0; face_no < GeometryInfo<dim>::faces_per_cell;
-               ++face_no)
-            {
-              if (cell->at_boundary(face_no) == false)
-                continue;
-
-              const FiniteElement<dim> &fe = cell->get_fe();
-              const unsigned int level = cell->level();
-
-              // 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 ComponentMask &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"));
-                }
-
-              typename MGDoFHandler<dim,spacedim>::face_iterator face = cell->face(face_no);
-              const types::boundary_id boundary_component = face->boundary_indicator();
-              if (function_map.find(boundary_component) != function_map.end())
-                // face is of the right component
-                {
-                  // get indices, physical location and
-                  // boundary values of dofs on this
-                  // face
-                  local_dofs.resize (fe.dofs_per_face);
-                  face->get_mg_dof_indices (level, local_dofs);
-                  if (fe_is_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<local_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,
-//                                       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 = fe.get_nonzero_components(cell_i).first_selected_component();
-                            }
-
-                          if (component_mask[component] == true)
-                            boundary_indices[level].insert(local_dofs[i]);
-                        }
-                    }
-                  else
-                    for (unsigned int i=0; i<local_dofs.size(); ++i)
-                      boundary_indices[level].insert(local_dofs[i]);
-                }
-            }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  make_boundary_list(
-    const DoFHandler<dim,spacedim> &dof,
-    const typename FunctionMap<dim>::type &function_map,
-    std::vector<std::set<unsigned int> > &boundary_indices,
-    const std::vector<bool> &component_mask)
-{
-    // if for whatever reason we were
-    // passed an empty map, return
-    // immediately
-    if (function_map.size() == 0)
-      return;
-
-    const unsigned int n_levels = dof.get_tria().n_levels();
-
-
-
-    const unsigned int n_components = DoFTools::n_components(dof);
-    const bool          fe_is_system = (n_components != 1);
-
-    AssertDimension (boundary_indices.size(), n_levels);
-
-    std::vector<unsigned int> local_dofs;
-    local_dofs.reserve (DoFTools::max_dofs_per_face(dof));
-    std::fill (local_dofs.begin (), local_dofs.end (),
-               DoFHandler<dim,spacedim>::invalid_dof_index);
-
-    // First, deal with the simpler
-    // case when we have to identify
-    // all boundary dofs
-    if (component_mask.size() == 0)
-      {
-        typename DoFHandler<dim,spacedim>::cell_iterator
-        cell = dof.begin(),
-        endc = dof.end();
-        for (; cell!=endc; ++cell)
-          {
-            const FiniteElement<dim> &fe = cell->get_fe();
-            const unsigned int level = cell->level();
-            local_dofs.resize(fe.dofs_per_face);
-
-            for (unsigned int face_no = 0; face_no < GeometryInfo<dim>::faces_per_cell;
-                 ++face_no)
-              if (cell->at_boundary(face_no))
-                {
-                  const typename DoFHandler<dim,spacedim>::face_iterator
-                  face = cell->face(face_no);
-                  const unsigned char bi = face->boundary_indicator();
-                  // Face is listed in
-                  // boundary map
-                  if (function_map.find(bi) != function_map.end())
-                    {
-                      face->get_mg_dof_indices(level, local_dofs);
-                      for (unsigned int i=0; i<fe.dofs_per_face; ++i)
-                        boundary_indices[level].insert(local_dofs[i]);
-                    }
-                }
-          }
-      }
-    else
-      {
-        Assert (std::count(component_mask.begin(), component_mask.end(), true) > 0,
-                ExcMessage("It's probably worthwhile to select at least one component."));
-
         typename DoFHandler<dim,spacedim>::cell_iterator
         cell = dof.begin(),
         endc = dof.end();
@@ -1443,7 +1234,7 @@ namespace MGTools
           for (unsigned int face_no = 0; face_no < GeometryInfo<dim>::faces_per_cell;
                ++face_no)
             {
-              if (!(cell->at_boundary(face_no)))
+              if (cell->at_boundary(face_no) == false)
                 continue;
 
               const FiniteElement<dim> &fe = cell->get_fe();
@@ -1474,7 +1265,7 @@ namespace MGTools
                 }
 
               typename DoFHandler<dim,spacedim>::face_iterator face = cell->face(face_no);
-              const unsigned char 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
                 {
@@ -1521,7 +1312,6 @@ namespace MGTools
                               // face dof
                               // index to
                               // cell dof
-
                               // index
                               const unsigned int cell_i
                                 = (dim == 1 ?
@@ -1581,10 +1371,9 @@ namespace MGTools
   }
 
 
-
   template <int dim, int spacedim>
   void
-  make_boundary_list(const MGDoFHandler<dim,spacedim> &dof,
+  make_boundary_list(const DoFHandler<dim,spacedim> &dof,
                      const typename FunctionMap<dim>::type &function_map,
                      std::vector<IndexSet> &boundary_indices,
                      const ComponentMask &component_mask)
@@ -1609,7 +1398,7 @@ namespace MGTools
 
   template <int dim, int spacedim>
   void
-  extract_inner_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  extract_inner_interface_dofs (const DoFHandler<dim,spacedim> &mg_dof_handler,
                                 std::vector<std::vector<bool> >  &interface_dofs)
   {
     Assert (interface_dofs.size() == mg_dof_handler.get_tria().n_levels(),
@@ -1635,8 +1424,8 @@ namespace MGTools
     std::vector<unsigned int> local_dof_indices (dofs_per_cell);
     std::vector<bool> cell_dofs(dofs_per_cell, false);
 
-    typename MGDoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
-                                              endc = mg_dof_handler.end();
+    typename DoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
+                                            endc = mg_dof_handler.end();
 
     for (; cell!=endc; ++cell)
       {
@@ -1648,7 +1437,7 @@ namespace MGTools
             if (!face->at_boundary())
               {
                 //interior face
-                const typename MGDoFHandler<dim>::cell_iterator
+                const typename DoFHandler<dim>::cell_iterator
                 neighbor = cell->neighbor(face_nr);
 
                 if (neighbor->level() < cell->level())
@@ -1672,7 +1461,7 @@ namespace MGTools
 
   template <int dim, int spacedim>
   void
-  extract_non_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  extract_non_interface_dofs (const DoFHandler<dim,spacedim> &mg_dof_handler,
                               std::vector<std::set<unsigned int> >  &non_interface_dofs)
   {
     Assert (non_interface_dofs.size() == mg_dof_handler.get_tria().n_levels(),
@@ -1688,8 +1477,8 @@ namespace MGTools
     std::vector<bool> cell_dofs(dofs_per_cell, false);
     std::vector<bool> cell_dofs_interface(dofs_per_cell, false);
 
-    typename MGDoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
-                                              endc = mg_dof_handler.end();
+    typename DoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
+                                            endc = mg_dof_handler.end();
 
 
     for (; cell!=endc; ++cell)
@@ -1703,7 +1492,7 @@ namespace MGTools
             if (!face->at_boundary())
               {
                 //interior face
-                const typename MGDoFHandler<dim>::cell_iterator
+                const typename DoFHandler<dim>::cell_iterator
                 neighbor = cell->neighbor(face_nr);
 
                 if ((neighbor->level() < cell->level()))
@@ -1737,7 +1526,7 @@ namespace MGTools
 
   template <int dim, int spacedim>
   void
-  extract_inner_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  extract_inner_interface_dofs (const DoFHandler<dim,spacedim> &mg_dof_handler,
                                 std::vector<std::vector<bool> >  &interface_dofs,
                                 std::vector<std::vector<bool> >  &boundary_interface_dofs)
   {
@@ -1776,104 +1565,8 @@ namespace MGTools
     std::vector<bool> cell_dofs(dofs_per_cell, false);
     std::vector<bool> boundary_cell_dofs(dofs_per_cell, false);
 
-    typename MGDoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
-                                              endc = mg_dof_handler.end();
-
-    for (; cell!=endc; ++cell)
-      {
-        bool has_coarser_neighbor = false;
-
-        std::fill (cell_dofs.begin(), cell_dofs.end(), false);
-        std::fill (boundary_cell_dofs.begin(), boundary_cell_dofs.end(), false);
-
-        for (unsigned int face_nr=0; face_nr<GeometryInfo<dim>::faces_per_cell; ++face_nr)
-          {
-            const typename DoFHandler<dim,spacedim>::face_iterator face = cell->face(face_nr);
-            if (!face->at_boundary())
-              {
-                //interior face
-                const typename MGDoFHandler<dim>::cell_iterator
-                neighbor = cell->neighbor(face_nr);
-
-                // Do refinement face
-                // from the coarse side
-                if (neighbor->level() < cell->level())
-                  {
-                    for (unsigned int j=0; j<dofs_per_face; ++j)
-                      cell_dofs[fe.face_to_cell_index(j,face_nr)] = true;
-
-                    has_coarser_neighbor = true;
-                  }
-              }
-          }
-
-        if (has_coarser_neighbor == true)
-          for (unsigned int face_nr=0; face_nr<GeometryInfo<dim>::faces_per_cell; ++face_nr)
-            if (cell->at_boundary(face_nr))
-              for (unsigned int j=0; j<dofs_per_face; ++j)
-//            if (cell_dofs[fe.face_to_cell_index(j,face_nr)] == true) //is this necessary?
-                boundary_cell_dofs[fe.face_to_cell_index(j,face_nr)] = true;
-
-
-        const unsigned int level = cell->level();
-        cell->get_mg_dof_indices (local_dof_indices);
-
-        for (unsigned int i=0; i<dofs_per_cell; ++i)
-          {
-            if (cell_dofs[i])
-              interface_dofs[level][local_dof_indices[i]] = true;
-
-            if (boundary_cell_dofs[i])
-              boundary_interface_dofs[level][local_dof_indices[i]] = true;
-          }
-      }
-  }
-
-
-
-  template <int dim, int spacedim>
-  void
-  extract_inner_interface_dofs (const DoFHandler<dim,spacedim> &dof_handler,
-                                std::vector<std::vector<bool> >  &interface_dofs,
-                                std::vector<std::vector<bool> >  &boundary_interface_dofs)
-  {
-    Assert (interface_dofs.size() == dof_handler.get_tria().n_levels(),
-            ExcDimensionMismatch (interface_dofs.size(),
-                                  dof_handler.get_tria().n_levels()));
-    Assert (boundary_interface_dofs.size() == dof_handler.get_tria().n_levels(),
-            ExcDimensionMismatch (boundary_interface_dofs.size(),
-                                  dof_handler.get_tria().n_levels()));
-
-    for (unsigned int l=0; l<dof_handler.get_tria().n_levels(); ++l)
-      {
-        Assert (interface_dofs[l].size() == dof_handler.n_dofs(l),
-                ExcDimensionMismatch (interface_dofs[l].size(),
-                                      dof_handler.n_dofs(l)));
-        Assert (boundary_interface_dofs[l].size() == dof_handler.n_dofs(l),
-                ExcDimensionMismatch (boundary_interface_dofs[l].size(),
-                                      dof_handler.n_dofs(l)));
-
-        std::fill (interface_dofs[l].begin(),
-                   interface_dofs[l].end(),
-                   false);
-        std::fill (boundary_interface_dofs[l].begin(),
-                   boundary_interface_dofs[l].end(),
-                   false);
-      }
-
-    const FiniteElement<dim,spacedim> &fe = dof_handler.get_fe();
-
-    const unsigned int   dofs_per_cell   = fe.dofs_per_cell;
-    const unsigned int   dofs_per_face   = fe.dofs_per_face;
-
-    std::vector<unsigned int> local_dof_indices (dofs_per_cell);
-    std::vector<unsigned int> face_dof_indices (dofs_per_face);
-
-    std::vector<bool> cell_dofs(dofs_per_cell, false);
-    std::vector<bool> boundary_cell_dofs(dofs_per_cell, false);
-
-    typename DoFHandler<dim>::cell_iterator cell = dof_handler.begin(),
-                                            endc = dof_handler.end();
+    typename DoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
+                                            endc = mg_dof_handler.end();
 
     for (; cell!=endc; ++cell)
       {
@@ -1907,7 +1600,7 @@ namespace MGTools
           for (unsigned int face_nr=0; face_nr<GeometryInfo<dim>::faces_per_cell; ++face_nr)
             if (cell->at_boundary(face_nr))
               for (unsigned int j=0; j<dofs_per_face; ++j)
-//        if (cell_dofs[fe.face_to_cell_index(j,face_nr)] == true) //is this necessary?
+//            if (cell_dofs[fe.face_to_cell_index(j,face_nr)] == true) //is this necessary?
                 boundary_cell_dofs[fe.face_to_cell_index(j,face_nr)] = true;
 
 
@@ -1926,7 +1619,6 @@ namespace MGTools
   }
 
 
-
   template <typename number>
   void
   apply_boundary_values (
index 24932ea63edde341e8c1ff86a286420b9a211473..9a0b2b8c85870638ef4ad8033ee5f6a1b16fa30d 100644 (file)
@@ -1,6 +1,5 @@
 //---------------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$
 //
 //    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors
 //
@@ -20,13 +19,14 @@ for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS;
 
 #if deal_II_dimension <= deal_II_space_dimension
       template void
-       make_sparsity_pattern (
-         const MGDoFHandler<deal_II_dimension, deal_II_space_dimension> &,
+       make_sparsity_pattern<DoFHandler<deal_II_dimension, deal_II_space_dimension>, PATTERN> (
+         const DoFHandler<deal_II_dimension, deal_II_space_dimension> &,
          PATTERN &,
          const unsigned int);
+
       template void
-       make_sparsity_pattern<DoFHandler<deal_II_dimension, deal_II_space_dimension>, PATTERN> (
-         const DoFHandler<deal_II_dimension, deal_II_space_dimension> &,
+       make_sparsity_pattern<MGDoFHandler<deal_II_dimension, deal_II_space_dimension>, PATTERN> (
+         const MGDoFHandler<deal_II_dimension, deal_II_space_dimension> &,
          PATTERN &,
          const unsigned int);
 #endif
@@ -34,13 +34,13 @@ for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS;
 #if deal_II_dimension == deal_II_space_dimension
     template void
       make_flux_sparsity_pattern<deal_II_dimension> (
-       const MGDoFHandler<deal_II_dimension> &,
+       const DoFHandler<deal_II_dimension> &,
        PATTERN &,
        const unsigned int);
 
     template void
       make_flux_sparsity_pattern_edge<deal_II_dimension> (
-       const MGDoFHandler<deal_II_dimension> &,
+       const DoFHandler<deal_II_dimension> &,
        PATTERN &,
        const unsigned int);
 
@@ -48,7 +48,7 @@ for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS;
 
     template void
       make_flux_sparsity_pattern<deal_II_dimension> (
-       const MGDoFHandler<deal_II_dimension> &,
+       const DoFHandler<deal_II_dimension> &,
        PATTERN &,
        const unsigned int,
        const Table<2,DoFTools::Coupling>&,
@@ -56,7 +56,7 @@ for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS;
 
     template void
       make_flux_sparsity_pattern_edge<deal_II_dimension> (
-       const MGDoFHandler<deal_II_dimension> &,
+       const DoFHandler<deal_II_dimension> &,
        PATTERN &,
        const unsigned int,
        const Table<2,DoFTools::Coupling>&);
@@ -74,53 +74,42 @@ for (deal_II_dimension : DIMENSIONS)
 #if deal_II_dimension > 1
       template void
        compute_row_length_vector(
-         const MGDoFHandler<deal_II_dimension>&, unsigned int,
+         const DoFHandler<deal_II_dimension>&, unsigned int,
          std::vector<unsigned int>&, const DoFTools::Coupling);
       template void
        compute_row_length_vector(
-         const MGDoFHandler<deal_II_dimension>&, unsigned int,
+         const DoFHandler<deal_II_dimension>&, unsigned int,
          std::vector<unsigned int>&,
          const Table<2,DoFTools::Coupling>&, const Table<2,DoFTools::Coupling>&);
 #endif
 
       template void count_dofs_per_component (
-       const MGDoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
+       const DoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
        bool, std::vector<unsigned int>);
       template void count_dofs_per_component (
-       const MGDoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
+       const DoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
        std::vector<unsigned int>);
       template void count_dofs_per_block (
-       const MGDoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
+       const DoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
        std::vector<unsigned int>);
       template void count_dofs_per_block (
-       const DoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
+       const MGDoFHandler<deal_II_dimension>&, std::vector<std::vector<unsigned int> >&,
        std::vector<unsigned int>);
 
 #if deal_II_dimension > 1
-      template void make_boundary_list(
-       const MGDoFHandler<deal_II_dimension>&,
-       const FunctionMap<deal_II_dimension>::type&,
-       std::vector<std::set<unsigned int> >&,
-       const ComponentMask &);
-
       template void make_boundary_list(
        const DoFHandler<deal_II_dimension>&,
        const FunctionMap<deal_II_dimension>::type&,
        std::vector<std::set<unsigned int> >&,
-       const std::vector<bool>&);
+       const ComponentMask &);
 #endif
 
     template void make_boundary_list(
-       const MGDoFHandler<deal_II_dimension>&,
+       const DoFHandler<deal_II_dimension>&,
        const FunctionMap<deal_II_dimension>::type&,
        std::vector<IndexSet>&,
        const ComponentMask &);
 
-    template
-       void
-       extract_inner_interface_dofs (const MGDoFHandler<deal_II_dimension> &mg_dof_handler,
-                                     std::vector<std::vector<bool> >  &interface_dofs,
-                                     std::vector<std::vector<bool> >  &boundary_interface_dofs);
     template
        void
        extract_inner_interface_dofs (const DoFHandler<deal_II_dimension> &mg_dof_handler,
@@ -128,26 +117,20 @@ for (deal_II_dimension : DIMENSIONS)
                                      std::vector<std::vector<bool> >  &boundary_interface_dofs);
       template
        void
-       extract_inner_interface_dofs (const MGDoFHandler<deal_II_dimension> &mg_dof_handler,
+       extract_inner_interface_dofs (const DoFHandler<deal_II_dimension> &mg_dof_handler,
                                      std::vector<std::vector<bool> >  &interface_dofs);
       template
         void
-        extract_non_interface_dofs (const MGDoFHandler<deal_II_dimension> & mg_dof_handler,
+        extract_non_interface_dofs (const DoFHandler<deal_II_dimension> & mg_dof_handler,
                                     std::vector<std::set<unsigned int> > &non_interface_dofs);
 
 #if deal_II_dimension < 3
       template void count_dofs_per_block (
-       const MGDoFHandler<deal_II_dimension,deal_II_dimension+1>&,
-       std::vector<std::vector<unsigned int> >&, std::vector<unsigned int>);
-      template void count_dofs_per_block<DoFHandler<deal_II_dimension,deal_II_dimension+1> > (
        const DoFHandler<deal_II_dimension,deal_II_dimension+1>&,
        std::vector<std::vector<unsigned int> >&, std::vector<unsigned int>);
 #endif
 
 #if deal_II_dimension == 3
-      template void count_dofs_per_block (
-       const MGDoFHandler<1,3>&,
-       std::vector<std::vector<unsigned int> >&, std::vector<unsigned int>);
       template void count_dofs_per_block (
        const DoFHandler<1,3>&,
        std::vector<std::vector<unsigned int> >&, std::vector<unsigned int>);
index 779e2598be0ab24bb1b2a1a2c22c83c76e9bf3a3..8e7d5232ba169453419bd28c3294399b842164ff 100644 (file)
@@ -46,7 +46,7 @@ namespace
   template <int dim, typename number, int spacedim>
   void
   reinit_vector_by_blocks (
-    const dealii::MGDoFHandler<dim,spacedim> &mg_dof,
+    const dealii::DoFHandler<dim,spacedim> &mg_dof,
     MGLevelObject<BlockVector<number> > &v,
     const std::vector<bool> &sel,
     std::vector<std::vector<unsigned int> > &ndofs)
@@ -93,7 +93,7 @@ namespace
   template <int dim, typename number, int spacedim>
   void
   reinit_vector_by_blocks (
-    const dealii::MGDoFHandler<dim,spacedim> &mg_dof,
+    const dealii::DoFHandler<dim,spacedim> &mg_dof,
     MGLevelObject<dealii::Vector<number> > &v,
     const unsigned int selected_block,
     std::vector<std::vector<unsigned int> > &ndofs)
@@ -126,7 +126,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlockSelect<number>::copy_to_mg (
-  const MGDoFHandler<dim,spacedim>        &mg_dof_handler,
+  const DoFHandler<dim,spacedim>        &mg_dof_handler,
   MGLevelObject<Vector<number> > &dst,
   const BlockVector<number2>     &src) const
 {
@@ -154,7 +154,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlockSelect<number>::copy_to_mg (
-  const MGDoFHandler<dim,spacedim>        &mg_dof_handler,
+  const DoFHandler<dim,spacedim>        &mg_dof_handler,
   MGLevelObject<Vector<number> > &dst,
   const Vector<number2>          &src) const
 {
@@ -181,7 +181,7 @@ template <typename number>
 template <int dim, typename number2, int spacedim>
 void
 MGTransferBlock<number>::copy_to_mg (
-  const MGDoFHandler<dim,spacedim> &mg_dof_handler,
+  const DoFHandler<dim,spacedim> &mg_dof_handler,
   MGLevelObject<BlockVector<number> > &dst,
   const BlockVector<number2> &src) const
 {
@@ -206,7 +206,7 @@ MGTransferBlock<number>::copy_to_mg (
 template <int dim, int spacedim>
 void MGTransferBlockBase::build_matrices (
   const DoFHandler<dim,spacedim> &,
-  const MGDoFHandler<dim,spacedim> &mg_dof)
+  const DoFHandler<dim,spacedim> &mg_dof)
 {
   const FiniteElement<dim> &fe = mg_dof.get_fe();
   const unsigned int n_blocks  = fe.n_blocks();
@@ -332,7 +332,7 @@ void MGTransferBlockBase::build_matrices (
 
       prolongation_sparsities[level]->collect_sizes();
 
-      for (typename MGDoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
+      for (typename DoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
            cell != mg_dof.end(level); ++cell)
         if (cell->has_children())
           {
@@ -371,7 +371,7 @@ void MGTransferBlockBase::build_matrices (
 
       prolongation_matrices[level]->reinit (*prolongation_sparsities[level]);
       // now actually build the matrices
-      for (typename MGDoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
+      for (typename DoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
            cell != mg_dof.end(level); ++cell)
         if (cell->has_children())
           {
@@ -462,7 +462,7 @@ template <typename number>
 template <int dim, int spacedim>
 void MGTransferBlockSelect<number>::build_matrices (
   const DoFHandler<dim,spacedim> &dof,
-  const MGDoFHandler<dim,spacedim> &mg_dof,
+  const DoFHandler<dim,spacedim> &mg_dof,
   unsigned int select)
 {
   const FiniteElement<dim> &fe = mg_dof.get_fe();
@@ -480,9 +480,9 @@ void MGTransferBlockSelect<number>::build_matrices (
 
   for (int level=dof.get_tria().n_levels()-1; level>=0; --level)
     {
-      typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_cell = mg_dof.begin_active(level);
-      const typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      const typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_end  = mg_dof.end_active(level);
 
       temp_copy_indices.resize (0);
@@ -493,12 +493,11 @@ void MGTransferBlockSelect<number>::build_matrices (
       // by restricting from fine level.
       for (; level_cell!=level_end; ++level_cell)
         {
-          DoFAccessor<dim, DoFHandler<dim,spacedim> > &global_cell = *level_cell;
           // get the dof numbers of
           // this cell for the global
           // and the level-wise
           // numbering
-          global_cell.get_dof_indices(global_dof_indices);
+          level_cell->get_dof_indices(global_dof_indices);
           level_cell->get_mg_dof_indices (level_dof_indices);
 
           for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
@@ -546,7 +545,7 @@ template <typename number>
 template <int dim, int spacedim>
 void MGTransferBlock<number>::build_matrices (
   const DoFHandler<dim,spacedim> &dof,
-  const MGDoFHandler<dim,spacedim> &mg_dof,
+  const DoFHandler<dim,spacedim> &mg_dof,
   const std::vector<bool> &sel)
 {
   const FiniteElement<dim> &fe = mg_dof.get_fe();
@@ -568,9 +567,9 @@ void MGTransferBlock<number>::build_matrices (
   std::vector<unsigned int> level_dof_indices  (fe.dofs_per_cell);
   for (int level=dof.get_tria().n_levels()-1; level>=0; --level)
     {
-      typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_cell = mg_dof.begin_active(level);
-      const typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      const typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_end  = mg_dof.end_active(level);
 
       for (unsigned int block=0; block<n_blocks; ++block)
@@ -585,12 +584,11 @@ void MGTransferBlock<number>::build_matrices (
       // by restricting from fine level.
       for (; level_cell!=level_end; ++level_cell)
         {
-          DoFAccessor<dim, DoFHandler<dim,spacedim> > &global_cell = *level_cell;
           // get the dof numbers of
           // this cell for the global
           // and the level-wise
           // numbering
-          global_cell.get_dof_indices(global_dof_indices);
+          level_cell->get_dof_indices(global_dof_indices);
           level_cell->get_mg_dof_indices (level_dof_indices);
 
           for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
index 3a6030111ca22d3d98fe1858da723344dcbbade4..466aac4c48aa3ccb547f57eeb1594d598414d966 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 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
@@ -16,115 +16,115 @@ for (deal_II_dimension : DIMENSIONS)
   {
 template
 void MGTransferBlock<float>::build_matrices<deal_II_dimension>
-(const DoFHandler<deal_II_dimension>&, const MGDoFHandler<deal_II_dimension>&,
+(const DoFHandler<deal_II_dimension>&, const DoFHandler<deal_II_dimension>&,
  const std::vector<bool>&);
 
 template
 void MGTransferBlock<double>::build_matrices<deal_II_dimension>
-(const DoFHandler<deal_II_dimension>&, const MGDoFHandler<deal_II_dimension>&,
+(const DoFHandler<deal_II_dimension>&, const DoFHandler<deal_II_dimension>&,
  const std::vector<bool>&);
 
 template
 void MGTransferBlockSelect<float>::build_matrices<deal_II_dimension>
-(const DoFHandler<deal_II_dimension>&, const MGDoFHandler<deal_II_dimension>&,
+(const DoFHandler<deal_II_dimension>&, const DoFHandler<deal_II_dimension>&,
  const unsigned int);
 
 template
 void MGTransferBlockSelect<double>::build_matrices<deal_II_dimension>
-(const DoFHandler<deal_II_dimension>&, const MGDoFHandler<deal_II_dimension>&,
+(const DoFHandler<deal_II_dimension>&, const DoFHandler<deal_II_dimension>&,
  const unsigned int);
 
 template void
 MGTransferBlock<float>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<BlockVector<float> >&,
   const BlockVector<double>&) const;
 template void
 MGTransferBlock<float>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<BlockVector<float> >&) const;
 template void
 MGTransferBlock<float>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<BlockVector<float> >&) const;
 
 template void
 MGTransferBlock<double>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<BlockVector<double> >&,
   const BlockVector<double>&) const;
 template void
 MGTransferBlock<double>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<BlockVector<double> >&) const;
 template void
 MGTransferBlock<double>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<BlockVector<double> >&) const;
 
 template void
 MGTransferBlockSelect<float>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<float> >&,
   const Vector<double>&) const;
 template void
 MGTransferBlockSelect<float>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<float> >&,
   const BlockVector<double>&) const;
 template void
 MGTransferBlockSelect<float>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 template void
 MGTransferBlockSelect<float>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 template void
 MGTransferBlockSelect<float>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 template void
 MGTransferBlockSelect<float>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 
 template void
 MGTransferBlockSelect<double>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<double> >&,
   const Vector<double>&) const;
 template void
 MGTransferBlockSelect<double>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<double> >&,
   const BlockVector<double>&) const;
 template void
 MGTransferBlockSelect<double>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<double> >&) const;
 template void
 MGTransferBlockSelect<double>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<double> >&) const;
 template void
 MGTransferBlockSelect<double>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<double> >&) const;
 template void
 MGTransferBlockSelect<double>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<double> >&) const;
   }
index 49d2f01e940dff9d6bbec6264b57cdf10782fd13..08a32e77443814a0ffbf9278e0bdf56056a2dfa6 100644 (file)
@@ -38,6 +38,114 @@ DEAL_II_NAMESPACE_OPEN
 
 namespace
 {
+  /**
+   * Adjust block-vectors on all
+   * levels to correct size.  Count
+   * the numbers of degrees of
+   * freedom on each level
+   * component-wise. Then, assign
+   * each block of @p vector the
+   * corresponding size.
+   *
+   * The boolean field @p selected
+   * allows restricting this
+   * operation to certain
+   * components. In this case, @p
+   * vector will only have as many
+   * blocks as there are true
+   * values in @p selected (no
+   * blocks of length zero are
+   * padded in). If this argument
+   * is omitted, all blocks will be
+   * considered.
+   *
+   * Degrees of freedom must be
+   * sorted by component in order
+   * to obtain reasonable results
+   * from this function.
+   *
+   * The argument
+   * @p target_component allows to
+   * re-sort and group components
+   * as in
+   * DoFRenumbering::component_wise.
+   *
+   *
+   */
+  template <int dim, typename number, int spacedim>
+  void
+  reinit_vector_by_components (
+    const dealii::DoFHandler<dim,spacedim> &mg_dof,
+    MGLevelObject<BlockVector<number> > &v,
+    const std::vector<bool> &sel,
+    const std::vector<unsigned int> &target_comp,
+    std::vector<std::vector<unsigned int> > &ndofs)
+  {
+    std::vector<bool> selected=sel;
+    std::vector<unsigned int> target_component=target_comp;
+    const unsigned int ncomp = mg_dof.get_fe().n_components();
+
+    // If the selected and
+    // target_component have size 0,
+    // they must be replaced by default
+    // values.
+    //
+    // Since we already made copies
+    // directly after this function was
+    // called, we use the arguments
+    // directly.
+    if (target_component.size() == 0)
+      {
+        target_component.resize(ncomp);
+        for (unsigned int i=0; i<ncomp; ++i)
+          target_component[i] = i;
+      }
+
+    // If selected is an empty vector,
+    // all components are selected.
+    if (selected.size() == 0)
+      {
+        selected.resize(target_component.size());
+        std::fill_n (selected.begin(), ncomp, false);
+        for (unsigned int i=0; i<target_component.size(); ++i)
+          selected[target_component[i]] = true;
+      }
+
+    Assert (selected.size() == target_component.size(),
+            ExcDimensionMismatch(selected.size(), target_component.size()));
+
+    // Compute the number of blocks needed
+    const unsigned int n_selected
+      = std::accumulate(selected.begin(),
+                        selected.end(),
+                        0U);
+
+    if (ndofs.size() == 0)
+      {
+        std::vector<std::vector<unsigned int> >
+        new_dofs(mg_dof.get_tria().n_levels(),
+                 std::vector<unsigned int>(target_component.size()));
+        std::swap(ndofs, new_dofs);
+        MGTools::count_dofs_per_block (mg_dof, ndofs, target_component);
+      }
+
+    for (unsigned int level=v.get_minlevel();
+         level<=v.get_maxlevel(); ++level)
+      {
+        v[level].reinit(n_selected, 0);
+        unsigned int k=0;
+        for (unsigned int i=0; i<selected.size() && (k<v[level].n_blocks()); ++i)
+          {
+            if (selected[i])
+              {
+                v[level].block(k++).reinit(ndofs[level][i]);
+              }
+            v[level].collect_sizes();
+          }
+      }
+  }
+
+
   /**
    * Adjust vectors on all levels
    * to correct size.  Count the
@@ -67,7 +175,7 @@ namespace
   template <int dim, typename number, int spacedim>
   void
   reinit_vector_by_components (
-    const dealii::MGDoFHandler<dim,spacedim> &mg_dof,
+    const dealii::DoFHandler<dim,spacedim> &mg_dof,
     MGLevelObject<dealii::Vector<number> > &v,
     const ComponentMask &component_mask,
     const std::vector<unsigned int> &target_component,
@@ -104,7 +212,7 @@ template <typename number>
 template <int dim, class InVector, int spacedim>
 void
 MGTransferSelect<number>::do_copy_to_mg (
-  const MGDoFHandler<dim,spacedim>        &mg_dof_handler,
+  const DoFHandler<dim,spacedim>        &mg_dof_handler,
   MGLevelObject<Vector<number> > &dst,
   const InVector                 &src) const
 {
@@ -152,7 +260,7 @@ MGTransferSelect<number>::do_copy_to_mg (
 template <int dim, int spacedim>
 void MGTransferComponentBase::build_matrices (
   const DoFHandler<dim,spacedim> &,
-  const MGDoFHandler<dim,spacedim> &mg_dof)
+  const DoFHandler<dim,spacedim> &mg_dof)
 {
   // Fill target component with
   // standard values (identity) if it
@@ -319,7 +427,7 @@ void MGTransferComponentBase::build_matrices (
 
       prolongation_sparsities[level]->collect_sizes();
 
-      for (typename MGDoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
+      for (typename DoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
            cell != mg_dof.end(level); ++cell)
         if (cell->has_children())
           {
@@ -356,7 +464,7 @@ void MGTransferComponentBase::build_matrices (
 
       prolongation_matrices[level]->reinit (*prolongation_sparsities[level]);
       // now actually build the matrices
-      for (typename MGDoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
+      for (typename DoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
            cell != mg_dof.end(level); ++cell)
         if (cell->has_children())
           {
@@ -445,7 +553,7 @@ template <typename number>
 template <int dim, int spacedim>
 void MGTransferSelect<number>::build_matrices (
   const DoFHandler<dim,spacedim> &dof,
-  const MGDoFHandler<dim,spacedim> &mg_dof,
+  const DoFHandler<dim,spacedim> &mg_dof,
   unsigned int select,
   unsigned int mg_select,
   const std::vector<unsigned int> &t_component,
@@ -515,9 +623,9 @@ void MGTransferSelect<number>::build_matrices (
   for (int level=dof.get_tria().n_levels()-1; level>=0; --level)
     {
       copy_to_and_from_indices[level].clear();
-      typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_cell = mg_dof.begin_active(level);
-      const typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      const typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_end  = mg_dof.end_active(level);
 
       temp_copy_indices.resize (0);
@@ -527,12 +635,11 @@ void MGTransferSelect<number>::build_matrices (
       // by restricting from fine level.
       for (; level_cell!=level_end; ++level_cell)
         {
-          DoFAccessor<dim, DoFHandler<dim,spacedim> > &global_cell = *level_cell;
           // get the dof numbers of
           // this cell for the global
           // and the level-wise
           // numbering
-          global_cell.get_dof_indices(global_dof_indices);
+          level_cell->get_dof_indices(global_dof_indices);
           level_cell->get_mg_dof_indices (level_dof_indices);
 
           for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
index 9b32e36b7112befe70be6efecb235a0b004d1373..bd9ad33004c19ff159bcaec6a203e81777ac10a3 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 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
@@ -17,7 +17,7 @@ for (deal_II_dimension : DIMENSIONS)
 template
 void MGTransferSelect<float>::build_matrices<deal_II_dimension>
 (const DoFHandler<deal_II_dimension> &d,
- const MGDoFHandler<deal_II_dimension> &,
+ const DoFHandler<deal_II_dimension> &,
  unsigned int, unsigned int,
  const std::vector<unsigned int>&,
  const std::vector<unsigned int>&,
@@ -26,7 +26,7 @@ void MGTransferSelect<float>::build_matrices<deal_II_dimension>
 template
 void MGTransferSelect<double>::build_matrices<deal_II_dimension>
 (const DoFHandler<deal_II_dimension> &d,
- const MGDoFHandler<deal_II_dimension> &,
+ const DoFHandler<deal_II_dimension> &,
  unsigned int, unsigned int,
  const std::vector<unsigned int>&,
  const std::vector<unsigned int>&,
@@ -34,63 +34,63 @@ void MGTransferSelect<double>::build_matrices<deal_II_dimension>
 
 template void
 MGTransferSelect<float>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<float> >&,
   const Vector<double>&) const;
 template void
 MGTransferSelect<float>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<float> >&,
   const BlockVector<double>&) const;
 template void
 MGTransferSelect<float>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 template void
 MGTransferSelect<float>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 template void
 MGTransferSelect<float>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 template void
 MGTransferSelect<float>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<float> >&) const;
 
 template void
 MGTransferSelect<double>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<double> >&,
   const Vector<double>&) const;
 template void
 MGTransferSelect<double>::copy_to_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   MGLevelObject<Vector<double> >&,
   const BlockVector<double>&) const;
 template void
 MGTransferSelect<double>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<double> >&) const;
 template void
 MGTransferSelect<double>::copy_from_mg (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<double> >&) const;
 template void
 MGTransferSelect<double>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   Vector<double>&,
   const MGLevelObject<Vector<double> >&) const;
 template void
 MGTransferSelect<double>::copy_from_mg_add (
-  const MGDoFHandler<deal_II_dimension>&,
+  const DoFHandler<deal_II_dimension>&,
   BlockVector<double>&,
   const MGLevelObject<Vector<double> >&) const;
   }
index 10054a7a205c910803ed01cee819855c25c503d6..3102a7a47dd1fecfc306ca89a5bedde8b3da5693 100644 (file)
 
 #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/block_sparse_matrix.h>
 #include <deal.II/lac/compressed_simple_sparsity_pattern.h>
 DEAL_II_NAMESPACE_OPEN
 
 
+template<class VECTOR>
+MGTransferPrebuilt<VECTOR>::MGTransferPrebuilt ()
+{}
+
+
+template<class VECTOR>
+MGTransferPrebuilt<VECTOR>::MGTransferPrebuilt (const ConstraintMatrix &c, const MGConstrainedDoFs &mg_c)
+  :
+  constraints(&c),
+  mg_constrained_dofs(&mg_c)
+{}
+
+template <class VECTOR>
+MGTransferPrebuilt<VECTOR>::~MGTransferPrebuilt ()
+{}
+
+
+template <class VECTOR>
+void MGTransferPrebuilt<VECTOR>::prolongate (
+  const unsigned int to_level,
+  VECTOR            &dst,
+  const VECTOR      &src) const
+{
+  Assert ((to_level >= 1) && (to_level<=prolongation_matrices.size()),
+          ExcIndexRange (to_level, 1, prolongation_matrices.size()+1));
+
+  prolongation_matrices[to_level-1]->vmult (dst, src);
+}
+
+
+template <class VECTOR>
+void MGTransferPrebuilt<VECTOR>::restrict_and_add (
+  const unsigned int   from_level,
+  VECTOR       &dst,
+  const VECTOR &src) const
+{
+  Assert ((from_level >= 1) && (from_level<=prolongation_matrices.size()),
+          ExcIndexRange (from_level, 1, prolongation_matrices.size()+1));
+
+  prolongation_matrices[from_level-1]->Tvmult_add (dst, src);
+}
+
+
 template <typename VECTOR>
 template <int dim, int spacedim>
 void MGTransferPrebuilt<VECTOR>::build_matrices (
-  const MGDoFHandler<dim,spacedim>  &mg_dof)
+  const DoFHandler<dim,spacedim>  &mg_dof)
 {
   const unsigned int n_levels      = mg_dof.get_tria().n_levels();
   const unsigned int dofs_per_cell = mg_dof.get_fe().dofs_per_cell;
@@ -59,9 +108,9 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
   for (unsigned int i=0; i<n_levels-1; ++i)
     {
       prolongation_sparsities.push_back
-      (std_cxx1x::shared_ptr<SparsityPattern> (new SparsityPattern));
+      (std_cxx1x::shared_ptr<typename internal::MatrixSelector<VECTOR>::Sparsity> (new typename internal::MatrixSelector<VECTOR>::Sparsity));
       prolongation_matrices.push_back
-      (std_cxx1x::shared_ptr<SparseMatrix<double> > (new SparseMatrix<double>));
+      (std_cxx1x::shared_ptr<typename internal::MatrixSelector<VECTOR>::Matrix> (new typename internal::MatrixSelector<VECTOR>::Matrix));
     }
 
   // two fields which will store the
@@ -91,7 +140,7 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
       CompressedSimpleSparsityPattern csp (sizes[level+1],
                                            sizes[level]);
       std::vector<unsigned int> entries (dofs_per_cell);
-      for (typename MGDoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
+      for (typename DoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
            cell != mg_dof.end(level); ++cell)
         if (cell->has_children())
           {
@@ -132,7 +181,7 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
       prolongation_matrices[level]->reinit (*prolongation_sparsities[level]);
 
       // now actually build the matrices
-      for (typename MGDoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
+      for (typename DoFHandler<dim,spacedim>::cell_iterator cell=mg_dof.begin(level);
            cell != mg_dof.end(level); ++cell)
         if (cell->has_children())
           {
@@ -192,7 +241,7 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
             const unsigned int n_dofs = prolongation_matrices[level]->m();
             for (unsigned int i=0; i<n_dofs; ++i)
               {
-                SparseMatrix<double>::iterator
+                typename internal::MatrixSelector<VECTOR>::Matrix::iterator
                 start_row = prolongation_matrices[level]->begin(i),
                 end_row   = prolongation_matrices[level]->end(i);
                 for (; start_row != end_row; ++start_row)
@@ -222,9 +271,9 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
   for (int level=mg_dof.get_tria().n_levels()-1; level>=0; --level)
     {
       copy_indices[level].clear();
-      typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_cell = mg_dof.begin_active(level);
-      const typename MGDoFHandler<dim,spacedim>::active_cell_iterator
+      const typename DoFHandler<dim,spacedim>::active_cell_iterator
       level_end  = mg_dof.end_active(level);
 
       temp_copy_indices.resize (0);
@@ -234,12 +283,11 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
       // by restricting from fine level.
       for (; level_cell!=level_end; ++level_cell)
         {
-          DoFAccessor<dim, DoFHandler<dim,spacedim> > &global_cell = *level_cell;
           // get the dof numbers of
           // this cell for the global
           // and the level-wise
           // numbering
-          global_cell.get_dof_indices(global_dof_indices);
+          level_cell->get_dof_indices(global_dof_indices);
           level_cell->get_mg_dof_indices (level_dof_indices);
 
           for (unsigned int i=0; i<dofs_per_cell; ++i)
@@ -276,247 +324,6 @@ void MGTransferPrebuilt<VECTOR>::build_matrices (
 
 
 
-template <typename VECTOR>
-template <int dim, int spacedim>
-void MGTransferPrebuilt<VECTOR>::build_matrices (
-  const DoFHandler<dim,spacedim>  &dof_handler)
-{
-  const unsigned int n_levels      = dof_handler.get_tria().n_levels();
-  const unsigned int dofs_per_cell = dof_handler.get_fe().dofs_per_cell;
-
-  sizes.resize(n_levels);
-  for (unsigned int l=0; l<n_levels; ++l)
-    sizes[l] = dof_handler.n_dofs(l);
-
-  // reset the size of the array of
-  // matrices. call resize(0) first,
-  // in order to delete all elements
-  // and clear their memory. then
-  // repopulate these arrays
-  //
-  // note that on resize(0), the
-  // shared_ptr class takes care of
-  // deleting the object it points to
-  // by itself
-  prolongation_matrices.resize (0);
-  prolongation_sparsities.resize (0);
-
-  for (unsigned int i=0; i<n_levels-1; ++i)
-    {
-      prolongation_sparsities.push_back
-      (std_cxx1x::shared_ptr<SparsityPattern> (new SparsityPattern));
-      prolongation_matrices.push_back
-      (std_cxx1x::shared_ptr<SparseMatrix<double> > (new SparseMatrix<double>));
-    }
-
-  // two fields which will store the
-  // indices of the multigrid dofs
-  // for a cell and one of its children
-  std::vector<unsigned int> dof_indices_parent (dofs_per_cell);
-  std::vector<unsigned int> dof_indices_child (dofs_per_cell);
-
-  // for each level: first build the sparsity
-  // pattern of the matrices and then build the
-  // matrices themselves. note that we only
-  // need to take care of cells on the coarser
-  // level which have children
-  for (unsigned int level=0; level<n_levels-1; ++level)
-    {
-
-      // reset the dimension of the structure.
-      // note that for the number of entries
-      // per row, the number of parent dofs
-      // coupling to a child dof is
-      // necessary. this, of course, is the
-      // number of degrees of freedom per
-      // cell
-      // increment dofs_per_cell
-      // since a useless diagonal
-      // element will be stored
-      prolongation_sparsities[level]->reinit (sizes[level+1],
-                                              sizes[level],
-                                              dofs_per_cell+1);
-
-      for (typename DoFHandler<dim,spacedim>::cell_iterator cell = dof_handler.begin(level);
-           cell != dof_handler.end(level); ++cell)
-        if (cell->has_children())
-          {
-            cell->get_mg_dof_indices (dof_indices_parent);
-
-            Assert(cell->n_children()==GeometryInfo<dim>::max_children_per_cell,
-                   ExcNotImplemented());
-            for (unsigned int child=0; child<cell->n_children(); ++child)
-              {
-                // set an alias to the
-                // prolongation matrix for
-                // this child
-                const FullMatrix<double> &prolongation
-                  = dof_handler.get_fe().get_prolongation_matrix (child,
-                                                                  cell->refinement_case());
-
-                Assert (prolongation.n() != 0, ExcNoProlongation());
-
-                cell->child(child)->get_mg_dof_indices (dof_indices_child);
-
-                // now tag the entries in the
-                // matrix which will be used
-                // for this pair of parent/child
-                for (unsigned int i=0; i<dofs_per_cell; ++i)
-                  for (unsigned int j=0; j<dofs_per_cell; ++j)
-                    if (prolongation(i,j) != 0)
-                      prolongation_sparsities[level]->add (dof_indices_child[i],
-                                                           dof_indices_parent[j]);
-              }
-          }
-
-      prolongation_sparsities[level]->compress ();
-
-      prolongation_matrices[level]->reinit (*prolongation_sparsities[level]);
-
-      // now actually build the matrices
-      for (typename DoFHandler<dim,spacedim>::cell_iterator cell = dof_handler.begin(level);
-           cell != dof_handler.end(level); ++cell)
-        if (cell->has_children())
-          {
-            cell->get_mg_dof_indices (dof_indices_parent);
-
-            Assert(cell->n_children()==GeometryInfo<dim>::max_children_per_cell,
-                   ExcNotImplemented());
-            for (unsigned int child=0; child<cell->n_children(); ++child)
-              {
-                // set an alias to the
-                // prolongation matrix for
-                // this child
-                const FullMatrix<double> &prolongation
-                  = dof_handler.get_fe().get_prolongation_matrix (child,
-                                                                  cell->refinement_case());
-
-                cell->child(child)->get_mg_dof_indices (dof_indices_child);
-
-                // now set the entries in the
-                // matrix
-                for (unsigned int i=0; i<dofs_per_cell; ++i)
-                  prolongation_matrices[level]->set (dof_indices_child[i],
-                                                     dofs_per_cell,
-                                                     &dof_indices_parent[0],
-                                                     &prolongation(i,0),
-                                                     true);
-              }
-          }
-    }
-
-
-  // impose boundary conditions
-  // but only in the column of
-  // the prolongation matrix
-  if (mg_constrained_dofs != 0)
-    if (mg_constrained_dofs->set_boundary_values())
-      {
-        std::vector<unsigned int> constrain_indices;
-        for (int level=n_levels-2; level>=0; --level)
-          {
-            if (mg_constrained_dofs->get_boundary_indices()[level].size() == 0)
-              continue;
-
-            // need to delete all the columns in the
-            // matrix that are on the boundary. to achive
-            // this, create an array as long as there are
-            // matrix columns, and find which columns we
-            // need to filter away.
-            constrain_indices.resize (0);
-            constrain_indices.resize (prolongation_matrices[level]->n(), 0);
-            std::set<unsigned int>::const_iterator dof
-            = mg_constrained_dofs->get_boundary_indices()[level].begin(),
-            endd = mg_constrained_dofs->get_boundary_indices()[level].end();
-            for (; dof != endd; ++dof)
-              constrain_indices[*dof] = 1;
-
-            const unsigned int n_dofs = prolongation_matrices[level]->m();
-            for (unsigned int i=0; i<n_dofs; ++i)
-              {
-                SparseMatrix<double>::iterator
-                start_row = prolongation_matrices[level]->begin(i),
-                end_row   = prolongation_matrices[level]->end(i);
-                for (; start_row != end_row; ++start_row)
-                  {
-                    if (constrain_indices[start_row->column()] == 1)
-                      start_row->value() = 0;
-                  }
-              }
-          }
-      }
-
-  // to find the indices that describe the
-  // relation between global dofs and local
-  // numbering on the individual level, first
-  // create a temp vector where the ith level
-  // entry contains the respective global
-  // entry. this gives a neat way to find those
-  // indices. in a second step, actually build
-  // the std::vector<std::pair<uint,uint> > that
-  // only contains the active dofs on the
-  // levels.
-
-  copy_indices.resize(n_levels);
-  std::vector<unsigned int> temp_copy_indices;
-  std::vector<unsigned int> global_dof_indices (dofs_per_cell);
-  std::vector<unsigned int> level_dof_indices  (dofs_per_cell);
-  for (int level=dof_handler.get_tria().n_levels()-1; level>=0; --level)
-    {
-      copy_indices[level].clear();
-      typename DoFHandler<dim,spacedim>::active_cell_iterator
-      level_cell = dof_handler.begin_active(level);
-      const typename DoFHandler<dim,spacedim>::active_cell_iterator
-      level_end  = dof_handler.end_active(level);
-
-      temp_copy_indices.resize (0);
-      temp_copy_indices.resize (dof_handler.n_dofs(level), numbers::invalid_unsigned_int);
-
-      // Compute coarse level right hand side
-      // by restricting from fine level.
-      for (; level_cell!=level_end; ++level_cell)
-        {
-          DoFAccessor<dim, DoFHandler<dim,spacedim> > &global_cell = *level_cell;
-          // get the dof numbers of
-          // this cell for the global
-          // and the level-wise
-          // numbering
-          global_cell.get_dof_indices(global_dof_indices);
-          level_cell->get_mg_dof_indices (level_dof_indices);
-
-          for (unsigned int i=0; i<dofs_per_cell; ++i)
-            {
-              if (mg_constrained_dofs != 0)
-                {
-                  if (!mg_constrained_dofs->at_refinement_edge(level,level_dof_indices[i]))
-                    temp_copy_indices[level_dof_indices[i]] = global_dof_indices[i];
-                }
-              else
-                temp_copy_indices[level_dof_indices[i]] = global_dof_indices[i];
-            }
-        }
-
-      // now all the active dofs got a valid entry,
-      // the other ones have an invalid entry. Count
-      // the invalid entries and then resize the
-      // copy_indices object. Then, insert the pairs
-      // of global index and level index into
-      // copy_indices.
-      const unsigned int n_active_dofs =
-        std::count_if (temp_copy_indices.begin(), temp_copy_indices.end(),
-                       std::bind2nd(std::not_equal_to<unsigned int>(),
-                                    numbers::invalid_unsigned_int));
-      copy_indices[level].resize (n_active_dofs);
-      unsigned int counter = 0;
-      for (unsigned int i=0; i<temp_copy_indices.size(); ++i)
-        if (temp_copy_indices[i] != numbers::invalid_unsigned_int)
-          copy_indices[level][counter++] =
-            std::pair<unsigned int, unsigned int> (temp_copy_indices[i], i);
-      Assert (counter == n_active_dofs, ExcInternalError());
-    }
-}
-
-
 
 // explicit instantiation
 #include "mg_transfer_prebuilt.inst"
index 74736dc0f0b906612338de4f6fba8ed2038968ce..71f90f8d3ae85d5342a49d5bdce6da9e05e3e334 100644 (file)
@@ -1,7 +1,7 @@
 //---------------------------------------------------------------------------
 //    $Id$
 //
-//    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors
+//    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
 //---------------------------------------------------------------------------
 
 
-for (deal_II_dimension : DIMENSIONS; V1 : DEAL_II_VEC_TEMPLATES; S1 : REAL_SCALARS)
+for (V1 : VECTORS_WITH_MATRIX)
+  {
+    template class MGTransferPrebuilt< V1 >;
+  }
+
+for (deal_II_dimension : DIMENSIONS; V1 : VECTORS_WITH_MATRIX)
   {
     template
-      void MGTransferPrebuilt<V1<S1> >::build_matrices<deal_II_dimension>(
-       const MGDoFHandler<deal_II_dimension> &mg_dof);
-       template
-      void MGTransferPrebuilt<V1<S1> >::build_matrices<deal_II_dimension>(
+      void MGTransferPrebuilt< V1 >::build_matrices<deal_II_dimension>(
        const DoFHandler<deal_II_dimension> &mg_dof);
   }
 
 for (deal_II_dimension : DIMENSIONS; V1,V2 : DEAL_II_VEC_TEMPLATES; S1, S2 : REAL_SCALARS)
   {    
-    template void
-      MGTransferPrebuilt<V1<S1> >::copy_to_mg (
-       const MGDoFHandler<deal_II_dimension>&, MGLevelObject<V1<S1> >&, const V2<S2>&) const;
     template void
       MGTransferPrebuilt<V1<S1> >::copy_to_mg (
        const DoFHandler<deal_II_dimension>&, MGLevelObject<V1<S1> >&, const V2<S2>&) const;
-    template void
-      MGTransferPrebuilt<V1<S1> >::copy_from_mg (const MGDoFHandler<deal_II_dimension>&, V2<S2>&,
-                                            const MGLevelObject<V1<S1> >&) const;
     template void
       MGTransferPrebuilt<V1<S1> >::copy_from_mg (const DoFHandler<deal_II_dimension>&, V2<S2>&,
                                             const MGLevelObject<V1<S1> >&) const;
-    template void
-      MGTransferPrebuilt<V1<S1> >::copy_from_mg_add (const MGDoFHandler<deal_II_dimension>&, V2<S2>&,
-                                                const MGLevelObject<V1<S1> >&) const;
     template void
       MGTransferPrebuilt<V1<S1> >::copy_from_mg_add (const DoFHandler<deal_II_dimension>&, V2<S2>&,
                                                 const MGLevelObject<V1<S1> >&) const;
   }
 
+for(deal_II_dimension : DIMENSIONS)
+  {    
+#ifdef DEAL_II_USE_TRILINOS
+
+    template void
+      MGTransferPrebuilt<TrilinosWrappers::MPI::Vector>::copy_to_mg (
+       const DoFHandler<deal_II_dimension>&, MGLevelObject<TrilinosWrappers::MPI::Vector>&, const TrilinosWrappers::MPI::Vector&) const;
+    template void
+      MGTransferPrebuilt<TrilinosWrappers::MPI::Vector>::copy_from_mg (const DoFHandler<deal_II_dimension>&, TrilinosWrappers::MPI::Vector&,
+                                            const MGLevelObject<TrilinosWrappers::MPI::Vector>&) const;
+    template void
+      MGTransferPrebuilt<TrilinosWrappers::MPI::Vector>::copy_from_mg_add (const DoFHandler<deal_II_dimension>&, TrilinosWrappers::MPI::Vector&,
+                                                const MGLevelObject<TrilinosWrappers::MPI::Vector>&) const;
+#endif
+  }
+
index 9a5ff97128738428d8e336c91d7bf0d1348ba2ec..b5555d7f88c5e4c9d51119be5597ff53afec1614 100644 (file)
 
 
 #include <deal.II/lac/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/block_sparse_matrix.h>
 #include <deal.II/multigrid/mg_transfer.h>
 #include <deal.II/multigrid/mg_transfer_block.h>
 #include <deal.II/multigrid/mg_transfer_component.h>
 #include <deal.II/multigrid/mg_smoother.h>
-#include <deal.II/multigrid/mg_transfer.templates.h>
 #include <deal.II/multigrid/mg_transfer_block.templates.h>
 #include <deal.II/multigrid/mg_transfer_component.templates.h>
 #include <deal.II/multigrid/multigrid.templates.h>
 DEAL_II_NAMESPACE_OPEN
 
 
-// Warning: the following function is for debugging purposes only. It
-// will be compiled only, if the additional and undocumented compiler
-// flag MG_DEBUG is set. Furthermore, as soon as this function is
-// compiled, libraries for different dimensions may NOT be linked
-// anymore at the same time.
-
-// If this function is to be used, its declaration must be added to
-// the class Multigrid again.
-
-// TODO: deal_II_dimension not set any more, so this will not compile!
-#ifdef MG_DEBUG
-template <>
-void
-Multigrid<Vector<double> >::print_vector (const unsigned int level,
-                                          const Vector<double> &v,
-                                          const char *name) const
-{
-  if (level!=maxlevel)
-    return;
-  const unsigned int dim=deal_II_dimension;
-
-  const DoFHandler<dim> *dof = mg_dof_handler;
-
-  Vector<double> out_vector(dof->n_dofs());
-
-  out_vector = -10000;
-
-  const unsigned int dofs_per_cell = mg_dof_handler->get_fe().dofs_per_cell;
-
-  std::vector<unsigned int> global_dof_indices (dofs_per_cell);
-  std::vector<unsigned int> level_dof_indices (dofs_per_cell);
-
-  DoFHandler<dim>::active_cell_iterator
-  global_cell = dof->begin_active(level);
-  MGDoFHandler<dim>::active_cell_iterator
-  level_cell = mg_dof_handler->begin_active(level);
-  const MGDoFHandler<dim>::cell_iterator
-  endc = mg_dof_handler->end(level);
-
-  // traverse all cells and copy the
-  // data appropriately to the output
-  // vector
-  for (; level_cell != endc; ++level_cell, ++global_cell)
-    {
-      global_cell->get_dof_indices (global_dof_indices);
-      level_cell->get_mg_dof_indices(level_dof_indices);
-
-      // copy level-wise data to
-      // global vector
-      for (unsigned int i=0; i<dofs_per_cell; ++i)
-        out_vector(global_dof_indices[i])
-          = v(level_dof_indices[i]);
-    }
-
-  std::ofstream out_file(name);
-  DataOut<dim> out;
-  out.attach_dof_handler(*dof);
-  out.add_data_vector(out_vector, "v");
-  out.build_patches(5);
-  out.write_gnuplot(out_file);
-}
-
-
-
-template <class VECTOR>
-void
-Multigrid<VECTOR>::print_vector (const unsigned int level,
-                                 const VECTOR &v,
-                                 const char *name) const
-{
-  Assert(false, ExcNotImplemented());
-}
-#endif
-
-
-template<class VECTOR>
-MGTransferPrebuilt<VECTOR>::MGTransferPrebuilt ()
-{}
-
-
-template<class VECTOR>
-MGTransferPrebuilt<VECTOR>::MGTransferPrebuilt (const ConstraintMatrix &c, const MGConstrainedDoFs &mg_c)
-  :
-  constraints(&c),
-  mg_constrained_dofs(&mg_c)
-{}
-
-template <class VECTOR>
-MGTransferPrebuilt<VECTOR>::~MGTransferPrebuilt ()
-{}
-
-
-template <class VECTOR>
-void MGTransferPrebuilt<VECTOR>::prolongate (
-  const unsigned int to_level,
-  VECTOR            &dst,
-  const VECTOR      &src) const
-{
-  Assert ((to_level >= 1) && (to_level<=prolongation_matrices.size()),
-          ExcIndexRange (to_level, 1, prolongation_matrices.size()+1));
-
-  prolongation_matrices[to_level-1]->vmult (dst, src);
-}
-
-
-template <class VECTOR>
-void MGTransferPrebuilt<VECTOR>::restrict_and_add (
-  const unsigned int   from_level,
-  VECTOR       &dst,
-  const VECTOR &src) const
-{
-  Assert ((from_level >= 1) && (from_level<=prolongation_matrices.size()),
-          ExcIndexRange (from_level, 1, prolongation_matrices.size()+1));
-
-  prolongation_matrices[from_level-1]->Tvmult_add (dst, src);
-}
-
-
 MGTransferBlockBase::MGTransferBlockBase ()
 {}
 
@@ -395,15 +282,8 @@ void MGTransferBlockSelect<number>::restrict_and_add (
 
 // Explicit instantiations
 
-template class Multigrid<Vector<float> >;
-template class Multigrid<Vector<double> >;
-template class Multigrid<BlockVector<float> >;
-template class Multigrid<BlockVector<double> >;
+#include "multigrid.inst"
 
-template class MGTransferPrebuilt<Vector<float> >;
-template class MGTransferPrebuilt<BlockVector<float> >;
-template class MGTransferPrebuilt<Vector<double> >;
-template class MGTransferPrebuilt<BlockVector<double> >;
 template class MGTransferBlock<float>;
 template class MGTransferBlock<double>;
 template class MGTransferSelect<float>;
diff --git a/deal.II/source/multigrid/multigrid.inst.in b/deal.II/source/multigrid/multigrid.inst.in
new file mode 100644 (file)
index 0000000..9623c24
--- /dev/null
@@ -0,0 +1,16 @@
+//---------------------------------------------------------------------------
+//    $Id: vector_tools.inst.in 26105 2012-08-23 22:10:05Z heister $
+//
+//    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.
+//
+//---------------------------------------------------------------------------
+
+for (VEC : SERIAL_VECTORS)
+{
+  template class Multigrid< VEC >;
+}
index 5832e4504a068af2999c2dd8c7548a259009d30f..1a8f3c9e6ba5e8ff095832c3a3142e2286087045 100644 (file)
@@ -17,10 +17,6 @@ for (VECTOR : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS)
                                  DoFHandler<deal_II_dimension>,
                                  VECTOR>;
 
-  template class FEFieldFunction<deal_II_dimension,
-                                 MGDoFHandler<deal_II_dimension>,
-                                 VECTOR>;
-
   template class FEFieldFunction<deal_II_dimension,
                                  hp::DoFHandler<deal_II_dimension>,
                                  VECTOR>;
index f6479a7533100933b96fa5c68dbf9a760ed8e327..eedd5c9de32cc4fd4b9049df57ad50371b95f7a0 100644 (file)
@@ -1,6 +1,5 @@
 //---------------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$
 //
 //    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012 by the deal.II authors
 //
@@ -153,18 +152,6 @@ for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS; deal_II_space_dimens
       const VEC&,
       const Point<deal_II_dimension>&);
 
-      template
-        void interpolate
-        (const Mapping<deal_II_dimension>&,
-         const MGDoFHandler<deal_II_dimension>&,
-         const Function<deal_II_dimension>&,
-         VEC&);
-      template
-        void interpolate
-        (const MGDoFHandler<deal_II_dimension>&,
-         const Function<deal_II_dimension>&,
-         VEC&);
-
   template
     void point_value<deal_II_dimension> (
       const hp::MappingCollection<deal_II_dimension>&,
@@ -281,6 +268,27 @@ for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS; deal_II_space_dimens
   }
 
 
+for (deal_II_dimension : DIMENSIONS)
+{
+    namespace VectorTools \{
+      template
+        void interpolate_boundary_values (
+          const MGDoFHandler<deal_II_dimension> &,
+          const types::boundary_id,
+          const Function<deal_II_dimension>   &,
+         ConstraintMatrix&,
+          const ComponentMask    &);
+
+      template
+        void interpolate_boundary_values (
+          const MGDoFHandler<deal_II_dimension> &,
+          const types::boundary_id,
+          const Function<deal_II_dimension>   &,
+          std::map<unsigned int,double>       &,
+          const ComponentMask    &);
+    \}
+}
+
 
 for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS; DH : DOFHANDLER_TEMPLATES)
   {
index 7d867db5530f5fa432d5538a6d30029227b6aa50..fb33307d7d0b65ab93ca2a3129f0c0b0e0eab3cc 100644 (file)
@@ -16,5 +16,5 @@ ULIMIT = @ULIMIT@
 # in the report with it. for a branch, prefix everything
 # with x-branch-name/ so that tests run from the branch will show up
 # in different folders on the webpage.
-WORKDIR = x-branch_merge_mg_into_dof_handler/$(notdir $(shell pwd))
+WORKDIR = x-branch_parallel_mg/$(notdir $(shell pwd))
 
diff --git a/tests/bits/step-16b.cc b/tests/bits/step-16b.cc
new file mode 100644 (file)
index 0000000..8ee89fe
--- /dev/null
@@ -0,0 +1,357 @@
+//----------------------------  step-16.cc  ---------------------------
+//    $Id: step-16.cc 25863 2012-08-10 09:26:44Z bangerth $
+//    Version: $Name$ 
+//
+//    Copyright (C) 2005, 2006, 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.
+//
+//----------------------------  step-16.cc  ---------------------------
+
+
+// a un-hp-ified version of hp/step-16
+// this version uses the new unified DoFHAndler instead
+// of the MGDoFHandler in the test step-16.cc
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <fstream>
+std::ofstream logfile("step-16b/output");
+
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/function.h>
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_accessor.h>
+#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/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>
+#include <deal.II/multigrid/mg_dof_accessor.h>
+
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_tools.h>
+
+#include <deal.II/multigrid/mg_coarse.h>
+#include <deal.II/multigrid/mg_smoother.h>
+#include <deal.II/multigrid/mg_matrix.h>
+
+#include <fstream>
+#include <sstream>
+
+
+template <int dim>
+class LaplaceProblem 
+{
+  public:
+    LaplaceProblem ();
+    void run ();
+    
+  private:
+    void setup_system ();
+    void assemble_system ();
+    void assemble_multigrid ();
+    void solve ();
+    void output_results (const unsigned int cycle) const;
+
+    Triangulation<dim>   triangulation;
+    FE_Q<dim>            fe;
+    DoFHandler<dim>      mg_dof_handler;
+
+    SparsityPattern      sparsity_pattern;
+    SparseMatrix<double> system_matrix;
+
+    MGLevelObject<SparsityPattern> mg_sparsity;
+    MGLevelObject<SparseMatrix<float> > mg_matrices;
+    
+    Vector<double>       solution;
+    Vector<double>       system_rhs;
+};
+
+
+template <int dim>
+LaplaceProblem<dim>::LaplaceProblem () :
+                fe (1),
+               mg_dof_handler (triangulation)
+{}
+
+
+
+template <int dim>
+void LaplaceProblem<dim>::setup_system ()
+{
+  mg_dof_handler.distribute_dofs (fe);
+  mg_dof_handler.distribute_mg_dofs (fe);
+
+  deallog << "   Number of degrees of freedom: "
+           << mg_dof_handler.n_dofs()
+           << std::endl;
+
+  sparsity_pattern.reinit (mg_dof_handler.n_dofs(),
+                          mg_dof_handler.n_dofs(),
+                          mg_dof_handler.max_couplings_between_dofs());
+  DoFTools::make_sparsity_pattern (static_cast<const DoFHandler<dim>&>(mg_dof_handler),
+                                   sparsity_pattern);
+  sparsity_pattern.compress();
+
+  system_matrix.reinit (sparsity_pattern);
+
+  solution.reinit (mg_dof_handler.n_dofs());
+  system_rhs.reinit (mg_dof_handler.n_dofs());
+
+  const unsigned int nlevels = triangulation.n_levels();
+  mg_matrices.resize(0, nlevels-1);
+  mg_sparsity.resize(0, nlevels-1);
+
+  for (unsigned int level=0;level<nlevels;++level)
+    {
+      mg_sparsity[level].reinit (mg_dof_handler.n_dofs(level),
+                                mg_dof_handler.n_dofs(level),
+                                mg_dof_handler.max_couplings_between_dofs());
+      MGTools::make_sparsity_pattern (mg_dof_handler, mg_sparsity[level], level);
+      mg_sparsity[level].compress();
+      mg_matrices[level].reinit(mg_sparsity[level]);
+    }
+}
+
+template <int dim>
+void LaplaceProblem<dim>::assemble_system () 
+{  
+  QGauss<dim>  quadrature_formula(2);
+
+  FEValues<dim> fe_values (fe, quadrature_formula, 
+                          update_values   | update_gradients |
+                           update_q_points | update_JxW_values);
+
+  const unsigned int   dofs_per_cell = fe.dofs_per_cell;
+  const unsigned int   n_q_points    = quadrature_formula.size();
+
+  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 = mg_dof_handler.begin_active(),
+                                                endc = mg_dof_handler.end();
+  for (; cell!=endc; ++cell)
+    {
+      cell_matrix = 0;
+      cell_rhs = 0;
+
+      fe_values.reinit (cell);
+      
+      for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+       for (unsigned int i=0; i<dofs_per_cell; ++i)
+         {
+           for (unsigned int j=0; j<dofs_per_cell; ++j)
+             cell_matrix(i,j) += ((fe_values.shape_grad(i,q_point)
+                                   * fe_values.shape_grad(j,q_point))
+                                   + fe_values.shape_value(i,q_point)
+                                   * fe_values.shape_value(j,q_point))
+                                  * fe_values.JxW(q_point);
+
+           cell_rhs(i) += (fe_values.shape_value(i,q_point)
+                           * 1.0 * fe_values.JxW(q_point));
+         };
+
+
+      cell->get_dof_indices (local_dof_indices);
+      for (unsigned int i=0; i<dofs_per_cell; ++i)
+       {
+         for (unsigned int j=0; j<dofs_per_cell; ++j)
+           system_matrix.add (local_dof_indices[i],
+                              local_dof_indices[j],
+                              cell_matrix(i,j));
+         
+         system_rhs(local_dof_indices[i]) += cell_rhs(i);
+       };
+    };
+
+}
+
+
+
+template <int dim>
+void LaplaceProblem<dim>::assemble_multigrid () 
+{  
+  QGauss<dim>  quadrature_formula(2);
+
+  FEValues<dim> fe_values (fe, quadrature_formula, 
+                          update_values   | update_gradients |
+                           update_q_points | update_JxW_values);
+
+  const unsigned int   dofs_per_cell = fe.dofs_per_cell;
+  const unsigned int   n_q_points    = quadrature_formula.size();
+
+  FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+
+  std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+
+  typename MGDoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
+                                           endc = mg_dof_handler.end();
+  for (; cell!=endc; ++cell)
+    {
+      const unsigned int level = cell->level();
+      cell_matrix = 0;
+
+      fe_values.reinit (cell);
+
+      for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+       for (unsigned int i=0; i<dofs_per_cell; ++i)
+         {
+           for (unsigned int j=0; j<dofs_per_cell; ++j)
+             cell_matrix(i,j) += ((fe_values.shape_grad(i,q_point)
+                                   * fe_values.shape_grad(j,q_point))
+                                  + fe_values.shape_value(i,q_point)
+                                  * fe_values.shape_value(j,q_point))
+                                 * fe_values.JxW(q_point);
+         };
+
+
+      cell->get_mg_dof_indices (local_dof_indices);
+      for (unsigned int i=0; i<dofs_per_cell; ++i)
+       {
+         for (unsigned int j=0; j<dofs_per_cell; ++j)
+           mg_matrices[level].add (local_dof_indices[i],
+                                    local_dof_indices[j],
+                                    cell_matrix(i,j));
+       };
+    };
+
+}
+
+
+
+template <int dim>
+void LaplaceProblem<dim>::solve () 
+{
+  GrowingVectorMemory<>   vector_memory;
+
+  MGTransferPrebuilt<Vector<double> > mg_transfer;
+  mg_transfer.build_matrices(mg_dof_handler);
+
+  FullMatrix<float> coarse_matrix;
+  coarse_matrix.copy_from (mg_matrices[0]);
+  MGCoarseGridHouseholder<float, Vector<double> > mg_coarse;
+  mg_coarse.initialize(coarse_matrix);
+
+  typedef PreconditionSOR<SparseMatrix<float> > RELAXATION;
+  MGSmootherRelaxation<SparseMatrix<float>, RELAXATION, Vector<double> >
+    mg_smoother(vector_memory);
+
+  RELAXATION::AdditionalData smoother_data;
+  mg_smoother.initialize(mg_matrices, smoother_data);
+  
+  mg_smoother.set_steps(2);
+  mg_smoother.set_symmetric(true);
+
+  MGMatrix<SparseMatrix<float>, Vector<double> >
+    mg_matrix(&mg_matrices);
+  Multigrid<Vector<double> > mg(mg_dof_handler,
+                               mg_matrix,
+                               mg_coarse,
+                               mg_transfer,
+                               mg_smoother,
+                               mg_smoother);
+  PreconditionMG<dim, Vector<double>,
+    MGTransferPrebuilt<Vector<double> > >
+    preconditioner(mg_dof_handler, mg, mg_transfer);
+  
+  SolverControl           solver_control (1000, 1e-12);
+  SolverCG<>              cg (solver_control);
+
+  
+  cg.solve (system_matrix, solution, system_rhs,
+           preconditioner);
+
+  deallog << "   " << solver_control.last_step()
+           << " CG iterations needed to obtain convergence."
+           << std::endl;
+}
+
+
+
+template <int dim>
+void LaplaceProblem<dim>::output_results (const unsigned int cycle) const
+{
+  DataOut<dim> data_out;
+
+  data_out.attach_dof_handler (mg_dof_handler);
+  data_out.add_data_vector (solution, "solution");
+  data_out.build_patches ();
+
+  std::ostringstream filename;
+  filename << "solution-"
+          << cycle
+          << ".gnuplot";
+
+  data_out.write_gnuplot (deallog.get_file_stream());
+}
+
+
+
+template <int dim>
+void LaplaceProblem<dim>::run () 
+{
+  for (unsigned int cycle=0; cycle<6; ++cycle)
+    {
+      deallog << "Cycle " << cycle << ':' << std::endl;
+
+      if (cycle == 0)
+       {
+         GridGenerator::hyper_cube(triangulation);
+         
+       }
+      else
+       triangulation.refine_global (1);
+
+      deallog << "   Number of active cells: "
+               << triangulation.n_active_cells()
+               << std::endl
+               << "   Total number of cells: "
+               << triangulation.n_cells()
+               << std::endl;
+
+      setup_system ();
+      assemble_system ();
+      assemble_multigrid ();
+      solve ();
+      output_results (cycle);
+    };
+}
+
+    
+
+int main () 
+{
+  deallog.depth_console (0);
+  deallog << std::setprecision(2);
+  logfile << std::setprecision(2);
+  
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);  
+
+  LaplaceProblem<2> laplace_problem_2d;
+  laplace_problem_2d.run ();
+  
+  return 0;
+}
diff --git a/tests/bits/step-16b/cmp/generic b/tests/bits/step-16b/cmp/generic
new file mode 100644 (file)
index 0000000..7be2bc0
--- /dev/null
@@ -0,0 +1,9640 @@
+
+DEAL::Cycle 0:
+DEAL::   Number of active cells: 1
+DEAL::   Total number of cells: 1
+DEAL::   Number of degrees of freedom: 4
+DEAL:cg::Starting value 0.50
+DEAL:cg::Convergence step 2 value 0
+DEAL::   2 CG iterations needed to obtain convergence.
+# This file was generated by the deal.II library.
+
+
+#
+# For a description of the GNUPLOT format see the GNUPLOT manual.
+#
+# <x> <y> <solution> 
+0.0 0.0 1.0 
+1.0 0.0 1.0 
+
+0.0 1.0 1.0 
+1.0 1.0 1.0 
+
+
+DEAL::Cycle 1:
+DEAL::   Number of active cells: 4
+DEAL::   Total number of cells: 5
+DEAL::   Number of degrees of freedom: 9
+DEAL:cg::Starting value 0.38
+DEAL:cg::Convergence step 5 value 0
+DEAL::   5 CG iterations needed to obtain convergence.
+# This file was generated by the deal.II library.
+
+
+#
+# For a description of the GNUPLOT format see the GNUPLOT manual.
+#
+# <x> <y> <solution> 
+0.0 0.0 1.0 
+0.50 0.0 1.0 
+
+0.0 0.50 1.0 
+0.50 0.50 1.0 
+
+
+0.50 0.0 1.0 
+1.0 0.0 1.0 
+
+0.50 0.50 1.0 
+1.0 0.50 1.0 
+
+
+0.0 0.50 1.0 
+0.50 0.50 1.0 
+
+0.0 1.0 1.0 
+0.50 1.0 1.0 
+
+
+0.50 0.50 1.0 
+1.0 0.50 1.0 
+
+0.50 1.0 1.0 
+1.0 1.0 1.0 
+
+
+DEAL::Cycle 2:
+DEAL::   Number of active cells: 16
+DEAL::   Total number of cells: 21
+DEAL::   Number of degrees of freedom: 25
+DEAL:cg::Starting value 0.22
+DEAL:cg::Convergence step 6 value 0
+DEAL::   6 CG iterations needed to obtain convergence.
+# This file was generated by the deal.II library.
+
+
+#
+# For a description of the GNUPLOT format see the GNUPLOT manual.
+#
+# <x> <y> <solution> 
+0.0 0.0 1.0 
+0.25 0.0 1.0 
+
+0.0 0.25 1.0 
+0.25 0.25 1.0 
+
+
+0.25 0.0 1.0 
+0.50 0.0 1.0 
+
+0.25 0.25 1.0 
+0.50 0.25 1.0 
+
+
+0.0 0.25 1.0 
+0.25 0.25 1.0 
+
+0.0 0.50 1.0 
+0.25 0.50 1.0 
+
+
+0.25 0.25 1.0 
+0.50 0.25 1.0 
+
+0.25 0.50 1.0 
+0.50 0.50 1.0 
+
+
+0.50 0.0 1.0 
+0.75 0.0 1.0 
+
+0.50 0.25 1.0 
+0.75 0.25 1.0 
+
+
+0.75 0.0 1.0 
+1.0 0.0 1.0 
+
+0.75 0.25 1.0 
+1.0 0.25 1.0 
+
+
+0.50 0.25 1.0 
+0.75 0.25 1.0 
+
+0.50 0.50 1.0 
+0.75 0.50 1.0 
+
+
+0.75 0.25 1.0 
+1.0 0.25 1.0 
+
+0.75 0.50 1.0 
+1.0 0.50 1.0 
+
+
+0.0 0.50 1.0 
+0.25 0.50 1.0 
+
+0.0 0.75 1.0 
+0.25 0.75 1.0 
+
+
+0.25 0.50 1.0 
+0.50 0.50 1.0 
+
+0.25 0.75 1.0 
+0.50 0.75 1.0 
+
+
+0.0 0.75 1.0 
+0.25 0.75 1.0 
+
+0.0 1.0 1.0 
+0.25 1.0 1.0 
+
+
+0.25 0.75 1.0 
+0.50 0.75 1.0 
+
+0.25 1.0 1.0 
+0.50 1.0 1.0 
+
+
+0.50 0.50 1.0 
+0.75 0.50 1.0 
+
+0.50 0.75 1.0 
+0.75 0.75 1.0 
+
+
+0.75 0.50 1.0 
+1.0 0.50 1.0 
+
+0.75 0.75 1.0 
+1.0 0.75 1.0 
+
+
+0.50 0.75 1.0 
+0.75 0.75 1.0 
+
+0.50 1.0 1.0 
+0.75 1.0 1.0 
+
+
+0.75 0.75 1.0 
+1.0 0.75 1.0 
+
+0.75 1.0 1.0 
+1.0 1.0 1.0 
+
+
+DEAL::Cycle 3:
+DEAL::   Number of active cells: 64
+DEAL::   Total number of cells: 85
+DEAL::   Number of degrees of freedom: 81
+DEAL:cg::Starting value 0.12
+DEAL:cg::Convergence step 7 value 0
+DEAL::   7 CG iterations needed to obtain convergence.
+# This file was generated by the deal.II library.
+
+
+#
+# For a description of the GNUPLOT format see the GNUPLOT manual.
+#
+# <x> <y> <solution> 
+0.0 0.0 1.0 
+0.12 0.0 1.0 
+
+0.0 0.12 1.0 
+0.12 0.12 1.0 
+
+
+0.12 0.0 1.0 
+0.25 0.0 1.0 
+
+0.12 0.12 1.0 
+0.25 0.12 1.0 
+
+
+0.0 0.12 1.0 
+0.12 0.12 1.0 
+
+0.0 0.25 1.0 
+0.12 0.25 1.0 
+
+
+0.12 0.12 1.0 
+0.25 0.12 1.0 
+
+0.12 0.25 1.0 
+0.25 0.25 1.0 
+
+
+0.25 0.0 1.0 
+0.38 0.0 1.0 
+
+0.25 0.12 1.0 
+0.38 0.12 1.0 
+
+
+0.38 0.0 1.0 
+0.50 0.0 1.0 
+
+0.38 0.12 1.0 
+0.50 0.12 1.0 
+
+
+0.25 0.12 1.0 
+0.38 0.12 1.0 
+
+0.25 0.25 1.0 
+0.38 0.25 1.0 
+
+
+0.38 0.12 1.0 
+0.50 0.12 1.0 
+
+0.38 0.25 1.0 
+0.50 0.25 1.0 
+
+
+0.0 0.25 1.0 
+0.12 0.25 1.0 
+
+0.0 0.38 1.0 
+0.12 0.38 1.0 
+
+
+0.12 0.25 1.0 
+0.25 0.25 1.0 
+
+0.12 0.38 1.0 
+0.25 0.38 1.0 
+
+
+0.0 0.38 1.0 
+0.12 0.38 1.0 
+
+0.0 0.50 1.0 
+0.12 0.50 1.0 
+
+
+0.12 0.38 1.0 
+0.25 0.38 1.0 
+
+0.12 0.50 1.0 
+0.25 0.50 1.0 
+
+
+0.25 0.25 1.0 
+0.38 0.25 1.0 
+
+0.25 0.38 1.0 
+0.38 0.38 1.0 
+
+
+0.38 0.25 1.0 
+0.50 0.25 1.0 
+
+0.38 0.38 1.0 
+0.50 0.38 1.0 
+
+
+0.25 0.38 1.0 
+0.38 0.38 1.0 
+
+0.25 0.50 1.0 
+0.38 0.50 1.0 
+
+
+0.38 0.38 1.0 
+0.50 0.38 1.0 
+
+0.38 0.50 1.0 
+0.50 0.50 1.0 
+
+
+0.50 0.0 1.0 
+0.62 0.0 1.0 
+
+0.50 0.12 1.0 
+0.62 0.12 1.0 
+
+
+0.62 0.0 1.0 
+0.75 0.0 1.0 
+
+0.62 0.12 1.0 
+0.75 0.12 1.0 
+
+
+0.50 0.12 1.0 
+0.62 0.12 1.0 
+
+0.50 0.25 1.0 
+0.62 0.25 1.0 
+
+
+0.62 0.12 1.0 
+0.75 0.12 1.0 
+
+0.62 0.25 1.0 
+0.75 0.25 1.0 
+
+
+0.75 0.0 1.0 
+0.88 0.0 1.0 
+
+0.75 0.12 1.0 
+0.88 0.12 1.0 
+
+
+0.88 0.0 1.0 
+1.0 0.0 1.0 
+
+0.88 0.12 1.0 
+1.0 0.12 1.0 
+
+
+0.75 0.12 1.0 
+0.88 0.12 1.0 
+
+0.75 0.25 1.0 
+0.88 0.25 1.0 
+
+
+0.88 0.12 1.0 
+1.0 0.12 1.0 
+
+0.88 0.25 1.0 
+1.0 0.25 1.0 
+
+
+0.50 0.25 1.0 
+0.62 0.25 1.0 
+
+0.50 0.38 1.0 
+0.62 0.38 1.0 
+
+
+0.62 0.25 1.0 
+0.75 0.25 1.0 
+
+0.62 0.38 1.0 
+0.75 0.38 1.0 
+
+
+0.50 0.38 1.0 
+0.62 0.38 1.0 
+
+0.50 0.50 1.0 
+0.62 0.50 1.0 
+
+
+0.62 0.38 1.0 
+0.75 0.38 1.0 
+
+0.62 0.50 1.0 
+0.75 0.50 1.0 
+
+
+0.75 0.25 1.0 
+0.88 0.25 1.0 
+
+0.75 0.38 1.0 
+0.88 0.38 1.0 
+
+
+0.88 0.25 1.0 
+1.0 0.25 1.0 
+
+0.88 0.38 1.0 
+1.0 0.38 1.0 
+
+
+0.75 0.38 1.0 
+0.88 0.38 1.0 
+
+0.75 0.50 1.0 
+0.88 0.50 1.0 
+
+
+0.88 0.38 1.0 
+1.0 0.38 1.0 
+
+0.88 0.50 1.0 
+1.0 0.50 1.0 
+
+
+0.0 0.50 1.0 
+0.12 0.50 1.0 
+
+0.0 0.62 1.0 
+0.12 0.62 1.0 
+
+
+0.12 0.50 1.0 
+0.25 0.50 1.0 
+
+0.12 0.62 1.0 
+0.25 0.62 1.0 
+
+
+0.0 0.62 1.0 
+0.12 0.62 1.0 
+
+0.0 0.75 1.0 
+0.12 0.75 1.0 
+
+
+0.12 0.62 1.0 
+0.25 0.62 1.0 
+
+0.12 0.75 1.0 
+0.25 0.75 1.0 
+
+
+0.25 0.50 1.0 
+0.38 0.50 1.0 
+
+0.25 0.62 1.0 
+0.38 0.62 1.0 
+
+
+0.38 0.50 1.0 
+0.50 0.50 1.0 
+
+0.38 0.62 1.0 
+0.50 0.62 1.0 
+
+
+0.25 0.62 1.0 
+0.38 0.62 1.0 
+
+0.25 0.75 1.0 
+0.38 0.75 1.0 
+
+
+0.38 0.62 1.0 
+0.50 0.62 1.0 
+
+0.38 0.75 1.0 
+0.50 0.75 1.0 
+
+
+0.0 0.75 1.0 
+0.12 0.75 1.0 
+
+0.0 0.88 1.0 
+0.12 0.88 1.0 
+
+
+0.12 0.75 1.0 
+0.25 0.75 1.0 
+
+0.12 0.88 1.0 
+0.25 0.88 1.0 
+
+
+0.0 0.88 1.0 
+0.12 0.88 1.0 
+
+0.0 1.0 1.0 
+0.12 1.0 1.0 
+
+
+0.12 0.88 1.0 
+0.25 0.88 1.0 
+
+0.12 1.0 1.0 
+0.25 1.0 1.0 
+
+
+0.25 0.75 1.0 
+0.38 0.75 1.0 
+
+0.25 0.88 1.0 
+0.38 0.88 1.0 
+
+
+0.38 0.75 1.0 
+0.50 0.75 1.0 
+
+0.38 0.88 1.0 
+0.50 0.88 1.0 
+
+
+0.25 0.88 1.0 
+0.38 0.88 1.0 
+
+0.25 1.0 1.0 
+0.38 1.0 1.0 
+
+
+0.38 0.88 1.0 
+0.50 0.88 1.0 
+
+0.38 1.0 1.0 
+0.50 1.0 1.0 
+
+
+0.50 0.50 1.0 
+0.62 0.50 1.0 
+
+0.50 0.62 1.0 
+0.62 0.62 1.0 
+
+
+0.62 0.50 1.0 
+0.75 0.50 1.0 
+
+0.62 0.62 1.0 
+0.75 0.62 1.0 
+
+
+0.50 0.62 1.0 
+0.62 0.62 1.0 
+
+0.50 0.75 1.0 
+0.62 0.75 1.0 
+
+
+0.62 0.62 1.0 
+0.75 0.62 1.0 
+
+0.62 0.75 1.0 
+0.75 0.75 1.0 
+
+
+0.75 0.50 1.0 
+0.88 0.50 1.0 
+
+0.75 0.62 1.0 
+0.88 0.62 1.0 
+
+
+0.88 0.50 1.0 
+1.0 0.50 1.0 
+
+0.88 0.62 1.0 
+1.0 0.62 1.0 
+
+
+0.75 0.62 1.0 
+0.88 0.62 1.0 
+
+0.75 0.75 1.0 
+0.88 0.75 1.0 
+
+
+0.88 0.62 1.0 
+1.0 0.62 1.0 
+
+0.88 0.75 1.0 
+1.0 0.75 1.0 
+
+
+0.50 0.75 1.0 
+0.62 0.75 1.0 
+
+0.50 0.88 1.0 
+0.62 0.88 1.0 
+
+
+0.62 0.75 1.0 
+0.75 0.75 1.0 
+
+0.62 0.88 1.0 
+0.75 0.88 1.0 
+
+
+0.50 0.88 1.0 
+0.62 0.88 1.0 
+
+0.50 1.0 1.0 
+0.62 1.0 1.0 
+
+
+0.62 0.88 1.0 
+0.75 0.88 1.0 
+
+0.62 1.0 1.0 
+0.75 1.0 1.0 
+
+
+0.75 0.75 1.0 
+0.88 0.75 1.0 
+
+0.75 0.88 1.0 
+0.88 0.88 1.0 
+
+
+0.88 0.75 1.0 
+1.0 0.75 1.0 
+
+0.88 0.88 1.0 
+1.0 0.88 1.0 
+
+
+0.75 0.88 1.0 
+0.88 0.88 1.0 
+
+0.75 1.0 1.0 
+0.88 1.0 1.0 
+
+
+0.88 0.88 1.0 
+1.0 0.88 1.0 
+
+0.88 1.0 1.0 
+1.0 1.0 1.0 
+
+
+DEAL::Cycle 4:
+DEAL::   Number of active cells: 256
+DEAL::   Total number of cells: 341
+DEAL::   Number of degrees of freedom: 289
+DEAL:cg::Starting value 0.061
+DEAL:cg::Convergence step 7 value 0
+DEAL::   7 CG iterations needed to obtain convergence.
+# This file was generated by the deal.II library.
+
+
+#
+# For a description of the GNUPLOT format see the GNUPLOT manual.
+#
+# <x> <y> <solution> 
+0.0 0.0 1.0 
+0.062 0.0 1.0 
+
+0.0 0.062 1.0 
+0.062 0.062 1.0 
+
+
+0.062 0.0 1.0 
+0.12 0.0 1.0 
+
+0.062 0.062 1.0 
+0.12 0.062 1.0 
+
+
+0.0 0.062 1.0 
+0.062 0.062 1.0 
+
+0.0 0.12 1.0 
+0.062 0.12 1.0 
+
+
+0.062 0.062 1.0 
+0.12 0.062 1.0 
+
+0.062 0.12 1.0 
+0.12 0.12 1.0 
+
+
+0.12 0.0 1.0 
+0.19 0.0 1.0 
+
+0.12 0.062 1.0 
+0.19 0.062 1.0 
+
+
+0.19 0.0 1.0 
+0.25 0.0 1.0 
+
+0.19 0.062 1.0 
+0.25 0.062 1.0 
+
+
+0.12 0.062 1.0 
+0.19 0.062 1.0 
+
+0.12 0.12 1.0 
+0.19 0.12 1.0 
+
+
+0.19 0.062 1.0 
+0.25 0.062 1.0 
+
+0.19 0.12 1.0 
+0.25 0.12 1.0 
+
+
+0.0 0.12 1.0 
+0.062 0.12 1.0 
+
+0.0 0.19 1.0 
+0.062 0.19 1.0 
+
+
+0.062 0.12 1.0 
+0.12 0.12 1.0 
+
+0.062 0.19 1.0 
+0.12 0.19 1.0 
+
+
+0.0 0.19 1.0 
+0.062 0.19 1.0 
+
+0.0 0.25 1.0 
+0.062 0.25 1.0 
+
+
+0.062 0.19 1.0 
+0.12 0.19 1.0 
+
+0.062 0.25 1.0 
+0.12 0.25 1.0 
+
+
+0.12 0.12 1.0 
+0.19 0.12 1.0 
+
+0.12 0.19 1.0 
+0.19 0.19 1.0 
+
+
+0.19 0.12 1.0 
+0.25 0.12 1.0 
+
+0.19 0.19 1.0 
+0.25 0.19 1.0 
+
+
+0.12 0.19 1.0 
+0.19 0.19 1.0 
+
+0.12 0.25 1.0 
+0.19 0.25 1.0 
+
+
+0.19 0.19 1.0 
+0.25 0.19 1.0 
+
+0.19 0.25 1.0 
+0.25 0.25 1.0 
+
+
+0.25 0.0 1.0 
+0.31 0.0 1.0 
+
+0.25 0.062 1.0 
+0.31 0.062 1.0 
+
+
+0.31 0.0 1.0 
+0.38 0.0 1.0 
+
+0.31 0.062 1.0 
+0.38 0.062 1.0 
+
+
+0.25 0.062 1.0 
+0.31 0.062 1.0 
+
+0.25 0.12 1.0 
+0.31 0.12 1.0 
+
+
+0.31 0.062 1.0 
+0.38 0.062 1.0 
+
+0.31 0.12 1.0 
+0.38 0.12 1.0 
+
+
+0.38 0.0 1.0 
+0.44 0.0 1.0 
+
+0.38 0.062 1.0 
+0.44 0.062 1.0 
+
+
+0.44 0.0 1.0 
+0.50 0.0 1.0 
+
+0.44 0.062 1.0 
+0.50 0.062 1.0 
+
+
+0.38 0.062 1.0 
+0.44 0.062 1.0 
+
+0.38 0.12 1.0 
+0.44 0.12 1.0 
+
+
+0.44 0.062 1.0 
+0.50 0.062 1.0 
+
+0.44 0.12 1.0 
+0.50 0.12 1.0 
+
+
+0.25 0.12 1.0 
+0.31 0.12 1.0 
+
+0.25 0.19 1.0 
+0.31 0.19 1.0 
+
+
+0.31 0.12 1.0 
+0.38 0.12 1.0 
+
+0.31 0.19 1.0 
+0.38 0.19 1.0 
+
+
+0.25 0.19 1.0 
+0.31 0.19 1.0 
+
+0.25 0.25 1.0 
+0.31 0.25 1.0 
+
+
+0.31 0.19 1.0 
+0.38 0.19 1.0 
+
+0.31 0.25 1.0 
+0.38 0.25 1.0 
+
+
+0.38 0.12 1.0 
+0.44 0.12 1.0 
+
+0.38 0.19 1.0 
+0.44 0.19 1.0 
+
+
+0.44 0.12 1.0 
+0.50 0.12 1.0 
+
+0.44 0.19 1.0 
+0.50 0.19 1.0 
+
+
+0.38 0.19 1.0 
+0.44 0.19 1.0 
+
+0.38 0.25 1.0 
+0.44 0.25 1.0 
+
+
+0.44 0.19 1.0 
+0.50 0.19 1.0 
+
+0.44 0.25 1.0 
+0.50 0.25 1.0 
+
+
+0.0 0.25 1.0 
+0.062 0.25 1.0 
+
+0.0 0.31 1.0 
+0.062 0.31 1.0 
+
+
+0.062 0.25 1.0 
+0.12 0.25 1.0 
+
+0.062 0.31 1.0 
+0.12 0.31 1.0 
+
+
+0.0 0.31 1.0 
+0.062 0.31 1.0 
+
+0.0 0.38 1.0 
+0.062 0.38 1.0 
+
+
+0.062 0.31 1.0 
+0.12 0.31 1.0 
+
+0.062 0.38 1.0 
+0.12 0.38 1.0 
+
+
+0.12 0.25 1.0 
+0.19 0.25 1.0 
+
+0.12 0.31 1.0 
+0.19 0.31 1.0 
+
+
+0.19 0.25 1.0 
+0.25 0.25 1.0 
+
+0.19 0.31 1.0 
+0.25 0.31 1.0 
+
+
+0.12 0.31 1.0 
+0.19 0.31 1.0 
+
+0.12 0.38 1.0 
+0.19 0.38 1.0 
+
+
+0.19 0.31 1.0 
+0.25 0.31 1.0 
+
+0.19 0.38 1.0 
+0.25 0.38 1.0 
+
+
+0.0 0.38 1.0 
+0.062 0.38 1.0 
+
+0.0 0.44 1.0 
+0.062 0.44 1.0 
+
+
+0.062 0.38 1.0 
+0.12 0.38 1.0 
+
+0.062 0.44 1.0 
+0.12 0.44 1.0 
+
+
+0.0 0.44 1.0 
+0.062 0.44 1.0 
+
+0.0 0.50 1.0 
+0.062 0.50 1.0 
+
+
+0.062 0.44 1.0 
+0.12 0.44 1.0 
+
+0.062 0.50 1.0 
+0.12 0.50 1.0 
+
+
+0.12 0.38 1.0 
+0.19 0.38 1.0 
+
+0.12 0.44 1.0 
+0.19 0.44 1.0 
+
+
+0.19 0.38 1.0 
+0.25 0.38 1.0 
+
+0.19 0.44 1.0 
+0.25 0.44 1.0 
+
+
+0.12 0.44 1.0 
+0.19 0.44 1.0 
+
+0.12 0.50 1.0 
+0.19 0.50 1.0 
+
+
+0.19 0.44 1.0 
+0.25 0.44 1.0 
+
+0.19 0.50 1.0 
+0.25 0.50 1.0 
+
+
+0.25 0.25 1.0 
+0.31 0.25 1.0 
+
+0.25 0.31 1.0 
+0.31 0.31 1.0 
+
+
+0.31 0.25 1.0 
+0.38 0.25 1.0 
+
+0.31 0.31 1.0 
+0.38 0.31 1.0 
+
+
+0.25 0.31 1.0 
+0.31 0.31 1.0 
+
+0.25 0.38 1.0 
+0.31 0.38 1.0 
+
+
+0.31 0.31 1.0 
+0.38 0.31 1.0 
+
+0.31 0.38 1.0 
+0.38 0.38 1.0 
+
+
+0.38 0.25 1.0 
+0.44 0.25 1.0 
+
+0.38 0.31 1.0 
+0.44 0.31 1.0 
+
+
+0.44 0.25 1.0 
+0.50 0.25 1.0 
+
+0.44 0.31 1.0 
+0.50 0.31 1.0 
+
+
+0.38 0.31 1.0 
+0.44 0.31 1.0 
+
+0.38 0.38 1.0 
+0.44 0.38 1.0 
+
+
+0.44 0.31 1.0 
+0.50 0.31 1.0 
+
+0.44 0.38 1.0 
+0.50 0.38 1.0 
+
+
+0.25 0.38 1.0 
+0.31 0.38 1.0 
+
+0.25 0.44 1.0 
+0.31 0.44 1.0 
+
+
+0.31 0.38 1.0 
+0.38 0.38 1.0 
+
+0.31 0.44 1.0 
+0.38 0.44 1.0 
+
+
+0.25 0.44 1.0 
+0.31 0.44 1.0 
+
+0.25 0.50 1.0 
+0.31 0.50 1.0 
+
+
+0.31 0.44 1.0 
+0.38 0.44 1.0 
+
+0.31 0.50 1.0 
+0.38 0.50 1.0 
+
+
+0.38 0.38 1.0 
+0.44 0.38 1.0 
+
+0.38 0.44 1.0 
+0.44 0.44 1.0 
+
+
+0.44 0.38 1.0 
+0.50 0.38 1.0 
+
+0.44 0.44 1.0 
+0.50 0.44 1.0 
+
+
+0.38 0.44 1.0 
+0.44 0.44 1.0 
+
+0.38 0.50 1.0 
+0.44 0.50 1.0 
+
+
+0.44 0.44 1.0 
+0.50 0.44 1.0 
+
+0.44 0.50 1.0 
+0.50 0.50 1.0 
+
+
+0.50 0.0 1.0 
+0.56 0.0 1.0 
+
+0.50 0.062 1.0 
+0.56 0.062 1.0 
+
+
+0.56 0.0 1.0 
+0.62 0.0 1.0 
+
+0.56 0.062 1.0 
+0.62 0.062 1.0 
+
+
+0.50 0.062 1.0 
+0.56 0.062 1.0 
+
+0.50 0.12 1.0 
+0.56 0.12 1.0 
+
+
+0.56 0.062 1.0 
+0.62 0.062 1.0 
+
+0.56 0.12 1.0 
+0.62 0.12 1.0 
+
+
+0.62 0.0 1.0 
+0.69 0.0 1.0 
+
+0.62 0.062 1.0 
+0.69 0.062 1.0 
+
+
+0.69 0.0 1.0 
+0.75 0.0 1.0 
+
+0.69 0.062 1.0 
+0.75 0.062 1.0 
+
+
+0.62 0.062 1.0 
+0.69 0.062 1.0 
+
+0.62 0.12 1.0 
+0.69 0.12 1.0 
+
+
+0.69 0.062 1.0 
+0.75 0.062 1.0 
+
+0.69 0.12 1.0 
+0.75 0.12 1.0 
+
+
+0.50 0.12 1.0 
+0.56 0.12 1.0 
+
+0.50 0.19 1.0 
+0.56 0.19 1.0 
+
+
+0.56 0.12 1.0 
+0.62 0.12 1.0 
+
+0.56 0.19 1.0 
+0.62 0.19 1.0 
+
+
+0.50 0.19 1.0 
+0.56 0.19 1.0 
+
+0.50 0.25 1.0 
+0.56 0.25 1.0 
+
+
+0.56 0.19 1.0 
+0.62 0.19 1.0 
+
+0.56 0.25 1.0 
+0.62 0.25 1.0 
+
+
+0.62 0.12 1.0 
+0.69 0.12 1.0 
+
+0.62 0.19 1.0 
+0.69 0.19 1.0 
+
+
+0.69 0.12 1.0 
+0.75 0.12 1.0 
+
+0.69 0.19 1.0 
+0.75 0.19 1.0 
+
+
+0.62 0.19 1.0 
+0.69 0.19 1.0 
+
+0.62 0.25 1.0 
+0.69 0.25 1.0 
+
+
+0.69 0.19 1.0 
+0.75 0.19 1.0 
+
+0.69 0.25 1.0 
+0.75 0.25 1.0 
+
+
+0.75 0.0 1.0 
+0.81 0.0 1.0 
+
+0.75 0.062 1.0 
+0.81 0.062 1.0 
+
+
+0.81 0.0 1.0 
+0.88 0.0 1.0 
+
+0.81 0.062 1.0 
+0.88 0.062 1.0 
+
+
+0.75 0.062 1.0 
+0.81 0.062 1.0 
+
+0.75 0.12 1.0 
+0.81 0.12 1.0 
+
+
+0.81 0.062 1.0 
+0.88 0.062 1.0 
+
+0.81 0.12 1.0 
+0.88 0.12 1.0 
+
+
+0.88 0.0 1.0 
+0.94 0.0 1.0 
+
+0.88 0.062 1.0 
+0.94 0.062 1.0 
+
+
+0.94 0.0 1.0 
+1.0 0.0 1.0 
+
+0.94 0.062 1.0 
+1.0 0.062 1.0 
+
+
+0.88 0.062 1.0 
+0.94 0.062 1.0 
+
+0.88 0.12 1.0 
+0.94 0.12 1.0 
+
+
+0.94 0.062 1.0 
+1.0 0.062 1.0 
+
+0.94 0.12 1.0 
+1.0 0.12 1.0 
+
+
+0.75 0.12 1.0 
+0.81 0.12 1.0 
+
+0.75 0.19 1.0 
+0.81 0.19 1.0 
+
+
+0.81 0.12 1.0 
+0.88 0.12 1.0 
+
+0.81 0.19 1.0 
+0.88 0.19 1.0 
+
+
+0.75 0.19 1.0 
+0.81 0.19 1.0 
+
+0.75 0.25 1.0 
+0.81 0.25 1.0 
+
+
+0.81 0.19 1.0 
+0.88 0.19 1.0 
+
+0.81 0.25 1.0 
+0.88 0.25 1.0 
+
+
+0.88 0.12 1.0 
+0.94 0.12 1.0 
+
+0.88 0.19 1.0 
+0.94 0.19 1.0 
+
+
+0.94 0.12 1.0 
+1.0 0.12 1.0 
+
+0.94 0.19 1.0 
+1.0 0.19 1.0 
+
+
+0.88 0.19 1.0 
+0.94 0.19 1.0 
+
+0.88 0.25 1.0 
+0.94 0.25 1.0 
+
+
+0.94 0.19 1.0 
+1.0 0.19 1.0 
+
+0.94 0.25 1.0 
+1.0 0.25 1.0 
+
+
+0.50 0.25 1.0 
+0.56 0.25 1.0 
+
+0.50 0.31 1.0 
+0.56 0.31 1.0 
+
+
+0.56 0.25 1.0 
+0.62 0.25 1.0 
+
+0.56 0.31 1.0 
+0.62 0.31 1.0 
+
+
+0.50 0.31 1.0 
+0.56 0.31 1.0 
+
+0.50 0.38 1.0 
+0.56 0.38 1.0 
+
+
+0.56 0.31 1.0 
+0.62 0.31 1.0 
+
+0.56 0.38 1.0 
+0.62 0.38 1.0 
+
+
+0.62 0.25 1.0 
+0.69 0.25 1.0 
+
+0.62 0.31 1.0 
+0.69 0.31 1.0 
+
+
+0.69 0.25 1.0 
+0.75 0.25 1.0 
+
+0.69 0.31 1.0 
+0.75 0.31 1.0 
+
+
+0.62 0.31 1.0 
+0.69 0.31 1.0 
+
+0.62 0.38 1.0 
+0.69 0.38 1.0 
+
+
+0.69 0.31 1.0 
+0.75 0.31 1.0 
+
+0.69 0.38 1.0 
+0.75 0.38 1.0 
+
+
+0.50 0.38 1.0 
+0.56 0.38 1.0 
+
+0.50 0.44 1.0 
+0.56 0.44 1.0 
+
+
+0.56 0.38 1.0 
+0.62 0.38 1.0 
+
+0.56 0.44 1.0 
+0.62 0.44 1.0 
+
+
+0.50 0.44 1.0 
+0.56 0.44 1.0 
+
+0.50 0.50 1.0 
+0.56 0.50 1.0 
+
+
+0.56 0.44 1.0 
+0.62 0.44 1.0 
+
+0.56 0.50 1.0 
+0.62 0.50 1.0 
+
+
+0.62 0.38 1.0 
+0.69 0.38 1.0 
+
+0.62 0.44 1.0 
+0.69 0.44 1.0 
+
+
+0.69 0.38 1.0 
+0.75 0.38 1.0 
+
+0.69 0.44 1.0 
+0.75 0.44 1.0 
+
+
+0.62 0.44 1.0 
+0.69 0.44 1.0 
+
+0.62 0.50 1.0 
+0.69 0.50 1.0 
+
+
+0.69 0.44 1.0 
+0.75 0.44 1.0 
+
+0.69 0.50 1.0 
+0.75 0.50 1.0 
+
+
+0.75 0.25 1.0 
+0.81 0.25 1.0 
+
+0.75 0.31 1.0 
+0.81 0.31 1.0 
+
+
+0.81 0.25 1.0 
+0.88 0.25 1.0 
+
+0.81 0.31 1.0 
+0.88 0.31 1.0 
+
+
+0.75 0.31 1.0 
+0.81 0.31 1.0 
+
+0.75 0.38 1.0 
+0.81 0.38 1.0 
+
+
+0.81 0.31 1.0 
+0.88 0.31 1.0 
+
+0.81 0.38 1.0 
+0.88 0.38 1.0 
+
+
+0.88 0.25 1.0 
+0.94 0.25 1.0 
+
+0.88 0.31 1.0 
+0.94 0.31 1.0 
+
+
+0.94 0.25 1.0 
+1.0 0.25 1.0 
+
+0.94 0.31 1.0 
+1.0 0.31 1.0 
+
+
+0.88 0.31 1.0 
+0.94 0.31 1.0 
+
+0.88 0.38 1.0 
+0.94 0.38 1.0 
+
+
+0.94 0.31 1.0 
+1.0 0.31 1.0 
+
+0.94 0.38 1.0 
+1.0 0.38 1.0 
+
+
+0.75 0.38 1.0 
+0.81 0.38 1.0 
+
+0.75 0.44 1.0 
+0.81 0.44 1.0 
+
+
+0.81 0.38 1.0 
+0.88 0.38 1.0 
+
+0.81 0.44 1.0 
+0.88 0.44 1.0 
+
+
+0.75 0.44 1.0 
+0.81 0.44 1.0 
+
+0.75 0.50 1.0 
+0.81 0.50 1.0 
+
+
+0.81 0.44 1.0 
+0.88 0.44 1.0 
+
+0.81 0.50 1.0 
+0.88 0.50 1.0 
+
+
+0.88 0.38 1.0 
+0.94 0.38 1.0 
+
+0.88 0.44 1.0 
+0.94 0.44 1.0 
+
+
+0.94 0.38 1.0 
+1.0 0.38 1.0 
+
+0.94 0.44 1.0 
+1.0 0.44 1.0 
+
+
+0.88 0.44 1.0 
+0.94 0.44 1.0 
+
+0.88 0.50 1.0 
+0.94 0.50 1.0 
+
+
+0.94 0.44 1.0 
+1.0 0.44 1.0 
+
+0.94 0.50 1.0 
+1.0 0.50 1.0 
+
+
+0.0 0.50 1.0 
+0.062 0.50 1.0 
+
+0.0 0.56 1.0 
+0.062 0.56 1.0 
+
+
+0.062 0.50 1.0 
+0.12 0.50 1.0 
+
+0.062 0.56 1.0 
+0.12 0.56 1.0 
+
+
+0.0 0.56 1.0 
+0.062 0.56 1.0 
+
+0.0 0.62 1.0 
+0.062 0.62 1.0 
+
+
+0.062 0.56 1.0 
+0.12 0.56 1.0 
+
+0.062 0.62 1.0 
+0.12 0.62 1.0 
+
+
+0.12 0.50 1.0 
+0.19 0.50 1.0 
+
+0.12 0.56 1.0 
+0.19 0.56 1.0 
+
+
+0.19 0.50 1.0 
+0.25 0.50 1.0 
+
+0.19 0.56 1.0 
+0.25 0.56 1.0 
+
+
+0.12 0.56 1.0 
+0.19 0.56 1.0 
+
+0.12 0.62 1.0 
+0.19 0.62 1.0 
+
+
+0.19 0.56 1.0 
+0.25 0.56 1.0 
+
+0.19 0.62 1.0 
+0.25 0.62 1.0 
+
+
+0.0 0.62 1.0 
+0.062 0.62 1.0 
+
+0.0 0.69 1.0 
+0.062 0.69 1.0 
+
+
+0.062 0.62 1.0 
+0.12 0.62 1.0 
+
+0.062 0.69 1.0 
+0.12 0.69 1.0 
+
+
+0.0 0.69 1.0 
+0.062 0.69 1.0 
+
+0.0 0.75 1.0 
+0.062 0.75 1.0 
+
+
+0.062 0.69 1.0 
+0.12 0.69 1.0 
+
+0.062 0.75 1.0 
+0.12 0.75 1.0 
+
+
+0.12 0.62 1.0 
+0.19 0.62 1.0 
+
+0.12 0.69 1.0 
+0.19 0.69 1.0 
+
+
+0.19 0.62 1.0 
+0.25 0.62 1.0 
+
+0.19 0.69 1.0 
+0.25 0.69 1.0 
+
+
+0.12 0.69 1.0 
+0.19 0.69 1.0 
+
+0.12 0.75 1.0 
+0.19 0.75 1.0 
+
+
+0.19 0.69 1.0 
+0.25 0.69 1.0 
+
+0.19 0.75 1.0 
+0.25 0.75 1.0 
+
+
+0.25 0.50 1.0 
+0.31 0.50 1.0 
+
+0.25 0.56 1.0 
+0.31 0.56 1.0 
+
+
+0.31 0.50 1.0 
+0.38 0.50 1.0 
+
+0.31 0.56 1.0 
+0.38 0.56 1.0 
+
+
+0.25 0.56 1.0 
+0.31 0.56 1.0 
+
+0.25 0.62 1.0 
+0.31 0.62 1.0 
+
+
+0.31 0.56 1.0 
+0.38 0.56 1.0 
+
+0.31 0.62 1.0 
+0.38 0.62 1.0 
+
+
+0.38 0.50 1.0 
+0.44 0.50 1.0 
+
+0.38 0.56 1.0 
+0.44 0.56 1.0 
+
+
+0.44 0.50 1.0 
+0.50 0.50 1.0 
+
+0.44 0.56 1.0 
+0.50 0.56 1.0 
+
+
+0.38 0.56 1.0 
+0.44 0.56 1.0 
+
+0.38 0.62 1.0 
+0.44 0.62 1.0 
+
+
+0.44 0.56 1.0 
+0.50 0.56 1.0 
+
+0.44 0.62 1.0 
+0.50 0.62 1.0 
+
+
+0.25 0.62 1.0 
+0.31 0.62 1.0 
+
+0.25 0.69 1.0 
+0.31 0.69 1.0 
+
+
+0.31 0.62 1.0 
+0.38 0.62 1.0 
+
+0.31 0.69 1.0 
+0.38 0.69 1.0 
+
+
+0.25 0.69 1.0 
+0.31 0.69 1.0 
+
+0.25 0.75 1.0 
+0.31 0.75 1.0 
+
+
+0.31 0.69 1.0 
+0.38 0.69 1.0 
+
+0.31 0.75 1.0 
+0.38 0.75 1.0 
+
+
+0.38 0.62 1.0 
+0.44 0.62 1.0 
+
+0.38 0.69 1.0 
+0.44 0.69 1.0 
+
+
+0.44 0.62 1.0 
+0.50 0.62 1.0 
+
+0.44 0.69 1.0 
+0.50 0.69 1.0 
+
+
+0.38 0.69 1.0 
+0.44 0.69 1.0 
+
+0.38 0.75 1.0 
+0.44 0.75 1.0 
+
+
+0.44 0.69 1.0 
+0.50 0.69 1.0 
+
+0.44 0.75 1.0 
+0.50 0.75 1.0 
+
+
+0.0 0.75 1.0 
+0.062 0.75 1.0 
+
+0.0 0.81 1.0 
+0.062 0.81 1.0 
+
+
+0.062 0.75 1.0 
+0.12 0.75 1.0 
+
+0.062 0.81 1.0 
+0.12 0.81 1.0 
+
+
+0.0 0.81 1.0 
+0.062 0.81 1.0 
+
+0.0 0.88 1.0 
+0.062 0.88 1.0 
+
+
+0.062 0.81 1.0 
+0.12 0.81 1.0 
+
+0.062 0.88 1.0 
+0.12 0.88 1.0 
+
+
+0.12 0.75 1.0 
+0.19 0.75 1.0 
+
+0.12 0.81 1.0 
+0.19 0.81 1.0 
+
+
+0.19 0.75 1.0 
+0.25 0.75 1.0 
+
+0.19 0.81 1.0 
+0.25 0.81 1.0 
+
+
+0.12 0.81 1.0 
+0.19 0.81 1.0 
+
+0.12 0.88 1.0 
+0.19 0.88 1.0 
+
+
+0.19 0.81 1.0 
+0.25 0.81 1.0 
+
+0.19 0.88 1.0 
+0.25 0.88 1.0 
+
+
+0.0 0.88 1.0 
+0.062 0.88 1.0 
+
+0.0 0.94 1.0 
+0.062 0.94 1.0 
+
+
+0.062 0.88 1.0 
+0.12 0.88 1.0 
+
+0.062 0.94 1.0 
+0.12 0.94 1.0 
+
+
+0.0 0.94 1.0 
+0.062 0.94 1.0 
+
+0.0 1.0 1.0 
+0.062 1.0 1.0 
+
+
+0.062 0.94 1.0 
+0.12 0.94 1.0 
+
+0.062 1.0 1.0 
+0.12 1.0 1.0 
+
+
+0.12 0.88 1.0 
+0.19 0.88 1.0 
+
+0.12 0.94 1.0 
+0.19 0.94 1.0 
+
+
+0.19 0.88 1.0 
+0.25 0.88 1.0 
+
+0.19 0.94 1.0 
+0.25 0.94 1.0 
+
+
+0.12 0.94 1.0 
+0.19 0.94 1.0 
+
+0.12 1.0 1.0 
+0.19 1.0 1.0 
+
+
+0.19 0.94 1.0 
+0.25 0.94 1.0 
+
+0.19 1.0 1.0 
+0.25 1.0 1.0 
+
+
+0.25 0.75 1.0 
+0.31 0.75 1.0 
+
+0.25 0.81 1.0 
+0.31 0.81 1.0 
+
+
+0.31 0.75 1.0 
+0.38 0.75 1.0 
+
+0.31 0.81 1.0 
+0.38 0.81 1.0 
+
+
+0.25 0.81 1.0 
+0.31 0.81 1.0 
+
+0.25 0.88 1.0 
+0.31 0.88 1.0 
+
+
+0.31 0.81 1.0 
+0.38 0.81 1.0 
+
+0.31 0.88 1.0 
+0.38 0.88 1.0 
+
+
+0.38 0.75 1.0 
+0.44 0.75 1.0 
+
+0.38 0.81 1.0 
+0.44 0.81 1.0 
+
+
+0.44 0.75 1.0 
+0.50 0.75 1.0 
+
+0.44 0.81 1.0 
+0.50 0.81 1.0 
+
+
+0.38 0.81 1.0 
+0.44 0.81 1.0 
+
+0.38 0.88 1.0 
+0.44 0.88 1.0 
+
+
+0.44 0.81 1.0 
+0.50 0.81 1.0 
+
+0.44 0.88 1.0 
+0.50 0.88 1.0 
+
+
+0.25 0.88 1.0 
+0.31 0.88 1.0 
+
+0.25 0.94 1.0 
+0.31 0.94 1.0 
+
+
+0.31 0.88 1.0 
+0.38 0.88 1.0 
+
+0.31 0.94 1.0 
+0.38 0.94 1.0 
+
+
+0.25 0.94 1.0 
+0.31 0.94 1.0 
+
+0.25 1.0 1.0 
+0.31 1.0 1.0 
+
+
+0.31 0.94 1.0 
+0.38 0.94 1.0 
+
+0.31 1.0 1.0 
+0.38 1.0 1.0 
+
+
+0.38 0.88 1.0 
+0.44 0.88 1.0 
+
+0.38 0.94 1.0 
+0.44 0.94 1.0 
+
+
+0.44 0.88 1.0 
+0.50 0.88 1.0 
+
+0.44 0.94 1.0 
+0.50 0.94 1.0 
+
+
+0.38 0.94 1.0 
+0.44 0.94 1.0 
+
+0.38 1.0 1.0 
+0.44 1.0 1.0 
+
+
+0.44 0.94 1.0 
+0.50 0.94 1.0 
+
+0.44 1.0 1.0 
+0.50 1.0 1.0 
+
+
+0.50 0.50 1.0 
+0.56 0.50 1.0 
+
+0.50 0.56 1.0 
+0.56 0.56 1.0 
+
+
+0.56 0.50 1.0 
+0.62 0.50 1.0 
+
+0.56 0.56 1.0 
+0.62 0.56 1.0 
+
+
+0.50 0.56 1.0 
+0.56 0.56 1.0 
+
+0.50 0.62 1.0 
+0.56 0.62 1.0 
+
+
+0.56 0.56 1.0 
+0.62 0.56 1.0 
+
+0.56 0.62 1.0 
+0.62 0.62 1.0 
+
+
+0.62 0.50 1.0 
+0.69 0.50 1.0 
+
+0.62 0.56 1.0 
+0.69 0.56 1.0 
+
+
+0.69 0.50 1.0 
+0.75 0.50 1.0 
+
+0.69 0.56 1.0 
+0.75 0.56 1.0 
+
+
+0.62 0.56 1.0 
+0.69 0.56 1.0 
+
+0.62 0.62 1.0 
+0.69 0.62 1.0 
+
+
+0.69 0.56 1.0 
+0.75 0.56 1.0 
+
+0.69 0.62 1.0 
+0.75 0.62 1.0 
+
+
+0.50 0.62 1.0 
+0.56 0.62 1.0 
+
+0.50 0.69 1.0 
+0.56 0.69 1.0 
+
+
+0.56 0.62 1.0 
+0.62 0.62 1.0 
+
+0.56 0.69 1.0 
+0.62 0.69 1.0 
+
+
+0.50 0.69 1.0 
+0.56 0.69 1.0 
+
+0.50 0.75 1.0 
+0.56 0.75 1.0 
+
+
+0.56 0.69 1.0 
+0.62 0.69 1.0 
+
+0.56 0.75 1.0 
+0.62 0.75 1.0 
+
+
+0.62 0.62 1.0 
+0.69 0.62 1.0 
+
+0.62 0.69 1.0 
+0.69 0.69 1.0 
+
+
+0.69 0.62 1.0 
+0.75 0.62 1.0 
+
+0.69 0.69 1.0 
+0.75 0.69 1.0 
+
+
+0.62 0.69 1.0 
+0.69 0.69 1.0 
+
+0.62 0.75 1.0 
+0.69 0.75 1.0 
+
+
+0.69 0.69 1.0 
+0.75 0.69 1.0 
+
+0.69 0.75 1.0 
+0.75 0.75 1.0 
+
+
+0.75 0.50 1.0 
+0.81 0.50 1.0 
+
+0.75 0.56 1.0 
+0.81 0.56 1.0 
+
+
+0.81 0.50 1.0 
+0.88 0.50 1.0 
+
+0.81 0.56 1.0 
+0.88 0.56 1.0 
+
+
+0.75 0.56 1.0 
+0.81 0.56 1.0 
+
+0.75 0.62 1.0 
+0.81 0.62 1.0 
+
+
+0.81 0.56 1.0 
+0.88 0.56 1.0 
+
+0.81 0.62 1.0 
+0.88 0.62 1.0 
+
+
+0.88 0.50 1.0 
+0.94 0.50 1.0 
+
+0.88 0.56 1.0 
+0.94 0.56 1.0 
+
+
+0.94 0.50 1.0 
+1.0 0.50 1.0 
+
+0.94 0.56 1.0 
+1.0 0.56 1.0 
+
+
+0.88 0.56 1.0 
+0.94 0.56 1.0 
+
+0.88 0.62 1.0 
+0.94 0.62 1.0 
+
+
+0.94 0.56 1.0 
+1.0 0.56 1.0 
+
+0.94 0.62 1.0 
+1.0 0.62 1.0 
+
+
+0.75 0.62 1.0 
+0.81 0.62 1.0 
+
+0.75 0.69 1.0 
+0.81 0.69 1.0 
+
+
+0.81 0.62 1.0 
+0.88 0.62 1.0 
+
+0.81 0.69 1.0 
+0.88 0.69 1.0 
+
+
+0.75 0.69 1.0 
+0.81 0.69 1.0 
+
+0.75 0.75 1.0 
+0.81 0.75 1.0 
+
+
+0.81 0.69 1.0 
+0.88 0.69 1.0 
+
+0.81 0.75 1.0 
+0.88 0.75 1.0 
+
+
+0.88 0.62 1.0 
+0.94 0.62 1.0 
+
+0.88 0.69 1.0 
+0.94 0.69 1.0 
+
+
+0.94 0.62 1.0 
+1.0 0.62 1.0 
+
+0.94 0.69 1.0 
+1.0 0.69 1.0 
+
+
+0.88 0.69 1.0 
+0.94 0.69 1.0 
+
+0.88 0.75 1.0 
+0.94 0.75 1.0 
+
+
+0.94 0.69 1.0 
+1.0 0.69 1.0 
+
+0.94 0.75 1.0 
+1.0 0.75 1.0 
+
+
+0.50 0.75 1.0 
+0.56 0.75 1.0 
+
+0.50 0.81 1.0 
+0.56 0.81 1.0 
+
+
+0.56 0.75 1.0 
+0.62 0.75 1.0 
+
+0.56 0.81 1.0 
+0.62 0.81 1.0 
+
+
+0.50 0.81 1.0 
+0.56 0.81 1.0 
+
+0.50 0.88 1.0 
+0.56 0.88 1.0 
+
+
+0.56 0.81 1.0 
+0.62 0.81 1.0 
+
+0.56 0.88 1.0 
+0.62 0.88 1.0 
+
+
+0.62 0.75 1.0 
+0.69 0.75 1.0 
+
+0.62 0.81 1.0 
+0.69 0.81 1.0 
+
+
+0.69 0.75 1.0 
+0.75 0.75 1.0 
+
+0.69 0.81 1.0 
+0.75 0.81 1.0 
+
+
+0.62 0.81 1.0 
+0.69 0.81 1.0 
+
+0.62 0.88 1.0 
+0.69 0.88 1.0 
+
+
+0.69 0.81 1.0 
+0.75 0.81 1.0 
+
+0.69 0.88 1.0 
+0.75 0.88 1.0 
+
+
+0.50 0.88 1.0 
+0.56 0.88 1.0 
+
+0.50 0.94 1.0 
+0.56 0.94 1.0 
+
+
+0.56 0.88 1.0 
+0.62 0.88 1.0 
+
+0.56 0.94 1.0 
+0.62 0.94 1.0 
+
+
+0.50 0.94 1.0 
+0.56 0.94 1.0 
+
+0.50 1.0 1.0 
+0.56 1.0 1.0 
+
+
+0.56 0.94 1.0 
+0.62 0.94 1.0 
+
+0.56 1.0 1.0 
+0.62 1.0 1.0 
+
+
+0.62 0.88 1.0 
+0.69 0.88 1.0 
+
+0.62 0.94 1.0 
+0.69 0.94 1.0 
+
+
+0.69 0.88 1.0 
+0.75 0.88 1.0 
+
+0.69 0.94 1.0 
+0.75 0.94 1.0 
+
+
+0.62 0.94 1.0 
+0.69 0.94 1.0 
+
+0.62 1.0 1.0 
+0.69 1.0 1.0 
+
+
+0.69 0.94 1.0 
+0.75 0.94 1.0 
+
+0.69 1.0 1.0 
+0.75 1.0 1.0 
+
+
+0.75 0.75 1.0 
+0.81 0.75 1.0 
+
+0.75 0.81 1.0 
+0.81 0.81 1.0 
+
+
+0.81 0.75 1.0 
+0.88 0.75 1.0 
+
+0.81 0.81 1.0 
+0.88 0.81 1.0 
+
+
+0.75 0.81 1.0 
+0.81 0.81 1.0 
+
+0.75 0.88 1.0 
+0.81 0.88 1.0 
+
+
+0.81 0.81 1.0 
+0.88 0.81 1.0 
+
+0.81 0.88 1.0 
+0.88 0.88 1.0 
+
+
+0.88 0.75 1.0 
+0.94 0.75 1.0 
+
+0.88 0.81 1.0 
+0.94 0.81 1.0 
+
+
+0.94 0.75 1.0 
+1.0 0.75 1.0 
+
+0.94 0.81 1.0 
+1.0 0.81 1.0 
+
+
+0.88 0.81 1.0 
+0.94 0.81 1.0 
+
+0.88 0.88 1.0 
+0.94 0.88 1.0 
+
+
+0.94 0.81 1.0 
+1.0 0.81 1.0 
+
+0.94 0.88 1.0 
+1.0 0.88 1.0 
+
+
+0.75 0.88 1.0 
+0.81 0.88 1.0 
+
+0.75 0.94 1.0 
+0.81 0.94 1.0 
+
+
+0.81 0.88 1.0 
+0.88 0.88 1.0 
+
+0.81 0.94 1.0 
+0.88 0.94 1.0 
+
+
+0.75 0.94 1.0 
+0.81 0.94 1.0 
+
+0.75 1.0 1.0 
+0.81 1.0 1.0 
+
+
+0.81 0.94 1.0 
+0.88 0.94 1.0 
+
+0.81 1.0 1.0 
+0.88 1.0 1.0 
+
+
+0.88 0.88 1.0 
+0.94 0.88 1.0 
+
+0.88 0.94 1.0 
+0.94 0.94 1.0 
+
+
+0.94 0.88 1.0 
+1.0 0.88 1.0 
+
+0.94 0.94 1.0 
+1.0 0.94 1.0 
+
+
+0.88 0.94 1.0 
+0.94 0.94 1.0 
+
+0.88 1.0 1.0 
+0.94 1.0 1.0 
+
+
+0.94 0.94 1.0 
+1.0 0.94 1.0 
+
+0.94 1.0 1.0 
+1.0 1.0 1.0 
+
+
+DEAL::Cycle 5:
+DEAL::   Number of active cells: 1024
+DEAL::   Total number of cells: 1365
+DEAL::   Number of degrees of freedom: 1089
+DEAL:cg::Starting value 0.031
+DEAL:cg::Convergence step 7 value 0
+DEAL::   7 CG iterations needed to obtain convergence.
+# This file was generated by the deal.II library.
+
+
+#
+# For a description of the GNUPLOT format see the GNUPLOT manual.
+#
+# <x> <y> <solution> 
+0.0 0.0 1.0 
+0.031 0.0 1.0 
+
+0.0 0.031 1.0 
+0.031 0.031 1.0 
+
+
+0.031 0.0 1.0 
+0.062 0.0 1.0 
+
+0.031 0.031 1.0 
+0.062 0.031 1.0 
+
+
+0.0 0.031 1.0 
+0.031 0.031 1.0 
+
+0.0 0.062 1.0 
+0.031 0.062 1.0 
+
+
+0.031 0.031 1.0 
+0.062 0.031 1.0 
+
+0.031 0.062 1.0 
+0.062 0.062 1.0 
+
+
+0.062 0.0 1.0 
+0.094 0.0 1.0 
+
+0.062 0.031 1.0 
+0.094 0.031 1.0 
+
+
+0.094 0.0 1.0 
+0.12 0.0 1.0 
+
+0.094 0.031 1.0 
+0.12 0.031 1.0 
+
+
+0.062 0.031 1.0 
+0.094 0.031 1.0 
+
+0.062 0.062 1.0 
+0.094 0.062 1.0 
+
+
+0.094 0.031 1.0 
+0.12 0.031 1.0 
+
+0.094 0.062 1.0 
+0.12 0.062 1.0 
+
+
+0.0 0.062 1.0 
+0.031 0.062 1.0 
+
+0.0 0.094 1.0 
+0.031 0.094 1.0 
+
+
+0.031 0.062 1.0 
+0.062 0.062 1.0 
+
+0.031 0.094 1.0 
+0.062 0.094 1.0 
+
+
+0.0 0.094 1.0 
+0.031 0.094 1.0 
+
+0.0 0.12 1.0 
+0.031 0.12 1.0 
+
+
+0.031 0.094 1.0 
+0.062 0.094 1.0 
+
+0.031 0.12 1.0 
+0.062 0.12 1.0 
+
+
+0.062 0.062 1.0 
+0.094 0.062 1.0 
+
+0.062 0.094 1.0 
+0.094 0.094 1.0 
+
+
+0.094 0.062 1.0 
+0.12 0.062 1.0 
+
+0.094 0.094 1.0 
+0.12 0.094 1.0 
+
+
+0.062 0.094 1.0 
+0.094 0.094 1.0 
+
+0.062 0.12 1.0 
+0.094 0.12 1.0 
+
+
+0.094 0.094 1.0 
+0.12 0.094 1.0 
+
+0.094 0.12 1.0 
+0.12 0.12 1.0 
+
+
+0.12 0.0 1.0 
+0.16 0.0 1.0 
+
+0.12 0.031 1.0 
+0.16 0.031 1.0 
+
+
+0.16 0.0 1.0 
+0.19 0.0 1.0 
+
+0.16 0.031 1.0 
+0.19 0.031 1.0 
+
+
+0.12 0.031 1.0 
+0.16 0.031 1.0 
+
+0.12 0.062 1.0 
+0.16 0.062 1.0 
+
+
+0.16 0.031 1.0 
+0.19 0.031 1.0 
+
+0.16 0.062 1.0 
+0.19 0.062 1.0 
+
+
+0.19 0.0 1.0 
+0.22 0.0 1.0 
+
+0.19 0.031 1.0 
+0.22 0.031 1.0 
+
+
+0.22 0.0 1.0 
+0.25 0.0 1.0 
+
+0.22 0.031 1.0 
+0.25 0.031 1.0 
+
+
+0.19 0.031 1.0 
+0.22 0.031 1.0 
+
+0.19 0.062 1.0 
+0.22 0.062 1.0 
+
+
+0.22 0.031 1.0 
+0.25 0.031 1.0 
+
+0.22 0.062 1.0 
+0.25 0.062 1.0 
+
+
+0.12 0.062 1.0 
+0.16 0.062 1.0 
+
+0.12 0.094 1.0 
+0.16 0.094 1.0 
+
+
+0.16 0.062 1.0 
+0.19 0.062 1.0 
+
+0.16 0.094 1.0 
+0.19 0.094 1.0 
+
+
+0.12 0.094 1.0 
+0.16 0.094 1.0 
+
+0.12 0.12 1.0 
+0.16 0.12 1.0 
+
+
+0.16 0.094 1.0 
+0.19 0.094 1.0 
+
+0.16 0.12 1.0 
+0.19 0.12 1.0 
+
+
+0.19 0.062 1.0 
+0.22 0.062 1.0 
+
+0.19 0.094 1.0 
+0.22 0.094 1.0 
+
+
+0.22 0.062 1.0 
+0.25 0.062 1.0 
+
+0.22 0.094 1.0 
+0.25 0.094 1.0 
+
+
+0.19 0.094 1.0 
+0.22 0.094 1.0 
+
+0.19 0.12 1.0 
+0.22 0.12 1.0 
+
+
+0.22 0.094 1.0 
+0.25 0.094 1.0 
+
+0.22 0.12 1.0 
+0.25 0.12 1.0 
+
+
+0.0 0.12 1.0 
+0.031 0.12 1.0 
+
+0.0 0.16 1.0 
+0.031 0.16 1.0 
+
+
+0.031 0.12 1.0 
+0.062 0.12 1.0 
+
+0.031 0.16 1.0 
+0.062 0.16 1.0 
+
+
+0.0 0.16 1.0 
+0.031 0.16 1.0 
+
+0.0 0.19 1.0 
+0.031 0.19 1.0 
+
+
+0.031 0.16 1.0 
+0.062 0.16 1.0 
+
+0.031 0.19 1.0 
+0.062 0.19 1.0 
+
+
+0.062 0.12 1.0 
+0.094 0.12 1.0 
+
+0.062 0.16 1.0 
+0.094 0.16 1.0 
+
+
+0.094 0.12 1.0 
+0.12 0.12 1.0 
+
+0.094 0.16 1.0 
+0.12 0.16 1.0 
+
+
+0.062 0.16 1.0 
+0.094 0.16 1.0 
+
+0.062 0.19 1.0 
+0.094 0.19 1.0 
+
+
+0.094 0.16 1.0 
+0.12 0.16 1.0 
+
+0.094 0.19 1.0 
+0.12 0.19 1.0 
+
+
+0.0 0.19 1.0 
+0.031 0.19 1.0 
+
+0.0 0.22 1.0 
+0.031 0.22 1.0 
+
+
+0.031 0.19 1.0 
+0.062 0.19 1.0 
+
+0.031 0.22 1.0 
+0.062 0.22 1.0 
+
+
+0.0 0.22 1.0 
+0.031 0.22 1.0 
+
+0.0 0.25 1.0 
+0.031 0.25 1.0 
+
+
+0.031 0.22 1.0 
+0.062 0.22 1.0 
+
+0.031 0.25 1.0 
+0.062 0.25 1.0 
+
+
+0.062 0.19 1.0 
+0.094 0.19 1.0 
+
+0.062 0.22 1.0 
+0.094 0.22 1.0 
+
+
+0.094 0.19 1.0 
+0.12 0.19 1.0 
+
+0.094 0.22 1.0 
+0.12 0.22 1.0 
+
+
+0.062 0.22 1.0 
+0.094 0.22 1.0 
+
+0.062 0.25 1.0 
+0.094 0.25 1.0 
+
+
+0.094 0.22 1.0 
+0.12 0.22 1.0 
+
+0.094 0.25 1.0 
+0.12 0.25 1.0 
+
+
+0.12 0.12 1.0 
+0.16 0.12 1.0 
+
+0.12 0.16 1.0 
+0.16 0.16 1.0 
+
+
+0.16 0.12 1.0 
+0.19 0.12 1.0 
+
+0.16 0.16 1.0 
+0.19 0.16 1.0 
+
+
+0.12 0.16 1.0 
+0.16 0.16 1.0 
+
+0.12 0.19 1.0 
+0.16 0.19 1.0 
+
+
+0.16 0.16 1.0 
+0.19 0.16 1.0 
+
+0.16 0.19 1.0 
+0.19 0.19 1.0 
+
+
+0.19 0.12 1.0 
+0.22 0.12 1.0 
+
+0.19 0.16 1.0 
+0.22 0.16 1.0 
+
+
+0.22 0.12 1.0 
+0.25 0.12 1.0 
+
+0.22 0.16 1.0 
+0.25 0.16 1.0 
+
+
+0.19 0.16 1.0 
+0.22 0.16 1.0 
+
+0.19 0.19 1.0 
+0.22 0.19 1.0 
+
+
+0.22 0.16 1.0 
+0.25 0.16 1.0 
+
+0.22 0.19 1.0 
+0.25 0.19 1.0 
+
+
+0.12 0.19 1.0 
+0.16 0.19 1.0 
+
+0.12 0.22 1.0 
+0.16 0.22 1.0 
+
+
+0.16 0.19 1.0 
+0.19 0.19 1.0 
+
+0.16 0.22 1.0 
+0.19 0.22 1.0 
+
+
+0.12 0.22 1.0 
+0.16 0.22 1.0 
+
+0.12 0.25 1.0 
+0.16 0.25 1.0 
+
+
+0.16 0.22 1.0 
+0.19 0.22 1.0 
+
+0.16 0.25 1.0 
+0.19 0.25 1.0 
+
+
+0.19 0.19 1.0 
+0.22 0.19 1.0 
+
+0.19 0.22 1.0 
+0.22 0.22 1.0 
+
+
+0.22 0.19 1.0 
+0.25 0.19 1.0 
+
+0.22 0.22 1.0 
+0.25 0.22 1.0 
+
+
+0.19 0.22 1.0 
+0.22 0.22 1.0 
+
+0.19 0.25 1.0 
+0.22 0.25 1.0 
+
+
+0.22 0.22 1.0 
+0.25 0.22 1.0 
+
+0.22 0.25 1.0 
+0.25 0.25 1.0 
+
+
+0.25 0.0 1.0 
+0.28 0.0 1.0 
+
+0.25 0.031 1.0 
+0.28 0.031 1.0 
+
+
+0.28 0.0 1.0 
+0.31 0.0 1.0 
+
+0.28 0.031 1.0 
+0.31 0.031 1.0 
+
+
+0.25 0.031 1.0 
+0.28 0.031 1.0 
+
+0.25 0.062 1.0 
+0.28 0.062 1.0 
+
+
+0.28 0.031 1.0 
+0.31 0.031 1.0 
+
+0.28 0.062 1.0 
+0.31 0.062 1.0 
+
+
+0.31 0.0 1.0 
+0.34 0.0 1.0 
+
+0.31 0.031 1.0 
+0.34 0.031 1.0 
+
+
+0.34 0.0 1.0 
+0.38 0.0 1.0 
+
+0.34 0.031 1.0 
+0.38 0.031 1.0 
+
+
+0.31 0.031 1.0 
+0.34 0.031 1.0 
+
+0.31 0.062 1.0 
+0.34 0.062 1.0 
+
+
+0.34 0.031 1.0 
+0.38 0.031 1.0 
+
+0.34 0.062 1.0 
+0.38 0.062 1.0 
+
+
+0.25 0.062 1.0 
+0.28 0.062 1.0 
+
+0.25 0.094 1.0 
+0.28 0.094 1.0 
+
+
+0.28 0.062 1.0 
+0.31 0.062 1.0 
+
+0.28 0.094 1.0 
+0.31 0.094 1.0 
+
+
+0.25 0.094 1.0 
+0.28 0.094 1.0 
+
+0.25 0.12 1.0 
+0.28 0.12 1.0 
+
+
+0.28 0.094 1.0 
+0.31 0.094 1.0 
+
+0.28 0.12 1.0 
+0.31 0.12 1.0 
+
+
+0.31 0.062 1.0 
+0.34 0.062 1.0 
+
+0.31 0.094 1.0 
+0.34 0.094 1.0 
+
+
+0.34 0.062 1.0 
+0.38 0.062 1.0 
+
+0.34 0.094 1.0 
+0.38 0.094 1.0 
+
+
+0.31 0.094 1.0 
+0.34 0.094 1.0 
+
+0.31 0.12 1.0 
+0.34 0.12 1.0 
+
+
+0.34 0.094 1.0 
+0.38 0.094 1.0 
+
+0.34 0.12 1.0 
+0.38 0.12 1.0 
+
+
+0.38 0.0 1.0 
+0.41 0.0 1.0 
+
+0.38 0.031 1.0 
+0.41 0.031 1.0 
+
+
+0.41 0.0 1.0 
+0.44 0.0 1.0 
+
+0.41 0.031 1.0 
+0.44 0.031 1.0 
+
+
+0.38 0.031 1.0 
+0.41 0.031 1.0 
+
+0.38 0.062 1.0 
+0.41 0.062 1.0 
+
+
+0.41 0.031 1.0 
+0.44 0.031 1.0 
+
+0.41 0.062 1.0 
+0.44 0.062 1.0 
+
+
+0.44 0.0 1.0 
+0.47 0.0 1.0 
+
+0.44 0.031 1.0 
+0.47 0.031 1.0 
+
+
+0.47 0.0 1.0 
+0.50 0.0 1.0 
+
+0.47 0.031 1.0 
+0.50 0.031 1.0 
+
+
+0.44 0.031 1.0 
+0.47 0.031 1.0 
+
+0.44 0.062 1.0 
+0.47 0.062 1.0 
+
+
+0.47 0.031 1.0 
+0.50 0.031 1.0 
+
+0.47 0.062 1.0 
+0.50 0.062 1.0 
+
+
+0.38 0.062 1.0 
+0.41 0.062 1.0 
+
+0.38 0.094 1.0 
+0.41 0.094 1.0 
+
+
+0.41 0.062 1.0 
+0.44 0.062 1.0 
+
+0.41 0.094 1.0 
+0.44 0.094 1.0 
+
+
+0.38 0.094 1.0 
+0.41 0.094 1.0 
+
+0.38 0.12 1.0 
+0.41 0.12 1.0 
+
+
+0.41 0.094 1.0 
+0.44 0.094 1.0 
+
+0.41 0.12 1.0 
+0.44 0.12 1.0 
+
+
+0.44 0.062 1.0 
+0.47 0.062 1.0 
+
+0.44 0.094 1.0 
+0.47 0.094 1.0 
+
+
+0.47 0.062 1.0 
+0.50 0.062 1.0 
+
+0.47 0.094 1.0 
+0.50 0.094 1.0 
+
+
+0.44 0.094 1.0 
+0.47 0.094 1.0 
+
+0.44 0.12 1.0 
+0.47 0.12 1.0 
+
+
+0.47 0.094 1.0 
+0.50 0.094 1.0 
+
+0.47 0.12 1.0 
+0.50 0.12 1.0 
+
+
+0.25 0.12 1.0 
+0.28 0.12 1.0 
+
+0.25 0.16 1.0 
+0.28 0.16 1.0 
+
+
+0.28 0.12 1.0 
+0.31 0.12 1.0 
+
+0.28 0.16 1.0 
+0.31 0.16 1.0 
+
+
+0.25 0.16 1.0 
+0.28 0.16 1.0 
+
+0.25 0.19 1.0 
+0.28 0.19 1.0 
+
+
+0.28 0.16 1.0 
+0.31 0.16 1.0 
+
+0.28 0.19 1.0 
+0.31 0.19 1.0 
+
+
+0.31 0.12 1.0 
+0.34 0.12 1.0 
+
+0.31 0.16 1.0 
+0.34 0.16 1.0 
+
+
+0.34 0.12 1.0 
+0.38 0.12 1.0 
+
+0.34 0.16 1.0 
+0.38 0.16 1.0 
+
+
+0.31 0.16 1.0 
+0.34 0.16 1.0 
+
+0.31 0.19 1.0 
+0.34 0.19 1.0 
+
+
+0.34 0.16 1.0 
+0.38 0.16 1.0 
+
+0.34 0.19 1.0 
+0.38 0.19 1.0 
+
+
+0.25 0.19 1.0 
+0.28 0.19 1.0 
+
+0.25 0.22 1.0 
+0.28 0.22 1.0 
+
+
+0.28 0.19 1.0 
+0.31 0.19 1.0 
+
+0.28 0.22 1.0 
+0.31 0.22 1.0 
+
+
+0.25 0.22 1.0 
+0.28 0.22 1.0 
+
+0.25 0.25 1.0 
+0.28 0.25 1.0 
+
+
+0.28 0.22 1.0 
+0.31 0.22 1.0 
+
+0.28 0.25 1.0 
+0.31 0.25 1.0 
+
+
+0.31 0.19 1.0 
+0.34 0.19 1.0 
+
+0.31 0.22 1.0 
+0.34 0.22 1.0 
+
+
+0.34 0.19 1.0 
+0.38 0.19 1.0 
+
+0.34 0.22 1.0 
+0.38 0.22 1.0 
+
+
+0.31 0.22 1.0 
+0.34 0.22 1.0 
+
+0.31 0.25 1.0 
+0.34 0.25 1.0 
+
+
+0.34 0.22 1.0 
+0.38 0.22 1.0 
+
+0.34 0.25 1.0 
+0.38 0.25 1.0 
+
+
+0.38 0.12 1.0 
+0.41 0.12 1.0 
+
+0.38 0.16 1.0 
+0.41 0.16 1.0 
+
+
+0.41 0.12 1.0 
+0.44 0.12 1.0 
+
+0.41 0.16 1.0 
+0.44 0.16 1.0 
+
+
+0.38 0.16 1.0 
+0.41 0.16 1.0 
+
+0.38 0.19 1.0 
+0.41 0.19 1.0 
+
+
+0.41 0.16 1.0 
+0.44 0.16 1.0 
+
+0.41 0.19 1.0 
+0.44 0.19 1.0 
+
+
+0.44 0.12 1.0 
+0.47 0.12 1.0 
+
+0.44 0.16 1.0 
+0.47 0.16 1.0 
+
+
+0.47 0.12 1.0 
+0.50 0.12 1.0 
+
+0.47 0.16 1.0 
+0.50 0.16 1.0 
+
+
+0.44 0.16 1.0 
+0.47 0.16 1.0 
+
+0.44 0.19 1.0 
+0.47 0.19 1.0 
+
+
+0.47 0.16 1.0 
+0.50 0.16 1.0 
+
+0.47 0.19 1.0 
+0.50 0.19 1.0 
+
+
+0.38 0.19 1.0 
+0.41 0.19 1.0 
+
+0.38 0.22 1.0 
+0.41 0.22 1.0 
+
+
+0.41 0.19 1.0 
+0.44 0.19 1.0 
+
+0.41 0.22 1.0 
+0.44 0.22 1.0 
+
+
+0.38 0.22 1.0 
+0.41 0.22 1.0 
+
+0.38 0.25 1.0 
+0.41 0.25 1.0 
+
+
+0.41 0.22 1.0 
+0.44 0.22 1.0 
+
+0.41 0.25 1.0 
+0.44 0.25 1.0 
+
+
+0.44 0.19 1.0 
+0.47 0.19 1.0 
+
+0.44 0.22 1.0 
+0.47 0.22 1.0 
+
+
+0.47 0.19 1.0 
+0.50 0.19 1.0 
+
+0.47 0.22 1.0 
+0.50 0.22 1.0 
+
+
+0.44 0.22 1.0 
+0.47 0.22 1.0 
+
+0.44 0.25 1.0 
+0.47 0.25 1.0 
+
+
+0.47 0.22 1.0 
+0.50 0.22 1.0 
+
+0.47 0.25 1.0 
+0.50 0.25 1.0 
+
+
+0.0 0.25 1.0 
+0.031 0.25 1.0 
+
+0.0 0.28 1.0 
+0.031 0.28 1.0 
+
+
+0.031 0.25 1.0 
+0.062 0.25 1.0 
+
+0.031 0.28 1.0 
+0.062 0.28 1.0 
+
+
+0.0 0.28 1.0 
+0.031 0.28 1.0 
+
+0.0 0.31 1.0 
+0.031 0.31 1.0 
+
+
+0.031 0.28 1.0 
+0.062 0.28 1.0 
+
+0.031 0.31 1.0 
+0.062 0.31 1.0 
+
+
+0.062 0.25 1.0 
+0.094 0.25 1.0 
+
+0.062 0.28 1.0 
+0.094 0.28 1.0 
+
+
+0.094 0.25 1.0 
+0.12 0.25 1.0 
+
+0.094 0.28 1.0 
+0.12 0.28 1.0 
+
+
+0.062 0.28 1.0 
+0.094 0.28 1.0 
+
+0.062 0.31 1.0 
+0.094 0.31 1.0 
+
+
+0.094 0.28 1.0 
+0.12 0.28 1.0 
+
+0.094 0.31 1.0 
+0.12 0.31 1.0 
+
+
+0.0 0.31 1.0 
+0.031 0.31 1.0 
+
+0.0 0.34 1.0 
+0.031 0.34 1.0 
+
+
+0.031 0.31 1.0 
+0.062 0.31 1.0 
+
+0.031 0.34 1.0 
+0.062 0.34 1.0 
+
+
+0.0 0.34 1.0 
+0.031 0.34 1.0 
+
+0.0 0.38 1.0 
+0.031 0.38 1.0 
+
+
+0.031 0.34 1.0 
+0.062 0.34 1.0 
+
+0.031 0.38 1.0 
+0.062 0.38 1.0 
+
+
+0.062 0.31 1.0 
+0.094 0.31 1.0 
+
+0.062 0.34 1.0 
+0.094 0.34 1.0 
+
+
+0.094 0.31 1.0 
+0.12 0.31 1.0 
+
+0.094 0.34 1.0 
+0.12 0.34 1.0 
+
+
+0.062 0.34 1.0 
+0.094 0.34 1.0 
+
+0.062 0.38 1.0 
+0.094 0.38 1.0 
+
+
+0.094 0.34 1.0 
+0.12 0.34 1.0 
+
+0.094 0.38 1.0 
+0.12 0.38 1.0 
+
+
+0.12 0.25 1.0 
+0.16 0.25 1.0 
+
+0.12 0.28 1.0 
+0.16 0.28 1.0 
+
+
+0.16 0.25 1.0 
+0.19 0.25 1.0 
+
+0.16 0.28 1.0 
+0.19 0.28 1.0 
+
+
+0.12 0.28 1.0 
+0.16 0.28 1.0 
+
+0.12 0.31 1.0 
+0.16 0.31 1.0 
+
+
+0.16 0.28 1.0 
+0.19 0.28 1.0 
+
+0.16 0.31 1.0 
+0.19 0.31 1.0 
+
+
+0.19 0.25 1.0 
+0.22 0.25 1.0 
+
+0.19 0.28 1.0 
+0.22 0.28 1.0 
+
+
+0.22 0.25 1.0 
+0.25 0.25 1.0 
+
+0.22 0.28 1.0 
+0.25 0.28 1.0 
+
+
+0.19 0.28 1.0 
+0.22 0.28 1.0 
+
+0.19 0.31 1.0 
+0.22 0.31 1.0 
+
+
+0.22 0.28 1.0 
+0.25 0.28 1.0 
+
+0.22 0.31 1.0 
+0.25 0.31 1.0 
+
+
+0.12 0.31 1.0 
+0.16 0.31 1.0 
+
+0.12 0.34 1.0 
+0.16 0.34 1.0 
+
+
+0.16 0.31 1.0 
+0.19 0.31 1.0 
+
+0.16 0.34 1.0 
+0.19 0.34 1.0 
+
+
+0.12 0.34 1.0 
+0.16 0.34 1.0 
+
+0.12 0.38 1.0 
+0.16 0.38 1.0 
+
+
+0.16 0.34 1.0 
+0.19 0.34 1.0 
+
+0.16 0.38 1.0 
+0.19 0.38 1.0 
+
+
+0.19 0.31 1.0 
+0.22 0.31 1.0 
+
+0.19 0.34 1.0 
+0.22 0.34 1.0 
+
+
+0.22 0.31 1.0 
+0.25 0.31 1.0 
+
+0.22 0.34 1.0 
+0.25 0.34 1.0 
+
+
+0.19 0.34 1.0 
+0.22 0.34 1.0 
+
+0.19 0.38 1.0 
+0.22 0.38 1.0 
+
+
+0.22 0.34 1.0 
+0.25 0.34 1.0 
+
+0.22 0.38 1.0 
+0.25 0.38 1.0 
+
+
+0.0 0.38 1.0 
+0.031 0.38 1.0 
+
+0.0 0.41 1.0 
+0.031 0.41 1.0 
+
+
+0.031 0.38 1.0 
+0.062 0.38 1.0 
+
+0.031 0.41 1.0 
+0.062 0.41 1.0 
+
+
+0.0 0.41 1.0 
+0.031 0.41 1.0 
+
+0.0 0.44 1.0 
+0.031 0.44 1.0 
+
+
+0.031 0.41 1.0 
+0.062 0.41 1.0 
+
+0.031 0.44 1.0 
+0.062 0.44 1.0 
+
+
+0.062 0.38 1.0 
+0.094 0.38 1.0 
+
+0.062 0.41 1.0 
+0.094 0.41 1.0 
+
+
+0.094 0.38 1.0 
+0.12 0.38 1.0 
+
+0.094 0.41 1.0 
+0.12 0.41 1.0 
+
+
+0.062 0.41 1.0 
+0.094 0.41 1.0 
+
+0.062 0.44 1.0 
+0.094 0.44 1.0 
+
+
+0.094 0.41 1.0 
+0.12 0.41 1.0 
+
+0.094 0.44 1.0 
+0.12 0.44 1.0 
+
+
+0.0 0.44 1.0 
+0.031 0.44 1.0 
+
+0.0 0.47 1.0 
+0.031 0.47 1.0 
+
+
+0.031 0.44 1.0 
+0.062 0.44 1.0 
+
+0.031 0.47 1.0 
+0.062 0.47 1.0 
+
+
+0.0 0.47 1.0 
+0.031 0.47 1.0 
+
+0.0 0.50 1.0 
+0.031 0.50 1.0 
+
+
+0.031 0.47 1.0 
+0.062 0.47 1.0 
+
+0.031 0.50 1.0 
+0.062 0.50 1.0 
+
+
+0.062 0.44 1.0 
+0.094 0.44 1.0 
+
+0.062 0.47 1.0 
+0.094 0.47 1.0 
+
+
+0.094 0.44 1.0 
+0.12 0.44 1.0 
+
+0.094 0.47 1.0 
+0.12 0.47 1.0 
+
+
+0.062 0.47 1.0 
+0.094 0.47 1.0 
+
+0.062 0.50 1.0 
+0.094 0.50 1.0 
+
+
+0.094 0.47 1.0 
+0.12 0.47 1.0 
+
+0.094 0.50 1.0 
+0.12 0.50 1.0 
+
+
+0.12 0.38 1.0 
+0.16 0.38 1.0 
+
+0.12 0.41 1.0 
+0.16 0.41 1.0 
+
+
+0.16 0.38 1.0 
+0.19 0.38 1.0 
+
+0.16 0.41 1.0 
+0.19 0.41 1.0 
+
+
+0.12 0.41 1.0 
+0.16 0.41 1.0 
+
+0.12 0.44 1.0 
+0.16 0.44 1.0 
+
+
+0.16 0.41 1.0 
+0.19 0.41 1.0 
+
+0.16 0.44 1.0 
+0.19 0.44 1.0 
+
+
+0.19 0.38 1.0 
+0.22 0.38 1.0 
+
+0.19 0.41 1.0 
+0.22 0.41 1.0 
+
+
+0.22 0.38 1.0 
+0.25 0.38 1.0 
+
+0.22 0.41 1.0 
+0.25 0.41 1.0 
+
+
+0.19 0.41 1.0 
+0.22 0.41 1.0 
+
+0.19 0.44 1.0 
+0.22 0.44 1.0 
+
+
+0.22 0.41 1.0 
+0.25 0.41 1.0 
+
+0.22 0.44 1.0 
+0.25 0.44 1.0 
+
+
+0.12 0.44 1.0 
+0.16 0.44 1.0 
+
+0.12 0.47 1.0 
+0.16 0.47 1.0 
+
+
+0.16 0.44 1.0 
+0.19 0.44 1.0 
+
+0.16 0.47 1.0 
+0.19 0.47 1.0 
+
+
+0.12 0.47 1.0 
+0.16 0.47 1.0 
+
+0.12 0.50 1.0 
+0.16 0.50 1.0 
+
+
+0.16 0.47 1.0 
+0.19 0.47 1.0 
+
+0.16 0.50 1.0 
+0.19 0.50 1.0 
+
+
+0.19 0.44 1.0 
+0.22 0.44 1.0 
+
+0.19 0.47 1.0 
+0.22 0.47 1.0 
+
+
+0.22 0.44 1.0 
+0.25 0.44 1.0 
+
+0.22 0.47 1.0 
+0.25 0.47 1.0 
+
+
+0.19 0.47 1.0 
+0.22 0.47 1.0 
+
+0.19 0.50 1.0 
+0.22 0.50 1.0 
+
+
+0.22 0.47 1.0 
+0.25 0.47 1.0 
+
+0.22 0.50 1.0 
+0.25 0.50 1.0 
+
+
+0.25 0.25 1.0 
+0.28 0.25 1.0 
+
+0.25 0.28 1.0 
+0.28 0.28 1.0 
+
+
+0.28 0.25 1.0 
+0.31 0.25 1.0 
+
+0.28 0.28 1.0 
+0.31 0.28 1.0 
+
+
+0.25 0.28 1.0 
+0.28 0.28 1.0 
+
+0.25 0.31 1.0 
+0.28 0.31 1.0 
+
+
+0.28 0.28 1.0 
+0.31 0.28 1.0 
+
+0.28 0.31 1.0 
+0.31 0.31 1.0 
+
+
+0.31 0.25 1.0 
+0.34 0.25 1.0 
+
+0.31 0.28 1.0 
+0.34 0.28 1.0 
+
+
+0.34 0.25 1.0 
+0.38 0.25 1.0 
+
+0.34 0.28 1.0 
+0.38 0.28 1.0 
+
+
+0.31 0.28 1.0 
+0.34 0.28 1.0 
+
+0.31 0.31 1.0 
+0.34 0.31 1.0 
+
+
+0.34 0.28 1.0 
+0.38 0.28 1.0 
+
+0.34 0.31 1.0 
+0.38 0.31 1.0 
+
+
+0.25 0.31 1.0 
+0.28 0.31 1.0 
+
+0.25 0.34 1.0 
+0.28 0.34 1.0 
+
+
+0.28 0.31 1.0 
+0.31 0.31 1.0 
+
+0.28 0.34 1.0 
+0.31 0.34 1.0 
+
+
+0.25 0.34 1.0 
+0.28 0.34 1.0 
+
+0.25 0.38 1.0 
+0.28 0.38 1.0 
+
+
+0.28 0.34 1.0 
+0.31 0.34 1.0 
+
+0.28 0.38 1.0 
+0.31 0.38 1.0 
+
+
+0.31 0.31 1.0 
+0.34 0.31 1.0 
+
+0.31 0.34 1.0 
+0.34 0.34 1.0 
+
+
+0.34 0.31 1.0 
+0.38 0.31 1.0 
+
+0.34 0.34 1.0 
+0.38 0.34 1.0 
+
+
+0.31 0.34 1.0 
+0.34 0.34 1.0 
+
+0.31 0.38 1.0 
+0.34 0.38 1.0 
+
+
+0.34 0.34 1.0 
+0.38 0.34 1.0 
+
+0.34 0.38 1.0 
+0.38 0.38 1.0 
+
+
+0.38 0.25 1.0 
+0.41 0.25 1.0 
+
+0.38 0.28 1.0 
+0.41 0.28 1.0 
+
+
+0.41 0.25 1.0 
+0.44 0.25 1.0 
+
+0.41 0.28 1.0 
+0.44 0.28 1.0 
+
+
+0.38 0.28 1.0 
+0.41 0.28 1.0 
+
+0.38 0.31 1.0 
+0.41 0.31 1.0 
+
+
+0.41 0.28 1.0 
+0.44 0.28 1.0 
+
+0.41 0.31 1.0 
+0.44 0.31 1.0 
+
+
+0.44 0.25 1.0 
+0.47 0.25 1.0 
+
+0.44 0.28 1.0 
+0.47 0.28 1.0 
+
+
+0.47 0.25 1.0 
+0.50 0.25 1.0 
+
+0.47 0.28 1.0 
+0.50 0.28 1.0 
+
+
+0.44 0.28 1.0 
+0.47 0.28 1.0 
+
+0.44 0.31 1.0 
+0.47 0.31 1.0 
+
+
+0.47 0.28 1.0 
+0.50 0.28 1.0 
+
+0.47 0.31 1.0 
+0.50 0.31 1.0 
+
+
+0.38 0.31 1.0 
+0.41 0.31 1.0 
+
+0.38 0.34 1.0 
+0.41 0.34 1.0 
+
+
+0.41 0.31 1.0 
+0.44 0.31 1.0 
+
+0.41 0.34 1.0 
+0.44 0.34 1.0 
+
+
+0.38 0.34 1.0 
+0.41 0.34 1.0 
+
+0.38 0.38 1.0 
+0.41 0.38 1.0 
+
+
+0.41 0.34 1.0 
+0.44 0.34 1.0 
+
+0.41 0.38 1.0 
+0.44 0.38 1.0 
+
+
+0.44 0.31 1.0 
+0.47 0.31 1.0 
+
+0.44 0.34 1.0 
+0.47 0.34 1.0 
+
+
+0.47 0.31 1.0 
+0.50 0.31 1.0 
+
+0.47 0.34 1.0 
+0.50 0.34 1.0 
+
+
+0.44 0.34 1.0 
+0.47 0.34 1.0 
+
+0.44 0.38 1.0 
+0.47 0.38 1.0 
+
+
+0.47 0.34 1.0 
+0.50 0.34 1.0 
+
+0.47 0.38 1.0 
+0.50 0.38 1.0 
+
+
+0.25 0.38 1.0 
+0.28 0.38 1.0 
+
+0.25 0.41 1.0 
+0.28 0.41 1.0 
+
+
+0.28 0.38 1.0 
+0.31 0.38 1.0 
+
+0.28 0.41 1.0 
+0.31 0.41 1.0 
+
+
+0.25 0.41 1.0 
+0.28 0.41 1.0 
+
+0.25 0.44 1.0 
+0.28 0.44 1.0 
+
+
+0.28 0.41 1.0 
+0.31 0.41 1.0 
+
+0.28 0.44 1.0 
+0.31 0.44 1.0 
+
+
+0.31 0.38 1.0 
+0.34 0.38 1.0 
+
+0.31 0.41 1.0 
+0.34 0.41 1.0 
+
+
+0.34 0.38 1.0 
+0.38 0.38 1.0 
+
+0.34 0.41 1.0 
+0.38 0.41 1.0 
+
+
+0.31 0.41 1.0 
+0.34 0.41 1.0 
+
+0.31 0.44 1.0 
+0.34 0.44 1.0 
+
+
+0.34 0.41 1.0 
+0.38 0.41 1.0 
+
+0.34 0.44 1.0 
+0.38 0.44 1.0 
+
+
+0.25 0.44 1.0 
+0.28 0.44 1.0 
+
+0.25 0.47 1.0 
+0.28 0.47 1.0 
+
+
+0.28 0.44 1.0 
+0.31 0.44 1.0 
+
+0.28 0.47 1.0 
+0.31 0.47 1.0 
+
+
+0.25 0.47 1.0 
+0.28 0.47 1.0 
+
+0.25 0.50 1.0 
+0.28 0.50 1.0 
+
+
+0.28 0.47 1.0 
+0.31 0.47 1.0 
+
+0.28 0.50 1.0 
+0.31 0.50 1.0 
+
+
+0.31 0.44 1.0 
+0.34 0.44 1.0 
+
+0.31 0.47 1.0 
+0.34 0.47 1.0 
+
+
+0.34 0.44 1.0 
+0.38 0.44 1.0 
+
+0.34 0.47 1.0 
+0.38 0.47 1.0 
+
+
+0.31 0.47 1.0 
+0.34 0.47 1.0 
+
+0.31 0.50 1.0 
+0.34 0.50 1.0 
+
+
+0.34 0.47 1.0 
+0.38 0.47 1.0 
+
+0.34 0.50 1.0 
+0.38 0.50 1.0 
+
+
+0.38 0.38 1.0 
+0.41 0.38 1.0 
+
+0.38 0.41 1.0 
+0.41 0.41 1.0 
+
+
+0.41 0.38 1.0 
+0.44 0.38 1.0 
+
+0.41 0.41 1.0 
+0.44 0.41 1.0 
+
+
+0.38 0.41 1.0 
+0.41 0.41 1.0 
+
+0.38 0.44 1.0 
+0.41 0.44 1.0 
+
+
+0.41 0.41 1.0 
+0.44 0.41 1.0 
+
+0.41 0.44 1.0 
+0.44 0.44 1.0 
+
+
+0.44 0.38 1.0 
+0.47 0.38 1.0 
+
+0.44 0.41 1.0 
+0.47 0.41 1.0 
+
+
+0.47 0.38 1.0 
+0.50 0.38 1.0 
+
+0.47 0.41 1.0 
+0.50 0.41 1.0 
+
+
+0.44 0.41 1.0 
+0.47 0.41 1.0 
+
+0.44 0.44 1.0 
+0.47 0.44 1.0 
+
+
+0.47 0.41 1.0 
+0.50 0.41 1.0 
+
+0.47 0.44 1.0 
+0.50 0.44 1.0 
+
+
+0.38 0.44 1.0 
+0.41 0.44 1.0 
+
+0.38 0.47 1.0 
+0.41 0.47 1.0 
+
+
+0.41 0.44 1.0 
+0.44 0.44 1.0 
+
+0.41 0.47 1.0 
+0.44 0.47 1.0 
+
+
+0.38 0.47 1.0 
+0.41 0.47 1.0 
+
+0.38 0.50 1.0 
+0.41 0.50 1.0 
+
+
+0.41 0.47 1.0 
+0.44 0.47 1.0 
+
+0.41 0.50 1.0 
+0.44 0.50 1.0 
+
+
+0.44 0.44 1.0 
+0.47 0.44 1.0 
+
+0.44 0.47 1.0 
+0.47 0.47 1.0 
+
+
+0.47 0.44 1.0 
+0.50 0.44 1.0 
+
+0.47 0.47 1.0 
+0.50 0.47 1.0 
+
+
+0.44 0.47 1.0 
+0.47 0.47 1.0 
+
+0.44 0.50 1.0 
+0.47 0.50 1.0 
+
+
+0.47 0.47 1.0 
+0.50 0.47 1.0 
+
+0.47 0.50 1.0 
+0.50 0.50 1.0 
+
+
+0.50 0.0 1.0 
+0.53 0.0 1.0 
+
+0.50 0.031 1.0 
+0.53 0.031 1.0 
+
+
+0.53 0.0 1.0 
+0.56 0.0 1.0 
+
+0.53 0.031 1.0 
+0.56 0.031 1.0 
+
+
+0.50 0.031 1.0 
+0.53 0.031 1.0 
+
+0.50 0.062 1.0 
+0.53 0.062 1.0 
+
+
+0.53 0.031 1.0 
+0.56 0.031 1.0 
+
+0.53 0.062 1.0 
+0.56 0.062 1.0 
+
+
+0.56 0.0 1.0 
+0.59 0.0 1.0 
+
+0.56 0.031 1.0 
+0.59 0.031 1.0 
+
+
+0.59 0.0 1.0 
+0.62 0.0 1.0 
+
+0.59 0.031 1.0 
+0.62 0.031 1.0 
+
+
+0.56 0.031 1.0 
+0.59 0.031 1.0 
+
+0.56 0.062 1.0 
+0.59 0.062 1.0 
+
+
+0.59 0.031 1.0 
+0.62 0.031 1.0 
+
+0.59 0.062 1.0 
+0.62 0.062 1.0 
+
+
+0.50 0.062 1.0 
+0.53 0.062 1.0 
+
+0.50 0.094 1.0 
+0.53 0.094 1.0 
+
+
+0.53 0.062 1.0 
+0.56 0.062 1.0 
+
+0.53 0.094 1.0 
+0.56 0.094 1.0 
+
+
+0.50 0.094 1.0 
+0.53 0.094 1.0 
+
+0.50 0.12 1.0 
+0.53 0.12 1.0 
+
+
+0.53 0.094 1.0 
+0.56 0.094 1.0 
+
+0.53 0.12 1.0 
+0.56 0.12 1.0 
+
+
+0.56 0.062 1.0 
+0.59 0.062 1.0 
+
+0.56 0.094 1.0 
+0.59 0.094 1.0 
+
+
+0.59 0.062 1.0 
+0.62 0.062 1.0 
+
+0.59 0.094 1.0 
+0.62 0.094 1.0 
+
+
+0.56 0.094 1.0 
+0.59 0.094 1.0 
+
+0.56 0.12 1.0 
+0.59 0.12 1.0 
+
+
+0.59 0.094 1.0 
+0.62 0.094 1.0 
+
+0.59 0.12 1.0 
+0.62 0.12 1.0 
+
+
+0.62 0.0 1.0 
+0.66 0.0 1.0 
+
+0.62 0.031 1.0 
+0.66 0.031 1.0 
+
+
+0.66 0.0 1.0 
+0.69 0.0 1.0 
+
+0.66 0.031 1.0 
+0.69 0.031 1.0 
+
+
+0.62 0.031 1.0 
+0.66 0.031 1.0 
+
+0.62 0.062 1.0 
+0.66 0.062 1.0 
+
+
+0.66 0.031 1.0 
+0.69 0.031 1.0 
+
+0.66 0.062 1.0 
+0.69 0.062 1.0 
+
+
+0.69 0.0 1.0 
+0.72 0.0 1.0 
+
+0.69 0.031 1.0 
+0.72 0.031 1.0 
+
+
+0.72 0.0 1.0 
+0.75 0.0 1.0 
+
+0.72 0.031 1.0 
+0.75 0.031 1.0 
+
+
+0.69 0.031 1.0 
+0.72 0.031 1.0 
+
+0.69 0.062 1.0 
+0.72 0.062 1.0 
+
+
+0.72 0.031 1.0 
+0.75 0.031 1.0 
+
+0.72 0.062 1.0 
+0.75 0.062 1.0 
+
+
+0.62 0.062 1.0 
+0.66 0.062 1.0 
+
+0.62 0.094 1.0 
+0.66 0.094 1.0 
+
+
+0.66 0.062 1.0 
+0.69 0.062 1.0 
+
+0.66 0.094 1.0 
+0.69 0.094 1.0 
+
+
+0.62 0.094 1.0 
+0.66 0.094 1.0 
+
+0.62 0.12 1.0 
+0.66 0.12 1.0 
+
+
+0.66 0.094 1.0 
+0.69 0.094 1.0 
+
+0.66 0.12 1.0 
+0.69 0.12 1.0 
+
+
+0.69 0.062 1.0 
+0.72 0.062 1.0 
+
+0.69 0.094 1.0 
+0.72 0.094 1.0 
+
+
+0.72 0.062 1.0 
+0.75 0.062 1.0 
+
+0.72 0.094 1.0 
+0.75 0.094 1.0 
+
+
+0.69 0.094 1.0 
+0.72 0.094 1.0 
+
+0.69 0.12 1.0 
+0.72 0.12 1.0 
+
+
+0.72 0.094 1.0 
+0.75 0.094 1.0 
+
+0.72 0.12 1.0 
+0.75 0.12 1.0 
+
+
+0.50 0.12 1.0 
+0.53 0.12 1.0 
+
+0.50 0.16 1.0 
+0.53 0.16 1.0 
+
+
+0.53 0.12 1.0 
+0.56 0.12 1.0 
+
+0.53 0.16 1.0 
+0.56 0.16 1.0 
+
+
+0.50 0.16 1.0 
+0.53 0.16 1.0 
+
+0.50 0.19 1.0 
+0.53 0.19 1.0 
+
+
+0.53 0.16 1.0 
+0.56 0.16 1.0 
+
+0.53 0.19 1.0 
+0.56 0.19 1.0 
+
+
+0.56 0.12 1.0 
+0.59 0.12 1.0 
+
+0.56 0.16 1.0 
+0.59 0.16 1.0 
+
+
+0.59 0.12 1.0 
+0.62 0.12 1.0 
+
+0.59 0.16 1.0 
+0.62 0.16 1.0 
+
+
+0.56 0.16 1.0 
+0.59 0.16 1.0 
+
+0.56 0.19 1.0 
+0.59 0.19 1.0 
+
+
+0.59 0.16 1.0 
+0.62 0.16 1.0 
+
+0.59 0.19 1.0 
+0.62 0.19 1.0 
+
+
+0.50 0.19 1.0 
+0.53 0.19 1.0 
+
+0.50 0.22 1.0 
+0.53 0.22 1.0 
+
+
+0.53 0.19 1.0 
+0.56 0.19 1.0 
+
+0.53 0.22 1.0 
+0.56 0.22 1.0 
+
+
+0.50 0.22 1.0 
+0.53 0.22 1.0 
+
+0.50 0.25 1.0 
+0.53 0.25 1.0 
+
+
+0.53 0.22 1.0 
+0.56 0.22 1.0 
+
+0.53 0.25 1.0 
+0.56 0.25 1.0 
+
+
+0.56 0.19 1.0 
+0.59 0.19 1.0 
+
+0.56 0.22 1.0 
+0.59 0.22 1.0 
+
+
+0.59 0.19 1.0 
+0.62 0.19 1.0 
+
+0.59 0.22 1.0 
+0.62 0.22 1.0 
+
+
+0.56 0.22 1.0 
+0.59 0.22 1.0 
+
+0.56 0.25 1.0 
+0.59 0.25 1.0 
+
+
+0.59 0.22 1.0 
+0.62 0.22 1.0 
+
+0.59 0.25 1.0 
+0.62 0.25 1.0 
+
+
+0.62 0.12 1.0 
+0.66 0.12 1.0 
+
+0.62 0.16 1.0 
+0.66 0.16 1.0 
+
+
+0.66 0.12 1.0 
+0.69 0.12 1.0 
+
+0.66 0.16 1.0 
+0.69 0.16 1.0 
+
+
+0.62 0.16 1.0 
+0.66 0.16 1.0 
+
+0.62 0.19 1.0 
+0.66 0.19 1.0 
+
+
+0.66 0.16 1.0 
+0.69 0.16 1.0 
+
+0.66 0.19 1.0 
+0.69 0.19 1.0 
+
+
+0.69 0.12 1.0 
+0.72 0.12 1.0 
+
+0.69 0.16 1.0 
+0.72 0.16 1.0 
+
+
+0.72 0.12 1.0 
+0.75 0.12 1.0 
+
+0.72 0.16 1.0 
+0.75 0.16 1.0 
+
+
+0.69 0.16 1.0 
+0.72 0.16 1.0 
+
+0.69 0.19 1.0 
+0.72 0.19 1.0 
+
+
+0.72 0.16 1.0 
+0.75 0.16 1.0 
+
+0.72 0.19 1.0 
+0.75 0.19 1.0 
+
+
+0.62 0.19 1.0 
+0.66 0.19 1.0 
+
+0.62 0.22 1.0 
+0.66 0.22 1.0 
+
+
+0.66 0.19 1.0 
+0.69 0.19 1.0 
+
+0.66 0.22 1.0 
+0.69 0.22 1.0 
+
+
+0.62 0.22 1.0 
+0.66 0.22 1.0 
+
+0.62 0.25 1.0 
+0.66 0.25 1.0 
+
+
+0.66 0.22 1.0 
+0.69 0.22 1.0 
+
+0.66 0.25 1.0 
+0.69 0.25 1.0 
+
+
+0.69 0.19 1.0 
+0.72 0.19 1.0 
+
+0.69 0.22 1.0 
+0.72 0.22 1.0 
+
+
+0.72 0.19 1.0 
+0.75 0.19 1.0 
+
+0.72 0.22 1.0 
+0.75 0.22 1.0 
+
+
+0.69 0.22 1.0 
+0.72 0.22 1.0 
+
+0.69 0.25 1.0 
+0.72 0.25 1.0 
+
+
+0.72 0.22 1.0 
+0.75 0.22 1.0 
+
+0.72 0.25 1.0 
+0.75 0.25 1.0 
+
+
+0.75 0.0 1.0 
+0.78 0.0 1.0 
+
+0.75 0.031 1.0 
+0.78 0.031 1.0 
+
+
+0.78 0.0 1.0 
+0.81 0.0 1.0 
+
+0.78 0.031 1.0 
+0.81 0.031 1.0 
+
+
+0.75 0.031 1.0 
+0.78 0.031 1.0 
+
+0.75 0.062 1.0 
+0.78 0.062 1.0 
+
+
+0.78 0.031 1.0 
+0.81 0.031 1.0 
+
+0.78 0.062 1.0 
+0.81 0.062 1.0 
+
+
+0.81 0.0 1.0 
+0.84 0.0 1.0 
+
+0.81 0.031 1.0 
+0.84 0.031 1.0 
+
+
+0.84 0.0 1.0 
+0.88 0.0 1.0 
+
+0.84 0.031 1.0 
+0.88 0.031 1.0 
+
+
+0.81 0.031 1.0 
+0.84 0.031 1.0 
+
+0.81 0.062 1.0 
+0.84 0.062 1.0 
+
+
+0.84 0.031 1.0 
+0.88 0.031 1.0 
+
+0.84 0.062 1.0 
+0.88 0.062 1.0 
+
+
+0.75 0.062 1.0 
+0.78 0.062 1.0 
+
+0.75 0.094 1.0 
+0.78 0.094 1.0 
+
+
+0.78 0.062 1.0 
+0.81 0.062 1.0 
+
+0.78 0.094 1.0 
+0.81 0.094 1.0 
+
+
+0.75 0.094 1.0 
+0.78 0.094 1.0 
+
+0.75 0.12 1.0 
+0.78 0.12 1.0 
+
+
+0.78 0.094 1.0 
+0.81 0.094 1.0 
+
+0.78 0.12 1.0 
+0.81 0.12 1.0 
+
+
+0.81 0.062 1.0 
+0.84 0.062 1.0 
+
+0.81 0.094 1.0 
+0.84 0.094 1.0 
+
+
+0.84 0.062 1.0 
+0.88 0.062 1.0 
+
+0.84 0.094 1.0 
+0.88 0.094 1.0 
+
+
+0.81 0.094 1.0 
+0.84 0.094 1.0 
+
+0.81 0.12 1.0 
+0.84 0.12 1.0 
+
+
+0.84 0.094 1.0 
+0.88 0.094 1.0 
+
+0.84 0.12 1.0 
+0.88 0.12 1.0 
+
+
+0.88 0.0 1.0 
+0.91 0.0 1.0 
+
+0.88 0.031 1.0 
+0.91 0.031 1.0 
+
+
+0.91 0.0 1.0 
+0.94 0.0 1.0 
+
+0.91 0.031 1.0 
+0.94 0.031 1.0 
+
+
+0.88 0.031 1.0 
+0.91 0.031 1.0 
+
+0.88 0.062 1.0 
+0.91 0.062 1.0 
+
+
+0.91 0.031 1.0 
+0.94 0.031 1.0 
+
+0.91 0.062 1.0 
+0.94 0.062 1.0 
+
+
+0.94 0.0 1.0 
+0.97 0.0 1.0 
+
+0.94 0.031 1.0 
+0.97 0.031 1.0 
+
+
+0.97 0.0 1.0 
+1.0 0.0 1.0 
+
+0.97 0.031 1.0 
+1.0 0.031 1.0 
+
+
+0.94 0.031 1.0 
+0.97 0.031 1.0 
+
+0.94 0.062 1.0 
+0.97 0.062 1.0 
+
+
+0.97 0.031 1.0 
+1.0 0.031 1.0 
+
+0.97 0.062 1.0 
+1.0 0.062 1.0 
+
+
+0.88 0.062 1.0 
+0.91 0.062 1.0 
+
+0.88 0.094 1.0 
+0.91 0.094 1.0 
+
+
+0.91 0.062 1.0 
+0.94 0.062 1.0 
+
+0.91 0.094 1.0 
+0.94 0.094 1.0 
+
+
+0.88 0.094 1.0 
+0.91 0.094 1.0 
+
+0.88 0.12 1.0 
+0.91 0.12 1.0 
+
+
+0.91 0.094 1.0 
+0.94 0.094 1.0 
+
+0.91 0.12 1.0 
+0.94 0.12 1.0 
+
+
+0.94 0.062 1.0 
+0.97 0.062 1.0 
+
+0.94 0.094 1.0 
+0.97 0.094 1.0 
+
+
+0.97 0.062 1.0 
+1.0 0.062 1.0 
+
+0.97 0.094 1.0 
+1.0 0.094 1.0 
+
+
+0.94 0.094 1.0 
+0.97 0.094 1.0 
+
+0.94 0.12 1.0 
+0.97 0.12 1.0 
+
+
+0.97 0.094 1.0 
+1.0 0.094 1.0 
+
+0.97 0.12 1.0 
+1.0 0.12 1.0 
+
+
+0.75 0.12 1.0 
+0.78 0.12 1.0 
+
+0.75 0.16 1.0 
+0.78 0.16 1.0 
+
+
+0.78 0.12 1.0 
+0.81 0.12 1.0 
+
+0.78 0.16 1.0 
+0.81 0.16 1.0 
+
+
+0.75 0.16 1.0 
+0.78 0.16 1.0 
+
+0.75 0.19 1.0 
+0.78 0.19 1.0 
+
+
+0.78 0.16 1.0 
+0.81 0.16 1.0 
+
+0.78 0.19 1.0 
+0.81 0.19 1.0 
+
+
+0.81 0.12 1.0 
+0.84 0.12 1.0 
+
+0.81 0.16 1.0 
+0.84 0.16 1.0 
+
+
+0.84 0.12 1.0 
+0.88 0.12 1.0 
+
+0.84 0.16 1.0 
+0.88 0.16 1.0 
+
+
+0.81 0.16 1.0 
+0.84 0.16 1.0 
+
+0.81 0.19 1.0 
+0.84 0.19 1.0 
+
+
+0.84 0.16 1.0 
+0.88 0.16 1.0 
+
+0.84 0.19 1.0 
+0.88 0.19 1.0 
+
+
+0.75 0.19 1.0 
+0.78 0.19 1.0 
+
+0.75 0.22 1.0 
+0.78 0.22 1.0 
+
+
+0.78 0.19 1.0 
+0.81 0.19 1.0 
+
+0.78 0.22 1.0 
+0.81 0.22 1.0 
+
+
+0.75 0.22 1.0 
+0.78 0.22 1.0 
+
+0.75 0.25 1.0 
+0.78 0.25 1.0 
+
+
+0.78 0.22 1.0 
+0.81 0.22 1.0 
+
+0.78 0.25 1.0 
+0.81 0.25 1.0 
+
+
+0.81 0.19 1.0 
+0.84 0.19 1.0 
+
+0.81 0.22 1.0 
+0.84 0.22 1.0 
+
+
+0.84 0.19 1.0 
+0.88 0.19 1.0 
+
+0.84 0.22 1.0 
+0.88 0.22 1.0 
+
+
+0.81 0.22 1.0 
+0.84 0.22 1.0 
+
+0.81 0.25 1.0 
+0.84 0.25 1.0 
+
+
+0.84 0.22 1.0 
+0.88 0.22 1.0 
+
+0.84 0.25 1.0 
+0.88 0.25 1.0 
+
+
+0.88 0.12 1.0 
+0.91 0.12 1.0 
+
+0.88 0.16 1.0 
+0.91 0.16 1.0 
+
+
+0.91 0.12 1.0 
+0.94 0.12 1.0 
+
+0.91 0.16 1.0 
+0.94 0.16 1.0 
+
+
+0.88 0.16 1.0 
+0.91 0.16 1.0 
+
+0.88 0.19 1.0 
+0.91 0.19 1.0 
+
+
+0.91 0.16 1.0 
+0.94 0.16 1.0 
+
+0.91 0.19 1.0 
+0.94 0.19 1.0 
+
+
+0.94 0.12 1.0 
+0.97 0.12 1.0 
+
+0.94 0.16 1.0 
+0.97 0.16 1.0 
+
+
+0.97 0.12 1.0 
+1.0 0.12 1.0 
+
+0.97 0.16 1.0 
+1.0 0.16 1.0 
+
+
+0.94 0.16 1.0 
+0.97 0.16 1.0 
+
+0.94 0.19 1.0 
+0.97 0.19 1.0 
+
+
+0.97 0.16 1.0 
+1.0 0.16 1.0 
+
+0.97 0.19 1.0 
+1.0 0.19 1.0 
+
+
+0.88 0.19 1.0 
+0.91 0.19 1.0 
+
+0.88 0.22 1.0 
+0.91 0.22 1.0 
+
+
+0.91 0.19 1.0 
+0.94 0.19 1.0 
+
+0.91 0.22 1.0 
+0.94 0.22 1.0 
+
+
+0.88 0.22 1.0 
+0.91 0.22 1.0 
+
+0.88 0.25 1.0 
+0.91 0.25 1.0 
+
+
+0.91 0.22 1.0 
+0.94 0.22 1.0 
+
+0.91 0.25 1.0 
+0.94 0.25 1.0 
+
+
+0.94 0.19 1.0 
+0.97 0.19 1.0 
+
+0.94 0.22 1.0 
+0.97 0.22 1.0 
+
+
+0.97 0.19 1.0 
+1.0 0.19 1.0 
+
+0.97 0.22 1.0 
+1.0 0.22 1.0 
+
+
+0.94 0.22 1.0 
+0.97 0.22 1.0 
+
+0.94 0.25 1.0 
+0.97 0.25 1.0 
+
+
+0.97 0.22 1.0 
+1.0 0.22 1.0 
+
+0.97 0.25 1.0 
+1.0 0.25 1.0 
+
+
+0.50 0.25 1.0 
+0.53 0.25 1.0 
+
+0.50 0.28 1.0 
+0.53 0.28 1.0 
+
+
+0.53 0.25 1.0 
+0.56 0.25 1.0 
+
+0.53 0.28 1.0 
+0.56 0.28 1.0 
+
+
+0.50 0.28 1.0 
+0.53 0.28 1.0 
+
+0.50 0.31 1.0 
+0.53 0.31 1.0 
+
+
+0.53 0.28 1.0 
+0.56 0.28 1.0 
+
+0.53 0.31 1.0 
+0.56 0.31 1.0 
+
+
+0.56 0.25 1.0 
+0.59 0.25 1.0 
+
+0.56 0.28 1.0 
+0.59 0.28 1.0 
+
+
+0.59 0.25 1.0 
+0.62 0.25 1.0 
+
+0.59 0.28 1.0 
+0.62 0.28 1.0 
+
+
+0.56 0.28 1.0 
+0.59 0.28 1.0 
+
+0.56 0.31 1.0 
+0.59 0.31 1.0 
+
+
+0.59 0.28 1.0 
+0.62 0.28 1.0 
+
+0.59 0.31 1.0 
+0.62 0.31 1.0 
+
+
+0.50 0.31 1.0 
+0.53 0.31 1.0 
+
+0.50 0.34 1.0 
+0.53 0.34 1.0 
+
+
+0.53 0.31 1.0 
+0.56 0.31 1.0 
+
+0.53 0.34 1.0 
+0.56 0.34 1.0 
+
+
+0.50 0.34 1.0 
+0.53 0.34 1.0 
+
+0.50 0.38 1.0 
+0.53 0.38 1.0 
+
+
+0.53 0.34 1.0 
+0.56 0.34 1.0 
+
+0.53 0.38 1.0 
+0.56 0.38 1.0 
+
+
+0.56 0.31 1.0 
+0.59 0.31 1.0 
+
+0.56 0.34 1.0 
+0.59 0.34 1.0 
+
+
+0.59 0.31 1.0 
+0.62 0.31 1.0 
+
+0.59 0.34 1.0 
+0.62 0.34 1.0 
+
+
+0.56 0.34 1.0 
+0.59 0.34 1.0 
+
+0.56 0.38 1.0 
+0.59 0.38 1.0 
+
+
+0.59 0.34 1.0 
+0.62 0.34 1.0 
+
+0.59 0.38 1.0 
+0.62 0.38 1.0 
+
+
+0.62 0.25 1.0 
+0.66 0.25 1.0 
+
+0.62 0.28 1.0 
+0.66 0.28 1.0 
+
+
+0.66 0.25 1.0 
+0.69 0.25 1.0 
+
+0.66 0.28 1.0 
+0.69 0.28 1.0 
+
+
+0.62 0.28 1.0 
+0.66 0.28 1.0 
+
+0.62 0.31 1.0 
+0.66 0.31 1.0 
+
+
+0.66 0.28 1.0 
+0.69 0.28 1.0 
+
+0.66 0.31 1.0 
+0.69 0.31 1.0 
+
+
+0.69 0.25 1.0 
+0.72 0.25 1.0 
+
+0.69 0.28 1.0 
+0.72 0.28 1.0 
+
+
+0.72 0.25 1.0 
+0.75 0.25 1.0 
+
+0.72 0.28 1.0 
+0.75 0.28 1.0 
+
+
+0.69 0.28 1.0 
+0.72 0.28 1.0 
+
+0.69 0.31 1.0 
+0.72 0.31 1.0 
+
+
+0.72 0.28 1.0 
+0.75 0.28 1.0 
+
+0.72 0.31 1.0 
+0.75 0.31 1.0 
+
+
+0.62 0.31 1.0 
+0.66 0.31 1.0 
+
+0.62 0.34 1.0 
+0.66 0.34 1.0 
+
+
+0.66 0.31 1.0 
+0.69 0.31 1.0 
+
+0.66 0.34 1.0 
+0.69 0.34 1.0 
+
+
+0.62 0.34 1.0 
+0.66 0.34 1.0 
+
+0.62 0.38 1.0 
+0.66 0.38 1.0 
+
+
+0.66 0.34 1.0 
+0.69 0.34 1.0 
+
+0.66 0.38 1.0 
+0.69 0.38 1.0 
+
+
+0.69 0.31 1.0 
+0.72 0.31 1.0 
+
+0.69 0.34 1.0 
+0.72 0.34 1.0 
+
+
+0.72 0.31 1.0 
+0.75 0.31 1.0 
+
+0.72 0.34 1.0 
+0.75 0.34 1.0 
+
+
+0.69 0.34 1.0 
+0.72 0.34 1.0 
+
+0.69 0.38 1.0 
+0.72 0.38 1.0 
+
+
+0.72 0.34 1.0 
+0.75 0.34 1.0 
+
+0.72 0.38 1.0 
+0.75 0.38 1.0 
+
+
+0.50 0.38 1.0 
+0.53 0.38 1.0 
+
+0.50 0.41 1.0 
+0.53 0.41 1.0 
+
+
+0.53 0.38 1.0 
+0.56 0.38 1.0 
+
+0.53 0.41 1.0 
+0.56 0.41 1.0 
+
+
+0.50 0.41 1.0 
+0.53 0.41 1.0 
+
+0.50 0.44 1.0 
+0.53 0.44 1.0 
+
+
+0.53 0.41 1.0 
+0.56 0.41 1.0 
+
+0.53 0.44 1.0 
+0.56 0.44 1.0 
+
+
+0.56 0.38 1.0 
+0.59 0.38 1.0 
+
+0.56 0.41 1.0 
+0.59 0.41 1.0 
+
+
+0.59 0.38 1.0 
+0.62 0.38 1.0 
+
+0.59 0.41 1.0 
+0.62 0.41 1.0 
+
+
+0.56 0.41 1.0 
+0.59 0.41 1.0 
+
+0.56 0.44 1.0 
+0.59 0.44 1.0 
+
+
+0.59 0.41 1.0 
+0.62 0.41 1.0 
+
+0.59 0.44 1.0 
+0.62 0.44 1.0 
+
+
+0.50 0.44 1.0 
+0.53 0.44 1.0 
+
+0.50 0.47 1.0 
+0.53 0.47 1.0 
+
+
+0.53 0.44 1.0 
+0.56 0.44 1.0 
+
+0.53 0.47 1.0 
+0.56 0.47 1.0 
+
+
+0.50 0.47 1.0 
+0.53 0.47 1.0 
+
+0.50 0.50 1.0 
+0.53 0.50 1.0 
+
+
+0.53 0.47 1.0 
+0.56 0.47 1.0 
+
+0.53 0.50 1.0 
+0.56 0.50 1.0 
+
+
+0.56 0.44 1.0 
+0.59 0.44 1.0 
+
+0.56 0.47 1.0 
+0.59 0.47 1.0 
+
+
+0.59 0.44 1.0 
+0.62 0.44 1.0 
+
+0.59 0.47 1.0 
+0.62 0.47 1.0 
+
+
+0.56 0.47 1.0 
+0.59 0.47 1.0 
+
+0.56 0.50 1.0 
+0.59 0.50 1.0 
+
+
+0.59 0.47 1.0 
+0.62 0.47 1.0 
+
+0.59 0.50 1.0 
+0.62 0.50 1.0 
+
+
+0.62 0.38 1.0 
+0.66 0.38 1.0 
+
+0.62 0.41 1.0 
+0.66 0.41 1.0 
+
+
+0.66 0.38 1.0 
+0.69 0.38 1.0 
+
+0.66 0.41 1.0 
+0.69 0.41 1.0 
+
+
+0.62 0.41 1.0 
+0.66 0.41 1.0 
+
+0.62 0.44 1.0 
+0.66 0.44 1.0 
+
+
+0.66 0.41 1.0 
+0.69 0.41 1.0 
+
+0.66 0.44 1.0 
+0.69 0.44 1.0 
+
+
+0.69 0.38 1.0 
+0.72 0.38 1.0 
+
+0.69 0.41 1.0 
+0.72 0.41 1.0 
+
+
+0.72 0.38 1.0 
+0.75 0.38 1.0 
+
+0.72 0.41 1.0 
+0.75 0.41 1.0 
+
+
+0.69 0.41 1.0 
+0.72 0.41 1.0 
+
+0.69 0.44 1.0 
+0.72 0.44 1.0 
+
+
+0.72 0.41 1.0 
+0.75 0.41 1.0 
+
+0.72 0.44 1.0 
+0.75 0.44 1.0 
+
+
+0.62 0.44 1.0 
+0.66 0.44 1.0 
+
+0.62 0.47 1.0 
+0.66 0.47 1.0 
+
+
+0.66 0.44 1.0 
+0.69 0.44 1.0 
+
+0.66 0.47 1.0 
+0.69 0.47 1.0 
+
+
+0.62 0.47 1.0 
+0.66 0.47 1.0 
+
+0.62 0.50 1.0 
+0.66 0.50 1.0 
+
+
+0.66 0.47 1.0 
+0.69 0.47 1.0 
+
+0.66 0.50 1.0 
+0.69 0.50 1.0 
+
+
+0.69 0.44 1.0 
+0.72 0.44 1.0 
+
+0.69 0.47 1.0 
+0.72 0.47 1.0 
+
+
+0.72 0.44 1.0 
+0.75 0.44 1.0 
+
+0.72 0.47 1.0 
+0.75 0.47 1.0 
+
+
+0.69 0.47 1.0 
+0.72 0.47 1.0 
+
+0.69 0.50 1.0 
+0.72 0.50 1.0 
+
+
+0.72 0.47 1.0 
+0.75 0.47 1.0 
+
+0.72 0.50 1.0 
+0.75 0.50 1.0 
+
+
+0.75 0.25 1.0 
+0.78 0.25 1.0 
+
+0.75 0.28 1.0 
+0.78 0.28 1.0 
+
+
+0.78 0.25 1.0 
+0.81 0.25 1.0 
+
+0.78 0.28 1.0 
+0.81 0.28 1.0 
+
+
+0.75 0.28 1.0 
+0.78 0.28 1.0 
+
+0.75 0.31 1.0 
+0.78 0.31 1.0 
+
+
+0.78 0.28 1.0 
+0.81 0.28 1.0 
+
+0.78 0.31 1.0 
+0.81 0.31 1.0 
+
+
+0.81 0.25 1.0 
+0.84 0.25 1.0 
+
+0.81 0.28 1.0 
+0.84 0.28 1.0 
+
+
+0.84 0.25 1.0 
+0.88 0.25 1.0 
+
+0.84 0.28 1.0 
+0.88 0.28 1.0 
+
+
+0.81 0.28 1.0 
+0.84 0.28 1.0 
+
+0.81 0.31 1.0 
+0.84 0.31 1.0 
+
+
+0.84 0.28 1.0 
+0.88 0.28 1.0 
+
+0.84 0.31 1.0 
+0.88 0.31 1.0 
+
+
+0.75 0.31 1.0 
+0.78 0.31 1.0 
+
+0.75 0.34 1.0 
+0.78 0.34 1.0 
+
+
+0.78 0.31 1.0 
+0.81 0.31 1.0 
+
+0.78 0.34 1.0 
+0.81 0.34 1.0 
+
+
+0.75 0.34 1.0 
+0.78 0.34 1.0 
+
+0.75 0.38 1.0 
+0.78 0.38 1.0 
+
+
+0.78 0.34 1.0 
+0.81 0.34 1.0 
+
+0.78 0.38 1.0 
+0.81 0.38 1.0 
+
+
+0.81 0.31 1.0 
+0.84 0.31 1.0 
+
+0.81 0.34 1.0 
+0.84 0.34 1.0 
+
+
+0.84 0.31 1.0 
+0.88 0.31 1.0 
+
+0.84 0.34 1.0 
+0.88 0.34 1.0 
+
+
+0.81 0.34 1.0 
+0.84 0.34 1.0 
+
+0.81 0.38 1.0 
+0.84 0.38 1.0 
+
+
+0.84 0.34 1.0 
+0.88 0.34 1.0 
+
+0.84 0.38 1.0 
+0.88 0.38 1.0 
+
+
+0.88 0.25 1.0 
+0.91 0.25 1.0 
+
+0.88 0.28 1.0 
+0.91 0.28 1.0 
+
+
+0.91 0.25 1.0 
+0.94 0.25 1.0 
+
+0.91 0.28 1.0 
+0.94 0.28 1.0 
+
+
+0.88 0.28 1.0 
+0.91 0.28 1.0 
+
+0.88 0.31 1.0 
+0.91 0.31 1.0 
+
+
+0.91 0.28 1.0 
+0.94 0.28 1.0 
+
+0.91 0.31 1.0 
+0.94 0.31 1.0 
+
+
+0.94 0.25 1.0 
+0.97 0.25 1.0 
+
+0.94 0.28 1.0 
+0.97 0.28 1.0 
+
+
+0.97 0.25 1.0 
+1.0 0.25 1.0 
+
+0.97 0.28 1.0 
+1.0 0.28 1.0 
+
+
+0.94 0.28 1.0 
+0.97 0.28 1.0 
+
+0.94 0.31 1.0 
+0.97 0.31 1.0 
+
+
+0.97 0.28 1.0 
+1.0 0.28 1.0 
+
+0.97 0.31 1.0 
+1.0 0.31 1.0 
+
+
+0.88 0.31 1.0 
+0.91 0.31 1.0 
+
+0.88 0.34 1.0 
+0.91 0.34 1.0 
+
+
+0.91 0.31 1.0 
+0.94 0.31 1.0 
+
+0.91 0.34 1.0 
+0.94 0.34 1.0 
+
+
+0.88 0.34 1.0 
+0.91 0.34 1.0 
+
+0.88 0.38 1.0 
+0.91 0.38 1.0 
+
+
+0.91 0.34 1.0 
+0.94 0.34 1.0 
+
+0.91 0.38 1.0 
+0.94 0.38 1.0 
+
+
+0.94 0.31 1.0 
+0.97 0.31 1.0 
+
+0.94 0.34 1.0 
+0.97 0.34 1.0 
+
+
+0.97 0.31 1.0 
+1.0 0.31 1.0 
+
+0.97 0.34 1.0 
+1.0 0.34 1.0 
+
+
+0.94 0.34 1.0 
+0.97 0.34 1.0 
+
+0.94 0.38 1.0 
+0.97 0.38 1.0 
+
+
+0.97 0.34 1.0 
+1.0 0.34 1.0 
+
+0.97 0.38 1.0 
+1.0 0.38 1.0 
+
+
+0.75 0.38 1.0 
+0.78 0.38 1.0 
+
+0.75 0.41 1.0 
+0.78 0.41 1.0 
+
+
+0.78 0.38 1.0 
+0.81 0.38 1.0 
+
+0.78 0.41 1.0 
+0.81 0.41 1.0 
+
+
+0.75 0.41 1.0 
+0.78 0.41 1.0 
+
+0.75 0.44 1.0 
+0.78 0.44 1.0 
+
+
+0.78 0.41 1.0 
+0.81 0.41 1.0 
+
+0.78 0.44 1.0 
+0.81 0.44 1.0 
+
+
+0.81 0.38 1.0 
+0.84 0.38 1.0 
+
+0.81 0.41 1.0 
+0.84 0.41 1.0 
+
+
+0.84 0.38 1.0 
+0.88 0.38 1.0 
+
+0.84 0.41 1.0 
+0.88 0.41 1.0 
+
+
+0.81 0.41 1.0 
+0.84 0.41 1.0 
+
+0.81 0.44 1.0 
+0.84 0.44 1.0 
+
+
+0.84 0.41 1.0 
+0.88 0.41 1.0 
+
+0.84 0.44 1.0 
+0.88 0.44 1.0 
+
+
+0.75 0.44 1.0 
+0.78 0.44 1.0 
+
+0.75 0.47 1.0 
+0.78 0.47 1.0 
+
+
+0.78 0.44 1.0 
+0.81 0.44 1.0 
+
+0.78 0.47 1.0 
+0.81 0.47 1.0 
+
+
+0.75 0.47 1.0 
+0.78 0.47 1.0 
+
+0.75 0.50 1.0 
+0.78 0.50 1.0 
+
+
+0.78 0.47 1.0 
+0.81 0.47 1.0 
+
+0.78 0.50 1.0 
+0.81 0.50 1.0 
+
+
+0.81 0.44 1.0 
+0.84 0.44 1.0 
+
+0.81 0.47 1.0 
+0.84 0.47 1.0 
+
+
+0.84 0.44 1.0 
+0.88 0.44 1.0 
+
+0.84 0.47 1.0 
+0.88 0.47 1.0 
+
+
+0.81 0.47 1.0 
+0.84 0.47 1.0 
+
+0.81 0.50 1.0 
+0.84 0.50 1.0 
+
+
+0.84 0.47 1.0 
+0.88 0.47 1.0 
+
+0.84 0.50 1.0 
+0.88 0.50 1.0 
+
+
+0.88 0.38 1.0 
+0.91 0.38 1.0 
+
+0.88 0.41 1.0 
+0.91 0.41 1.0 
+
+
+0.91 0.38 1.0 
+0.94 0.38 1.0 
+
+0.91 0.41 1.0 
+0.94 0.41 1.0 
+
+
+0.88 0.41 1.0 
+0.91 0.41 1.0 
+
+0.88 0.44 1.0 
+0.91 0.44 1.0 
+
+
+0.91 0.41 1.0 
+0.94 0.41 1.0 
+
+0.91 0.44 1.0 
+0.94 0.44 1.0 
+
+
+0.94 0.38 1.0 
+0.97 0.38 1.0 
+
+0.94 0.41 1.0 
+0.97 0.41 1.0 
+
+
+0.97 0.38 1.0 
+1.0 0.38 1.0 
+
+0.97 0.41 1.0 
+1.0 0.41 1.0 
+
+
+0.94 0.41 1.0 
+0.97 0.41 1.0 
+
+0.94 0.44 1.0 
+0.97 0.44 1.0 
+
+
+0.97 0.41 1.0 
+1.0 0.41 1.0 
+
+0.97 0.44 1.0 
+1.0 0.44 1.0 
+
+
+0.88 0.44 1.0 
+0.91 0.44 1.0 
+
+0.88 0.47 1.0 
+0.91 0.47 1.0 
+
+
+0.91 0.44 1.0 
+0.94 0.44 1.0 
+
+0.91 0.47 1.0 
+0.94 0.47 1.0 
+
+
+0.88 0.47 1.0 
+0.91 0.47 1.0 
+
+0.88 0.50 1.0 
+0.91 0.50 1.0 
+
+
+0.91 0.47 1.0 
+0.94 0.47 1.0 
+
+0.91 0.50 1.0 
+0.94 0.50 1.0 
+
+
+0.94 0.44 1.0 
+0.97 0.44 1.0 
+
+0.94 0.47 1.0 
+0.97 0.47 1.0 
+
+
+0.97 0.44 1.0 
+1.0 0.44 1.0 
+
+0.97 0.47 1.0 
+1.0 0.47 1.0 
+
+
+0.94 0.47 1.0 
+0.97 0.47 1.0 
+
+0.94 0.50 1.0 
+0.97 0.50 1.0 
+
+
+0.97 0.47 1.0 
+1.0 0.47 1.0 
+
+0.97 0.50 1.0 
+1.0 0.50 1.0 
+
+
+0.0 0.50 1.0 
+0.031 0.50 1.0 
+
+0.0 0.53 1.0 
+0.031 0.53 1.0 
+
+
+0.031 0.50 1.0 
+0.062 0.50 1.0 
+
+0.031 0.53 1.0 
+0.062 0.53 1.0 
+
+
+0.0 0.53 1.0 
+0.031 0.53 1.0 
+
+0.0 0.56 1.0 
+0.031 0.56 1.0 
+
+
+0.031 0.53 1.0 
+0.062 0.53 1.0 
+
+0.031 0.56 1.0 
+0.062 0.56 1.0 
+
+
+0.062 0.50 1.0 
+0.094 0.50 1.0 
+
+0.062 0.53 1.0 
+0.094 0.53 1.0 
+
+
+0.094 0.50 1.0 
+0.12 0.50 1.0 
+
+0.094 0.53 1.0 
+0.12 0.53 1.0 
+
+
+0.062 0.53 1.0 
+0.094 0.53 1.0 
+
+0.062 0.56 1.0 
+0.094 0.56 1.0 
+
+
+0.094 0.53 1.0 
+0.12 0.53 1.0 
+
+0.094 0.56 1.0 
+0.12 0.56 1.0 
+
+
+0.0 0.56 1.0 
+0.031 0.56 1.0 
+
+0.0 0.59 1.0 
+0.031 0.59 1.0 
+
+
+0.031 0.56 1.0 
+0.062 0.56 1.0 
+
+0.031 0.59 1.0 
+0.062 0.59 1.0 
+
+
+0.0 0.59 1.0 
+0.031 0.59 1.0 
+
+0.0 0.62 1.0 
+0.031 0.62 1.0 
+
+
+0.031 0.59 1.0 
+0.062 0.59 1.0 
+
+0.031 0.62 1.0 
+0.062 0.62 1.0 
+
+
+0.062 0.56 1.0 
+0.094 0.56 1.0 
+
+0.062 0.59 1.0 
+0.094 0.59 1.0 
+
+
+0.094 0.56 1.0 
+0.12 0.56 1.0 
+
+0.094 0.59 1.0 
+0.12 0.59 1.0 
+
+
+0.062 0.59 1.0 
+0.094 0.59 1.0 
+
+0.062 0.62 1.0 
+0.094 0.62 1.0 
+
+
+0.094 0.59 1.0 
+0.12 0.59 1.0 
+
+0.094 0.62 1.0 
+0.12 0.62 1.0 
+
+
+0.12 0.50 1.0 
+0.16 0.50 1.0 
+
+0.12 0.53 1.0 
+0.16 0.53 1.0 
+
+
+0.16 0.50 1.0 
+0.19 0.50 1.0 
+
+0.16 0.53 1.0 
+0.19 0.53 1.0 
+
+
+0.12 0.53 1.0 
+0.16 0.53 1.0 
+
+0.12 0.56 1.0 
+0.16 0.56 1.0 
+
+
+0.16 0.53 1.0 
+0.19 0.53 1.0 
+
+0.16 0.56 1.0 
+0.19 0.56 1.0 
+
+
+0.19 0.50 1.0 
+0.22 0.50 1.0 
+
+0.19 0.53 1.0 
+0.22 0.53 1.0 
+
+
+0.22 0.50 1.0 
+0.25 0.50 1.0 
+
+0.22 0.53 1.0 
+0.25 0.53 1.0 
+
+
+0.19 0.53 1.0 
+0.22 0.53 1.0 
+
+0.19 0.56 1.0 
+0.22 0.56 1.0 
+
+
+0.22 0.53 1.0 
+0.25 0.53 1.0 
+
+0.22 0.56 1.0 
+0.25 0.56 1.0 
+
+
+0.12 0.56 1.0 
+0.16 0.56 1.0 
+
+0.12 0.59 1.0 
+0.16 0.59 1.0 
+
+
+0.16 0.56 1.0 
+0.19 0.56 1.0 
+
+0.16 0.59 1.0 
+0.19 0.59 1.0 
+
+
+0.12 0.59 1.0 
+0.16 0.59 1.0 
+
+0.12 0.62 1.0 
+0.16 0.62 1.0 
+
+
+0.16 0.59 1.0 
+0.19 0.59 1.0 
+
+0.16 0.62 1.0 
+0.19 0.62 1.0 
+
+
+0.19 0.56 1.0 
+0.22 0.56 1.0 
+
+0.19 0.59 1.0 
+0.22 0.59 1.0 
+
+
+0.22 0.56 1.0 
+0.25 0.56 1.0 
+
+0.22 0.59 1.0 
+0.25 0.59 1.0 
+
+
+0.19 0.59 1.0 
+0.22 0.59 1.0 
+
+0.19 0.62 1.0 
+0.22 0.62 1.0 
+
+
+0.22 0.59 1.0 
+0.25 0.59 1.0 
+
+0.22 0.62 1.0 
+0.25 0.62 1.0 
+
+
+0.0 0.62 1.0 
+0.031 0.62 1.0 
+
+0.0 0.66 1.0 
+0.031 0.66 1.0 
+
+
+0.031 0.62 1.0 
+0.062 0.62 1.0 
+
+0.031 0.66 1.0 
+0.062 0.66 1.0 
+
+
+0.0 0.66 1.0 
+0.031 0.66 1.0 
+
+0.0 0.69 1.0 
+0.031 0.69 1.0 
+
+
+0.031 0.66 1.0 
+0.062 0.66 1.0 
+
+0.031 0.69 1.0 
+0.062 0.69 1.0 
+
+
+0.062 0.62 1.0 
+0.094 0.62 1.0 
+
+0.062 0.66 1.0 
+0.094 0.66 1.0 
+
+
+0.094 0.62 1.0 
+0.12 0.62 1.0 
+
+0.094 0.66 1.0 
+0.12 0.66 1.0 
+
+
+0.062 0.66 1.0 
+0.094 0.66 1.0 
+
+0.062 0.69 1.0 
+0.094 0.69 1.0 
+
+
+0.094 0.66 1.0 
+0.12 0.66 1.0 
+
+0.094 0.69 1.0 
+0.12 0.69 1.0 
+
+
+0.0 0.69 1.0 
+0.031 0.69 1.0 
+
+0.0 0.72 1.0 
+0.031 0.72 1.0 
+
+
+0.031 0.69 1.0 
+0.062 0.69 1.0 
+
+0.031 0.72 1.0 
+0.062 0.72 1.0 
+
+
+0.0 0.72 1.0 
+0.031 0.72 1.0 
+
+0.0 0.75 1.0 
+0.031 0.75 1.0 
+
+
+0.031 0.72 1.0 
+0.062 0.72 1.0 
+
+0.031 0.75 1.0 
+0.062 0.75 1.0 
+
+
+0.062 0.69 1.0 
+0.094 0.69 1.0 
+
+0.062 0.72 1.0 
+0.094 0.72 1.0 
+
+
+0.094 0.69 1.0 
+0.12 0.69 1.0 
+
+0.094 0.72 1.0 
+0.12 0.72 1.0 
+
+
+0.062 0.72 1.0 
+0.094 0.72 1.0 
+
+0.062 0.75 1.0 
+0.094 0.75 1.0 
+
+
+0.094 0.72 1.0 
+0.12 0.72 1.0 
+
+0.094 0.75 1.0 
+0.12 0.75 1.0 
+
+
+0.12 0.62 1.0 
+0.16 0.62 1.0 
+
+0.12 0.66 1.0 
+0.16 0.66 1.0 
+
+
+0.16 0.62 1.0 
+0.19 0.62 1.0 
+
+0.16 0.66 1.0 
+0.19 0.66 1.0 
+
+
+0.12 0.66 1.0 
+0.16 0.66 1.0 
+
+0.12 0.69 1.0 
+0.16 0.69 1.0 
+
+
+0.16 0.66 1.0 
+0.19 0.66 1.0 
+
+0.16 0.69 1.0 
+0.19 0.69 1.0 
+
+
+0.19 0.62 1.0 
+0.22 0.62 1.0 
+
+0.19 0.66 1.0 
+0.22 0.66 1.0 
+
+
+0.22 0.62 1.0 
+0.25 0.62 1.0 
+
+0.22 0.66 1.0 
+0.25 0.66 1.0 
+
+
+0.19 0.66 1.0 
+0.22 0.66 1.0 
+
+0.19 0.69 1.0 
+0.22 0.69 1.0 
+
+
+0.22 0.66 1.0 
+0.25 0.66 1.0 
+
+0.22 0.69 1.0 
+0.25 0.69 1.0 
+
+
+0.12 0.69 1.0 
+0.16 0.69 1.0 
+
+0.12 0.72 1.0 
+0.16 0.72 1.0 
+
+
+0.16 0.69 1.0 
+0.19 0.69 1.0 
+
+0.16 0.72 1.0 
+0.19 0.72 1.0 
+
+
+0.12 0.72 1.0 
+0.16 0.72 1.0 
+
+0.12 0.75 1.0 
+0.16 0.75 1.0 
+
+
+0.16 0.72 1.0 
+0.19 0.72 1.0 
+
+0.16 0.75 1.0 
+0.19 0.75 1.0 
+
+
+0.19 0.69 1.0 
+0.22 0.69 1.0 
+
+0.19 0.72 1.0 
+0.22 0.72 1.0 
+
+
+0.22 0.69 1.0 
+0.25 0.69 1.0 
+
+0.22 0.72 1.0 
+0.25 0.72 1.0 
+
+
+0.19 0.72 1.0 
+0.22 0.72 1.0 
+
+0.19 0.75 1.0 
+0.22 0.75 1.0 
+
+
+0.22 0.72 1.0 
+0.25 0.72 1.0 
+
+0.22 0.75 1.0 
+0.25 0.75 1.0 
+
+
+0.25 0.50 1.0 
+0.28 0.50 1.0 
+
+0.25 0.53 1.0 
+0.28 0.53 1.0 
+
+
+0.28 0.50 1.0 
+0.31 0.50 1.0 
+
+0.28 0.53 1.0 
+0.31 0.53 1.0 
+
+
+0.25 0.53 1.0 
+0.28 0.53 1.0 
+
+0.25 0.56 1.0 
+0.28 0.56 1.0 
+
+
+0.28 0.53 1.0 
+0.31 0.53 1.0 
+
+0.28 0.56 1.0 
+0.31 0.56 1.0 
+
+
+0.31 0.50 1.0 
+0.34 0.50 1.0 
+
+0.31 0.53 1.0 
+0.34 0.53 1.0 
+
+
+0.34 0.50 1.0 
+0.38 0.50 1.0 
+
+0.34 0.53 1.0 
+0.38 0.53 1.0 
+
+
+0.31 0.53 1.0 
+0.34 0.53 1.0 
+
+0.31 0.56 1.0 
+0.34 0.56 1.0 
+
+
+0.34 0.53 1.0 
+0.38 0.53 1.0 
+
+0.34 0.56 1.0 
+0.38 0.56 1.0 
+
+
+0.25 0.56 1.0 
+0.28 0.56 1.0 
+
+0.25 0.59 1.0 
+0.28 0.59 1.0 
+
+
+0.28 0.56 1.0 
+0.31 0.56 1.0 
+
+0.28 0.59 1.0 
+0.31 0.59 1.0 
+
+
+0.25 0.59 1.0 
+0.28 0.59 1.0 
+
+0.25 0.62 1.0 
+0.28 0.62 1.0 
+
+
+0.28 0.59 1.0 
+0.31 0.59 1.0 
+
+0.28 0.62 1.0 
+0.31 0.62 1.0 
+
+
+0.31 0.56 1.0 
+0.34 0.56 1.0 
+
+0.31 0.59 1.0 
+0.34 0.59 1.0 
+
+
+0.34 0.56 1.0 
+0.38 0.56 1.0 
+
+0.34 0.59 1.0 
+0.38 0.59 1.0 
+
+
+0.31 0.59 1.0 
+0.34 0.59 1.0 
+
+0.31 0.62 1.0 
+0.34 0.62 1.0 
+
+
+0.34 0.59 1.0 
+0.38 0.59 1.0 
+
+0.34 0.62 1.0 
+0.38 0.62 1.0 
+
+
+0.38 0.50 1.0 
+0.41 0.50 1.0 
+
+0.38 0.53 1.0 
+0.41 0.53 1.0 
+
+
+0.41 0.50 1.0 
+0.44 0.50 1.0 
+
+0.41 0.53 1.0 
+0.44 0.53 1.0 
+
+
+0.38 0.53 1.0 
+0.41 0.53 1.0 
+
+0.38 0.56 1.0 
+0.41 0.56 1.0 
+
+
+0.41 0.53 1.0 
+0.44 0.53 1.0 
+
+0.41 0.56 1.0 
+0.44 0.56 1.0 
+
+
+0.44 0.50 1.0 
+0.47 0.50 1.0 
+
+0.44 0.53 1.0 
+0.47 0.53 1.0 
+
+
+0.47 0.50 1.0 
+0.50 0.50 1.0 
+
+0.47 0.53 1.0 
+0.50 0.53 1.0 
+
+
+0.44 0.53 1.0 
+0.47 0.53 1.0 
+
+0.44 0.56 1.0 
+0.47 0.56 1.0 
+
+
+0.47 0.53 1.0 
+0.50 0.53 1.0 
+
+0.47 0.56 1.0 
+0.50 0.56 1.0 
+
+
+0.38 0.56 1.0 
+0.41 0.56 1.0 
+
+0.38 0.59 1.0 
+0.41 0.59 1.0 
+
+
+0.41 0.56 1.0 
+0.44 0.56 1.0 
+
+0.41 0.59 1.0 
+0.44 0.59 1.0 
+
+
+0.38 0.59 1.0 
+0.41 0.59 1.0 
+
+0.38 0.62 1.0 
+0.41 0.62 1.0 
+
+
+0.41 0.59 1.0 
+0.44 0.59 1.0 
+
+0.41 0.62 1.0 
+0.44 0.62 1.0 
+
+
+0.44 0.56 1.0 
+0.47 0.56 1.0 
+
+0.44 0.59 1.0 
+0.47 0.59 1.0 
+
+
+0.47 0.56 1.0 
+0.50 0.56 1.0 
+
+0.47 0.59 1.0 
+0.50 0.59 1.0 
+
+
+0.44 0.59 1.0 
+0.47 0.59 1.0 
+
+0.44 0.62 1.0 
+0.47 0.62 1.0 
+
+
+0.47 0.59 1.0 
+0.50 0.59 1.0 
+
+0.47 0.62 1.0 
+0.50 0.62 1.0 
+
+
+0.25 0.62 1.0 
+0.28 0.62 1.0 
+
+0.25 0.66 1.0 
+0.28 0.66 1.0 
+
+
+0.28 0.62 1.0 
+0.31 0.62 1.0 
+
+0.28 0.66 1.0 
+0.31 0.66 1.0 
+
+
+0.25 0.66 1.0 
+0.28 0.66 1.0 
+
+0.25 0.69 1.0 
+0.28 0.69 1.0 
+
+
+0.28 0.66 1.0 
+0.31 0.66 1.0 
+
+0.28 0.69 1.0 
+0.31 0.69 1.0 
+
+
+0.31 0.62 1.0 
+0.34 0.62 1.0 
+
+0.31 0.66 1.0 
+0.34 0.66 1.0 
+
+
+0.34 0.62 1.0 
+0.38 0.62 1.0 
+
+0.34 0.66 1.0 
+0.38 0.66 1.0 
+
+
+0.31 0.66 1.0 
+0.34 0.66 1.0 
+
+0.31 0.69 1.0 
+0.34 0.69 1.0 
+
+
+0.34 0.66 1.0 
+0.38 0.66 1.0 
+
+0.34 0.69 1.0 
+0.38 0.69 1.0 
+
+
+0.25 0.69 1.0 
+0.28 0.69 1.0 
+
+0.25 0.72 1.0 
+0.28 0.72 1.0 
+
+
+0.28 0.69 1.0 
+0.31 0.69 1.0 
+
+0.28 0.72 1.0 
+0.31 0.72 1.0 
+
+
+0.25 0.72 1.0 
+0.28 0.72 1.0 
+
+0.25 0.75 1.0 
+0.28 0.75 1.0 
+
+
+0.28 0.72 1.0 
+0.31 0.72 1.0 
+
+0.28 0.75 1.0 
+0.31 0.75 1.0 
+
+
+0.31 0.69 1.0 
+0.34 0.69 1.0 
+
+0.31 0.72 1.0 
+0.34 0.72 1.0 
+
+
+0.34 0.69 1.0 
+0.38 0.69 1.0 
+
+0.34 0.72 1.0 
+0.38 0.72 1.0 
+
+
+0.31 0.72 1.0 
+0.34 0.72 1.0 
+
+0.31 0.75 1.0 
+0.34 0.75 1.0 
+
+
+0.34 0.72 1.0 
+0.38 0.72 1.0 
+
+0.34 0.75 1.0 
+0.38 0.75 1.0 
+
+
+0.38 0.62 1.0 
+0.41 0.62 1.0 
+
+0.38 0.66 1.0 
+0.41 0.66 1.0 
+
+
+0.41 0.62 1.0 
+0.44 0.62 1.0 
+
+0.41 0.66 1.0 
+0.44 0.66 1.0 
+
+
+0.38 0.66 1.0 
+0.41 0.66 1.0 
+
+0.38 0.69 1.0 
+0.41 0.69 1.0 
+
+
+0.41 0.66 1.0 
+0.44 0.66 1.0 
+
+0.41 0.69 1.0 
+0.44 0.69 1.0 
+
+
+0.44 0.62 1.0 
+0.47 0.62 1.0 
+
+0.44 0.66 1.0 
+0.47 0.66 1.0 
+
+
+0.47 0.62 1.0 
+0.50 0.62 1.0 
+
+0.47 0.66 1.0 
+0.50 0.66 1.0 
+
+
+0.44 0.66 1.0 
+0.47 0.66 1.0 
+
+0.44 0.69 1.0 
+0.47 0.69 1.0 
+
+
+0.47 0.66 1.0 
+0.50 0.66 1.0 
+
+0.47 0.69 1.0 
+0.50 0.69 1.0 
+
+
+0.38 0.69 1.0 
+0.41 0.69 1.0 
+
+0.38 0.72 1.0 
+0.41 0.72 1.0 
+
+
+0.41 0.69 1.0 
+0.44 0.69 1.0 
+
+0.41 0.72 1.0 
+0.44 0.72 1.0 
+
+
+0.38 0.72 1.0 
+0.41 0.72 1.0 
+
+0.38 0.75 1.0 
+0.41 0.75 1.0 
+
+
+0.41 0.72 1.0 
+0.44 0.72 1.0 
+
+0.41 0.75 1.0 
+0.44 0.75 1.0 
+
+
+0.44 0.69 1.0 
+0.47 0.69 1.0 
+
+0.44 0.72 1.0 
+0.47 0.72 1.0 
+
+
+0.47 0.69 1.0 
+0.50 0.69 1.0 
+
+0.47 0.72 1.0 
+0.50 0.72 1.0 
+
+
+0.44 0.72 1.0 
+0.47 0.72 1.0 
+
+0.44 0.75 1.0 
+0.47 0.75 1.0 
+
+
+0.47 0.72 1.0 
+0.50 0.72 1.0 
+
+0.47 0.75 1.0 
+0.50 0.75 1.0 
+
+
+0.0 0.75 1.0 
+0.031 0.75 1.0 
+
+0.0 0.78 1.0 
+0.031 0.78 1.0 
+
+
+0.031 0.75 1.0 
+0.062 0.75 1.0 
+
+0.031 0.78 1.0 
+0.062 0.78 1.0 
+
+
+0.0 0.78 1.0 
+0.031 0.78 1.0 
+
+0.0 0.81 1.0 
+0.031 0.81 1.0 
+
+
+0.031 0.78 1.0 
+0.062 0.78 1.0 
+
+0.031 0.81 1.0 
+0.062 0.81 1.0 
+
+
+0.062 0.75 1.0 
+0.094 0.75 1.0 
+
+0.062 0.78 1.0 
+0.094 0.78 1.0 
+
+
+0.094 0.75 1.0 
+0.12 0.75 1.0 
+
+0.094 0.78 1.0 
+0.12 0.78 1.0 
+
+
+0.062 0.78 1.0 
+0.094 0.78 1.0 
+
+0.062 0.81 1.0 
+0.094 0.81 1.0 
+
+
+0.094 0.78 1.0 
+0.12 0.78 1.0 
+
+0.094 0.81 1.0 
+0.12 0.81 1.0 
+
+
+0.0 0.81 1.0 
+0.031 0.81 1.0 
+
+0.0 0.84 1.0 
+0.031 0.84 1.0 
+
+
+0.031 0.81 1.0 
+0.062 0.81 1.0 
+
+0.031 0.84 1.0 
+0.062 0.84 1.0 
+
+
+0.0 0.84 1.0 
+0.031 0.84 1.0 
+
+0.0 0.88 1.0 
+0.031 0.88 1.0 
+
+
+0.031 0.84 1.0 
+0.062 0.84 1.0 
+
+0.031 0.88 1.0 
+0.062 0.88 1.0 
+
+
+0.062 0.81 1.0 
+0.094 0.81 1.0 
+
+0.062 0.84 1.0 
+0.094 0.84 1.0 
+
+
+0.094 0.81 1.0 
+0.12 0.81 1.0 
+
+0.094 0.84 1.0 
+0.12 0.84 1.0 
+
+
+0.062 0.84 1.0 
+0.094 0.84 1.0 
+
+0.062 0.88 1.0 
+0.094 0.88 1.0 
+
+
+0.094 0.84 1.0 
+0.12 0.84 1.0 
+
+0.094 0.88 1.0 
+0.12 0.88 1.0 
+
+
+0.12 0.75 1.0 
+0.16 0.75 1.0 
+
+0.12 0.78 1.0 
+0.16 0.78 1.0 
+
+
+0.16 0.75 1.0 
+0.19 0.75 1.0 
+
+0.16 0.78 1.0 
+0.19 0.78 1.0 
+
+
+0.12 0.78 1.0 
+0.16 0.78 1.0 
+
+0.12 0.81 1.0 
+0.16 0.81 1.0 
+
+
+0.16 0.78 1.0 
+0.19 0.78 1.0 
+
+0.16 0.81 1.0 
+0.19 0.81 1.0 
+
+
+0.19 0.75 1.0 
+0.22 0.75 1.0 
+
+0.19 0.78 1.0 
+0.22 0.78 1.0 
+
+
+0.22 0.75 1.0 
+0.25 0.75 1.0 
+
+0.22 0.78 1.0 
+0.25 0.78 1.0 
+
+
+0.19 0.78 1.0 
+0.22 0.78 1.0 
+
+0.19 0.81 1.0 
+0.22 0.81 1.0 
+
+
+0.22 0.78 1.0 
+0.25 0.78 1.0 
+
+0.22 0.81 1.0 
+0.25 0.81 1.0 
+
+
+0.12 0.81 1.0 
+0.16 0.81 1.0 
+
+0.12 0.84 1.0 
+0.16 0.84 1.0 
+
+
+0.16 0.81 1.0 
+0.19 0.81 1.0 
+
+0.16 0.84 1.0 
+0.19 0.84 1.0 
+
+
+0.12 0.84 1.0 
+0.16 0.84 1.0 
+
+0.12 0.88 1.0 
+0.16 0.88 1.0 
+
+
+0.16 0.84 1.0 
+0.19 0.84 1.0 
+
+0.16 0.88 1.0 
+0.19 0.88 1.0 
+
+
+0.19 0.81 1.0 
+0.22 0.81 1.0 
+
+0.19 0.84 1.0 
+0.22 0.84 1.0 
+
+
+0.22 0.81 1.0 
+0.25 0.81 1.0 
+
+0.22 0.84 1.0 
+0.25 0.84 1.0 
+
+
+0.19 0.84 1.0 
+0.22 0.84 1.0 
+
+0.19 0.88 1.0 
+0.22 0.88 1.0 
+
+
+0.22 0.84 1.0 
+0.25 0.84 1.0 
+
+0.22 0.88 1.0 
+0.25 0.88 1.0 
+
+
+0.0 0.88 1.0 
+0.031 0.88 1.0 
+
+0.0 0.91 1.0 
+0.031 0.91 1.0 
+
+
+0.031 0.88 1.0 
+0.062 0.88 1.0 
+
+0.031 0.91 1.0 
+0.062 0.91 1.0 
+
+
+0.0 0.91 1.0 
+0.031 0.91 1.0 
+
+0.0 0.94 1.0 
+0.031 0.94 1.0 
+
+
+0.031 0.91 1.0 
+0.062 0.91 1.0 
+
+0.031 0.94 1.0 
+0.062 0.94 1.0 
+
+
+0.062 0.88 1.0 
+0.094 0.88 1.0 
+
+0.062 0.91 1.0 
+0.094 0.91 1.0 
+
+
+0.094 0.88 1.0 
+0.12 0.88 1.0 
+
+0.094 0.91 1.0 
+0.12 0.91 1.0 
+
+
+0.062 0.91 1.0 
+0.094 0.91 1.0 
+
+0.062 0.94 1.0 
+0.094 0.94 1.0 
+
+
+0.094 0.91 1.0 
+0.12 0.91 1.0 
+
+0.094 0.94 1.0 
+0.12 0.94 1.0 
+
+
+0.0 0.94 1.0 
+0.031 0.94 1.0 
+
+0.0 0.97 1.0 
+0.031 0.97 1.0 
+
+
+0.031 0.94 1.0 
+0.062 0.94 1.0 
+
+0.031 0.97 1.0 
+0.062 0.97 1.0 
+
+
+0.0 0.97 1.0 
+0.031 0.97 1.0 
+
+0.0 1.0 1.0 
+0.031 1.0 1.0 
+
+
+0.031 0.97 1.0 
+0.062 0.97 1.0 
+
+0.031 1.0 1.0 
+0.062 1.0 1.0 
+
+
+0.062 0.94 1.0 
+0.094 0.94 1.0 
+
+0.062 0.97 1.0 
+0.094 0.97 1.0 
+
+
+0.094 0.94 1.0 
+0.12 0.94 1.0 
+
+0.094 0.97 1.0 
+0.12 0.97 1.0 
+
+
+0.062 0.97 1.0 
+0.094 0.97 1.0 
+
+0.062 1.0 1.0 
+0.094 1.0 1.0 
+
+
+0.094 0.97 1.0 
+0.12 0.97 1.0 
+
+0.094 1.0 1.0 
+0.12 1.0 1.0 
+
+
+0.12 0.88 1.0 
+0.16 0.88 1.0 
+
+0.12 0.91 1.0 
+0.16 0.91 1.0 
+
+
+0.16 0.88 1.0 
+0.19 0.88 1.0 
+
+0.16 0.91 1.0 
+0.19 0.91 1.0 
+
+
+0.12 0.91 1.0 
+0.16 0.91 1.0 
+
+0.12 0.94 1.0 
+0.16 0.94 1.0 
+
+
+0.16 0.91 1.0 
+0.19 0.91 1.0 
+
+0.16 0.94 1.0 
+0.19 0.94 1.0 
+
+
+0.19 0.88 1.0 
+0.22 0.88 1.0 
+
+0.19 0.91 1.0 
+0.22 0.91 1.0 
+
+
+0.22 0.88 1.0 
+0.25 0.88 1.0 
+
+0.22 0.91 1.0 
+0.25 0.91 1.0 
+
+
+0.19 0.91 1.0 
+0.22 0.91 1.0 
+
+0.19 0.94 1.0 
+0.22 0.94 1.0 
+
+
+0.22 0.91 1.0 
+0.25 0.91 1.0 
+
+0.22 0.94 1.0 
+0.25 0.94 1.0 
+
+
+0.12 0.94 1.0 
+0.16 0.94 1.0 
+
+0.12 0.97 1.0 
+0.16 0.97 1.0 
+
+
+0.16 0.94 1.0 
+0.19 0.94 1.0 
+
+0.16 0.97 1.0 
+0.19 0.97 1.0 
+
+
+0.12 0.97 1.0 
+0.16 0.97 1.0 
+
+0.12 1.0 1.0 
+0.16 1.0 1.0 
+
+
+0.16 0.97 1.0 
+0.19 0.97 1.0 
+
+0.16 1.0 1.0 
+0.19 1.0 1.0 
+
+
+0.19 0.94 1.0 
+0.22 0.94 1.0 
+
+0.19 0.97 1.0 
+0.22 0.97 1.0 
+
+
+0.22 0.94 1.0 
+0.25 0.94 1.0 
+
+0.22 0.97 1.0 
+0.25 0.97 1.0 
+
+
+0.19 0.97 1.0 
+0.22 0.97 1.0 
+
+0.19 1.0 1.0 
+0.22 1.0 1.0 
+
+
+0.22 0.97 1.0 
+0.25 0.97 1.0 
+
+0.22 1.0 1.0 
+0.25 1.0 1.0 
+
+
+0.25 0.75 1.0 
+0.28 0.75 1.0 
+
+0.25 0.78 1.0 
+0.28 0.78 1.0 
+
+
+0.28 0.75 1.0 
+0.31 0.75 1.0 
+
+0.28 0.78 1.0 
+0.31 0.78 1.0 
+
+
+0.25 0.78 1.0 
+0.28 0.78 1.0 
+
+0.25 0.81 1.0 
+0.28 0.81 1.0 
+
+
+0.28 0.78 1.0 
+0.31 0.78 1.0 
+
+0.28 0.81 1.0 
+0.31 0.81 1.0 
+
+
+0.31 0.75 1.0 
+0.34 0.75 1.0 
+
+0.31 0.78 1.0 
+0.34 0.78 1.0 
+
+
+0.34 0.75 1.0 
+0.38 0.75 1.0 
+
+0.34 0.78 1.0 
+0.38 0.78 1.0 
+
+
+0.31 0.78 1.0 
+0.34 0.78 1.0 
+
+0.31 0.81 1.0 
+0.34 0.81 1.0 
+
+
+0.34 0.78 1.0 
+0.38 0.78 1.0 
+
+0.34 0.81 1.0 
+0.38 0.81 1.0 
+
+
+0.25 0.81 1.0 
+0.28 0.81 1.0 
+
+0.25 0.84 1.0 
+0.28 0.84 1.0 
+
+
+0.28 0.81 1.0 
+0.31 0.81 1.0 
+
+0.28 0.84 1.0 
+0.31 0.84 1.0 
+
+
+0.25 0.84 1.0 
+0.28 0.84 1.0 
+
+0.25 0.88 1.0 
+0.28 0.88 1.0 
+
+
+0.28 0.84 1.0 
+0.31 0.84 1.0 
+
+0.28 0.88 1.0 
+0.31 0.88 1.0 
+
+
+0.31 0.81 1.0 
+0.34 0.81 1.0 
+
+0.31 0.84 1.0 
+0.34 0.84 1.0 
+
+
+0.34 0.81 1.0 
+0.38 0.81 1.0 
+
+0.34 0.84 1.0 
+0.38 0.84 1.0 
+
+
+0.31 0.84 1.0 
+0.34 0.84 1.0 
+
+0.31 0.88 1.0 
+0.34 0.88 1.0 
+
+
+0.34 0.84 1.0 
+0.38 0.84 1.0 
+
+0.34 0.88 1.0 
+0.38 0.88 1.0 
+
+
+0.38 0.75 1.0 
+0.41 0.75 1.0 
+
+0.38 0.78 1.0 
+0.41 0.78 1.0 
+
+
+0.41 0.75 1.0 
+0.44 0.75 1.0 
+
+0.41 0.78 1.0 
+0.44 0.78 1.0 
+
+
+0.38 0.78 1.0 
+0.41 0.78 1.0 
+
+0.38 0.81 1.0 
+0.41 0.81 1.0 
+
+
+0.41 0.78 1.0 
+0.44 0.78 1.0 
+
+0.41 0.81 1.0 
+0.44 0.81 1.0 
+
+
+0.44 0.75 1.0 
+0.47 0.75 1.0 
+
+0.44 0.78 1.0 
+0.47 0.78 1.0 
+
+
+0.47 0.75 1.0 
+0.50 0.75 1.0 
+
+0.47 0.78 1.0 
+0.50 0.78 1.0 
+
+
+0.44 0.78 1.0 
+0.47 0.78 1.0 
+
+0.44 0.81 1.0 
+0.47 0.81 1.0 
+
+
+0.47 0.78 1.0 
+0.50 0.78 1.0 
+
+0.47 0.81 1.0 
+0.50 0.81 1.0 
+
+
+0.38 0.81 1.0 
+0.41 0.81 1.0 
+
+0.38 0.84 1.0 
+0.41 0.84 1.0 
+
+
+0.41 0.81 1.0 
+0.44 0.81 1.0 
+
+0.41 0.84 1.0 
+0.44 0.84 1.0 
+
+
+0.38 0.84 1.0 
+0.41 0.84 1.0 
+
+0.38 0.88 1.0 
+0.41 0.88 1.0 
+
+
+0.41 0.84 1.0 
+0.44 0.84 1.0 
+
+0.41 0.88 1.0 
+0.44 0.88 1.0 
+
+
+0.44 0.81 1.0 
+0.47 0.81 1.0 
+
+0.44 0.84 1.0 
+0.47 0.84 1.0 
+
+
+0.47 0.81 1.0 
+0.50 0.81 1.0 
+
+0.47 0.84 1.0 
+0.50 0.84 1.0 
+
+
+0.44 0.84 1.0 
+0.47 0.84 1.0 
+
+0.44 0.88 1.0 
+0.47 0.88 1.0 
+
+
+0.47 0.84 1.0 
+0.50 0.84 1.0 
+
+0.47 0.88 1.0 
+0.50 0.88 1.0 
+
+
+0.25 0.88 1.0 
+0.28 0.88 1.0 
+
+0.25 0.91 1.0 
+0.28 0.91 1.0 
+
+
+0.28 0.88 1.0 
+0.31 0.88 1.0 
+
+0.28 0.91 1.0 
+0.31 0.91 1.0 
+
+
+0.25 0.91 1.0 
+0.28 0.91 1.0 
+
+0.25 0.94 1.0 
+0.28 0.94 1.0 
+
+
+0.28 0.91 1.0 
+0.31 0.91 1.0 
+
+0.28 0.94 1.0 
+0.31 0.94 1.0 
+
+
+0.31 0.88 1.0 
+0.34 0.88 1.0 
+
+0.31 0.91 1.0 
+0.34 0.91 1.0 
+
+
+0.34 0.88 1.0 
+0.38 0.88 1.0 
+
+0.34 0.91 1.0 
+0.38 0.91 1.0 
+
+
+0.31 0.91 1.0 
+0.34 0.91 1.0 
+
+0.31 0.94 1.0 
+0.34 0.94 1.0 
+
+
+0.34 0.91 1.0 
+0.38 0.91 1.0 
+
+0.34 0.94 1.0 
+0.38 0.94 1.0 
+
+
+0.25 0.94 1.0 
+0.28 0.94 1.0 
+
+0.25 0.97 1.0 
+0.28 0.97 1.0 
+
+
+0.28 0.94 1.0 
+0.31 0.94 1.0 
+
+0.28 0.97 1.0 
+0.31 0.97 1.0 
+
+
+0.25 0.97 1.0 
+0.28 0.97 1.0 
+
+0.25 1.0 1.0 
+0.28 1.0 1.0 
+
+
+0.28 0.97 1.0 
+0.31 0.97 1.0 
+
+0.28 1.0 1.0 
+0.31 1.0 1.0 
+
+
+0.31 0.94 1.0 
+0.34 0.94 1.0 
+
+0.31 0.97 1.0 
+0.34 0.97 1.0 
+
+
+0.34 0.94 1.0 
+0.38 0.94 1.0 
+
+0.34 0.97 1.0 
+0.38 0.97 1.0 
+
+
+0.31 0.97 1.0 
+0.34 0.97 1.0 
+
+0.31 1.0 1.0 
+0.34 1.0 1.0 
+
+
+0.34 0.97 1.0 
+0.38 0.97 1.0 
+
+0.34 1.0 1.0 
+0.38 1.0 1.0 
+
+
+0.38 0.88 1.0 
+0.41 0.88 1.0 
+
+0.38 0.91 1.0 
+0.41 0.91 1.0 
+
+
+0.41 0.88 1.0 
+0.44 0.88 1.0 
+
+0.41 0.91 1.0 
+0.44 0.91 1.0 
+
+
+0.38 0.91 1.0 
+0.41 0.91 1.0 
+
+0.38 0.94 1.0 
+0.41 0.94 1.0 
+
+
+0.41 0.91 1.0 
+0.44 0.91 1.0 
+
+0.41 0.94 1.0 
+0.44 0.94 1.0 
+
+
+0.44 0.88 1.0 
+0.47 0.88 1.0 
+
+0.44 0.91 1.0 
+0.47 0.91 1.0 
+
+
+0.47 0.88 1.0 
+0.50 0.88 1.0 
+
+0.47 0.91 1.0 
+0.50 0.91 1.0 
+
+
+0.44 0.91 1.0 
+0.47 0.91 1.0 
+
+0.44 0.94 1.0 
+0.47 0.94 1.0 
+
+
+0.47 0.91 1.0 
+0.50 0.91 1.0 
+
+0.47 0.94 1.0 
+0.50 0.94 1.0 
+
+
+0.38 0.94 1.0 
+0.41 0.94 1.0 
+
+0.38 0.97 1.0 
+0.41 0.97 1.0 
+
+
+0.41 0.94 1.0 
+0.44 0.94 1.0 
+
+0.41 0.97 1.0 
+0.44 0.97 1.0 
+
+
+0.38 0.97 1.0 
+0.41 0.97 1.0 
+
+0.38 1.0 1.0 
+0.41 1.0 1.0 
+
+
+0.41 0.97 1.0 
+0.44 0.97 1.0 
+
+0.41 1.0 1.0 
+0.44 1.0 1.0 
+
+
+0.44 0.94 1.0 
+0.47 0.94 1.0 
+
+0.44 0.97 1.0 
+0.47 0.97 1.0 
+
+
+0.47 0.94 1.0 
+0.50 0.94 1.0 
+
+0.47 0.97 1.0 
+0.50 0.97 1.0 
+
+
+0.44 0.97 1.0 
+0.47 0.97 1.0 
+
+0.44 1.0 1.0 
+0.47 1.0 1.0 
+
+
+0.47 0.97 1.0 
+0.50 0.97 1.0 
+
+0.47 1.0 1.0 
+0.50 1.0 1.0 
+
+
+0.50 0.50 1.0 
+0.53 0.50 1.0 
+
+0.50 0.53 1.0 
+0.53 0.53 1.0 
+
+
+0.53 0.50 1.0 
+0.56 0.50 1.0 
+
+0.53 0.53 1.0 
+0.56 0.53 1.0 
+
+
+0.50 0.53 1.0 
+0.53 0.53 1.0 
+
+0.50 0.56 1.0 
+0.53 0.56 1.0 
+
+
+0.53 0.53 1.0 
+0.56 0.53 1.0 
+
+0.53 0.56 1.0 
+0.56 0.56 1.0 
+
+
+0.56 0.50 1.0 
+0.59 0.50 1.0 
+
+0.56 0.53 1.0 
+0.59 0.53 1.0 
+
+
+0.59 0.50 1.0 
+0.62 0.50 1.0 
+
+0.59 0.53 1.0 
+0.62 0.53 1.0 
+
+
+0.56 0.53 1.0 
+0.59 0.53 1.0 
+
+0.56 0.56 1.0 
+0.59 0.56 1.0 
+
+
+0.59 0.53 1.0 
+0.62 0.53 1.0 
+
+0.59 0.56 1.0 
+0.62 0.56 1.0 
+
+
+0.50 0.56 1.0 
+0.53 0.56 1.0 
+
+0.50 0.59 1.0 
+0.53 0.59 1.0 
+
+
+0.53 0.56 1.0 
+0.56 0.56 1.0 
+
+0.53 0.59 1.0 
+0.56 0.59 1.0 
+
+
+0.50 0.59 1.0 
+0.53 0.59 1.0 
+
+0.50 0.62 1.0 
+0.53 0.62 1.0 
+
+
+0.53 0.59 1.0 
+0.56 0.59 1.0 
+
+0.53 0.62 1.0 
+0.56 0.62 1.0 
+
+
+0.56 0.56 1.0 
+0.59 0.56 1.0 
+
+0.56 0.59 1.0 
+0.59 0.59 1.0 
+
+
+0.59 0.56 1.0 
+0.62 0.56 1.0 
+
+0.59 0.59 1.0 
+0.62 0.59 1.0 
+
+
+0.56 0.59 1.0 
+0.59 0.59 1.0 
+
+0.56 0.62 1.0 
+0.59 0.62 1.0 
+
+
+0.59 0.59 1.0 
+0.62 0.59 1.0 
+
+0.59 0.62 1.0 
+0.62 0.62 1.0 
+
+
+0.62 0.50 1.0 
+0.66 0.50 1.0 
+
+0.62 0.53 1.0 
+0.66 0.53 1.0 
+
+
+0.66 0.50 1.0 
+0.69 0.50 1.0 
+
+0.66 0.53 1.0 
+0.69 0.53 1.0 
+
+
+0.62 0.53 1.0 
+0.66 0.53 1.0 
+
+0.62 0.56 1.0 
+0.66 0.56 1.0 
+
+
+0.66 0.53 1.0 
+0.69 0.53 1.0 
+
+0.66 0.56 1.0 
+0.69 0.56 1.0 
+
+
+0.69 0.50 1.0 
+0.72 0.50 1.0 
+
+0.69 0.53 1.0 
+0.72 0.53 1.0 
+
+
+0.72 0.50 1.0 
+0.75 0.50 1.0 
+
+0.72 0.53 1.0 
+0.75 0.53 1.0 
+
+
+0.69 0.53 1.0 
+0.72 0.53 1.0 
+
+0.69 0.56 1.0 
+0.72 0.56 1.0 
+
+
+0.72 0.53 1.0 
+0.75 0.53 1.0 
+
+0.72 0.56 1.0 
+0.75 0.56 1.0 
+
+
+0.62 0.56 1.0 
+0.66 0.56 1.0 
+
+0.62 0.59 1.0 
+0.66 0.59 1.0 
+
+
+0.66 0.56 1.0 
+0.69 0.56 1.0 
+
+0.66 0.59 1.0 
+0.69 0.59 1.0 
+
+
+0.62 0.59 1.0 
+0.66 0.59 1.0 
+
+0.62 0.62 1.0 
+0.66 0.62 1.0 
+
+
+0.66 0.59 1.0 
+0.69 0.59 1.0 
+
+0.66 0.62 1.0 
+0.69 0.62 1.0 
+
+
+0.69 0.56 1.0 
+0.72 0.56 1.0 
+
+0.69 0.59 1.0 
+0.72 0.59 1.0 
+
+
+0.72 0.56 1.0 
+0.75 0.56 1.0 
+
+0.72 0.59 1.0 
+0.75 0.59 1.0 
+
+
+0.69 0.59 1.0 
+0.72 0.59 1.0 
+
+0.69 0.62 1.0 
+0.72 0.62 1.0 
+
+
+0.72 0.59 1.0 
+0.75 0.59 1.0 
+
+0.72 0.62 1.0 
+0.75 0.62 1.0 
+
+
+0.50 0.62 1.0 
+0.53 0.62 1.0 
+
+0.50 0.66 1.0 
+0.53 0.66 1.0 
+
+
+0.53 0.62 1.0 
+0.56 0.62 1.0 
+
+0.53 0.66 1.0 
+0.56 0.66 1.0 
+
+
+0.50 0.66 1.0 
+0.53 0.66 1.0 
+
+0.50 0.69 1.0 
+0.53 0.69 1.0 
+
+
+0.53 0.66 1.0 
+0.56 0.66 1.0 
+
+0.53 0.69 1.0 
+0.56 0.69 1.0 
+
+
+0.56 0.62 1.0 
+0.59 0.62 1.0 
+
+0.56 0.66 1.0 
+0.59 0.66 1.0 
+
+
+0.59 0.62 1.0 
+0.62 0.62 1.0 
+
+0.59 0.66 1.0 
+0.62 0.66 1.0 
+
+
+0.56 0.66 1.0 
+0.59 0.66 1.0 
+
+0.56 0.69 1.0 
+0.59 0.69 1.0 
+
+
+0.59 0.66 1.0 
+0.62 0.66 1.0 
+
+0.59 0.69 1.0 
+0.62 0.69 1.0 
+
+
+0.50 0.69 1.0 
+0.53 0.69 1.0 
+
+0.50 0.72 1.0 
+0.53 0.72 1.0 
+
+
+0.53 0.69 1.0 
+0.56 0.69 1.0 
+
+0.53 0.72 1.0 
+0.56 0.72 1.0 
+
+
+0.50 0.72 1.0 
+0.53 0.72 1.0 
+
+0.50 0.75 1.0 
+0.53 0.75 1.0 
+
+
+0.53 0.72 1.0 
+0.56 0.72 1.0 
+
+0.53 0.75 1.0 
+0.56 0.75 1.0 
+
+
+0.56 0.69 1.0 
+0.59 0.69 1.0 
+
+0.56 0.72 1.0 
+0.59 0.72 1.0 
+
+
+0.59 0.69 1.0 
+0.62 0.69 1.0 
+
+0.59 0.72 1.0 
+0.62 0.72 1.0 
+
+
+0.56 0.72 1.0 
+0.59 0.72 1.0 
+
+0.56 0.75 1.0 
+0.59 0.75 1.0 
+
+
+0.59 0.72 1.0 
+0.62 0.72 1.0 
+
+0.59 0.75 1.0 
+0.62 0.75 1.0 
+
+
+0.62 0.62 1.0 
+0.66 0.62 1.0 
+
+0.62 0.66 1.0 
+0.66 0.66 1.0 
+
+
+0.66 0.62 1.0 
+0.69 0.62 1.0 
+
+0.66 0.66 1.0 
+0.69 0.66 1.0 
+
+
+0.62 0.66 1.0 
+0.66 0.66 1.0 
+
+0.62 0.69 1.0 
+0.66 0.69 1.0 
+
+
+0.66 0.66 1.0 
+0.69 0.66 1.0 
+
+0.66 0.69 1.0 
+0.69 0.69 1.0 
+
+
+0.69 0.62 1.0 
+0.72 0.62 1.0 
+
+0.69 0.66 1.0 
+0.72 0.66 1.0 
+
+
+0.72 0.62 1.0 
+0.75 0.62 1.0 
+
+0.72 0.66 1.0 
+0.75 0.66 1.0 
+
+
+0.69 0.66 1.0 
+0.72 0.66 1.0 
+
+0.69 0.69 1.0 
+0.72 0.69 1.0 
+
+
+0.72 0.66 1.0 
+0.75 0.66 1.0 
+
+0.72 0.69 1.0 
+0.75 0.69 1.0 
+
+
+0.62 0.69 1.0 
+0.66 0.69 1.0 
+
+0.62 0.72 1.0 
+0.66 0.72 1.0 
+
+
+0.66 0.69 1.0 
+0.69 0.69 1.0 
+
+0.66 0.72 1.0 
+0.69 0.72 1.0 
+
+
+0.62 0.72 1.0 
+0.66 0.72 1.0 
+
+0.62 0.75 1.0 
+0.66 0.75 1.0 
+
+
+0.66 0.72 1.0 
+0.69 0.72 1.0 
+
+0.66 0.75 1.0 
+0.69 0.75 1.0 
+
+
+0.69 0.69 1.0 
+0.72 0.69 1.0 
+
+0.69 0.72 1.0 
+0.72 0.72 1.0 
+
+
+0.72 0.69 1.0 
+0.75 0.69 1.0 
+
+0.72 0.72 1.0 
+0.75 0.72 1.0 
+
+
+0.69 0.72 1.0 
+0.72 0.72 1.0 
+
+0.69 0.75 1.0 
+0.72 0.75 1.0 
+
+
+0.72 0.72 1.0 
+0.75 0.72 1.0 
+
+0.72 0.75 1.0 
+0.75 0.75 1.0 
+
+
+0.75 0.50 1.0 
+0.78 0.50 1.0 
+
+0.75 0.53 1.0 
+0.78 0.53 1.0 
+
+
+0.78 0.50 1.0 
+0.81 0.50 1.0 
+
+0.78 0.53 1.0 
+0.81 0.53 1.0 
+
+
+0.75 0.53 1.0 
+0.78 0.53 1.0 
+
+0.75 0.56 1.0 
+0.78 0.56 1.0 
+
+
+0.78 0.53 1.0 
+0.81 0.53 1.0 
+
+0.78 0.56 1.0 
+0.81 0.56 1.0 
+
+
+0.81 0.50 1.0 
+0.84 0.50 1.0 
+
+0.81 0.53 1.0 
+0.84 0.53 1.0 
+
+
+0.84 0.50 1.0 
+0.88 0.50 1.0 
+
+0.84 0.53 1.0 
+0.88 0.53 1.0 
+
+
+0.81 0.53 1.0 
+0.84 0.53 1.0 
+
+0.81 0.56 1.0 
+0.84 0.56 1.0 
+
+
+0.84 0.53 1.0 
+0.88 0.53 1.0 
+
+0.84 0.56 1.0 
+0.88 0.56 1.0 
+
+
+0.75 0.56 1.0 
+0.78 0.56 1.0 
+
+0.75 0.59 1.0 
+0.78 0.59 1.0 
+
+
+0.78 0.56 1.0 
+0.81 0.56 1.0 
+
+0.78 0.59 1.0 
+0.81 0.59 1.0 
+
+
+0.75 0.59 1.0 
+0.78 0.59 1.0 
+
+0.75 0.62 1.0 
+0.78 0.62 1.0 
+
+
+0.78 0.59 1.0 
+0.81 0.59 1.0 
+
+0.78 0.62 1.0 
+0.81 0.62 1.0 
+
+
+0.81 0.56 1.0 
+0.84 0.56 1.0 
+
+0.81 0.59 1.0 
+0.84 0.59 1.0 
+
+
+0.84 0.56 1.0 
+0.88 0.56 1.0 
+
+0.84 0.59 1.0 
+0.88 0.59 1.0 
+
+
+0.81 0.59 1.0 
+0.84 0.59 1.0 
+
+0.81 0.62 1.0 
+0.84 0.62 1.0 
+
+
+0.84 0.59 1.0 
+0.88 0.59 1.0 
+
+0.84 0.62 1.0 
+0.88 0.62 1.0 
+
+
+0.88 0.50 1.0 
+0.91 0.50 1.0 
+
+0.88 0.53 1.0 
+0.91 0.53 1.0 
+
+
+0.91 0.50 1.0 
+0.94 0.50 1.0 
+
+0.91 0.53 1.0 
+0.94 0.53 1.0 
+
+
+0.88 0.53 1.0 
+0.91 0.53 1.0 
+
+0.88 0.56 1.0 
+0.91 0.56 1.0 
+
+
+0.91 0.53 1.0 
+0.94 0.53 1.0 
+
+0.91 0.56 1.0 
+0.94 0.56 1.0 
+
+
+0.94 0.50 1.0 
+0.97 0.50 1.0 
+
+0.94 0.53 1.0 
+0.97 0.53 1.0 
+
+
+0.97 0.50 1.0 
+1.0 0.50 1.0 
+
+0.97 0.53 1.0 
+1.0 0.53 1.0 
+
+
+0.94 0.53 1.0 
+0.97 0.53 1.0 
+
+0.94 0.56 1.0 
+0.97 0.56 1.0 
+
+
+0.97 0.53 1.0 
+1.0 0.53 1.0 
+
+0.97 0.56 1.0 
+1.0 0.56 1.0 
+
+
+0.88 0.56 1.0 
+0.91 0.56 1.0 
+
+0.88 0.59 1.0 
+0.91 0.59 1.0 
+
+
+0.91 0.56 1.0 
+0.94 0.56 1.0 
+
+0.91 0.59 1.0 
+0.94 0.59 1.0 
+
+
+0.88 0.59 1.0 
+0.91 0.59 1.0 
+
+0.88 0.62 1.0 
+0.91 0.62 1.0 
+
+
+0.91 0.59 1.0 
+0.94 0.59 1.0 
+
+0.91 0.62 1.0 
+0.94 0.62 1.0 
+
+
+0.94 0.56 1.0 
+0.97 0.56 1.0 
+
+0.94 0.59 1.0 
+0.97 0.59 1.0 
+
+
+0.97 0.56 1.0 
+1.0 0.56 1.0 
+
+0.97 0.59 1.0 
+1.0 0.59 1.0 
+
+
+0.94 0.59 1.0 
+0.97 0.59 1.0 
+
+0.94 0.62 1.0 
+0.97 0.62 1.0 
+
+
+0.97 0.59 1.0 
+1.0 0.59 1.0 
+
+0.97 0.62 1.0 
+1.0 0.62 1.0 
+
+
+0.75 0.62 1.0 
+0.78 0.62 1.0 
+
+0.75 0.66 1.0 
+0.78 0.66 1.0 
+
+
+0.78 0.62 1.0 
+0.81 0.62 1.0 
+
+0.78 0.66 1.0 
+0.81 0.66 1.0 
+
+
+0.75 0.66 1.0 
+0.78 0.66 1.0 
+
+0.75 0.69 1.0 
+0.78 0.69 1.0 
+
+
+0.78 0.66 1.0 
+0.81 0.66 1.0 
+
+0.78 0.69 1.0 
+0.81 0.69 1.0 
+
+
+0.81 0.62 1.0 
+0.84 0.62 1.0 
+
+0.81 0.66 1.0 
+0.84 0.66 1.0 
+
+
+0.84 0.62 1.0 
+0.88 0.62 1.0 
+
+0.84 0.66 1.0 
+0.88 0.66 1.0 
+
+
+0.81 0.66 1.0 
+0.84 0.66 1.0 
+
+0.81 0.69 1.0 
+0.84 0.69 1.0 
+
+
+0.84 0.66 1.0 
+0.88 0.66 1.0 
+
+0.84 0.69 1.0 
+0.88 0.69 1.0 
+
+
+0.75 0.69 1.0 
+0.78 0.69 1.0 
+
+0.75 0.72 1.0 
+0.78 0.72 1.0 
+
+
+0.78 0.69 1.0 
+0.81 0.69 1.0 
+
+0.78 0.72 1.0 
+0.81 0.72 1.0 
+
+
+0.75 0.72 1.0 
+0.78 0.72 1.0 
+
+0.75 0.75 1.0 
+0.78 0.75 1.0 
+
+
+0.78 0.72 1.0 
+0.81 0.72 1.0 
+
+0.78 0.75 1.0 
+0.81 0.75 1.0 
+
+
+0.81 0.69 1.0 
+0.84 0.69 1.0 
+
+0.81 0.72 1.0 
+0.84 0.72 1.0 
+
+
+0.84 0.69 1.0 
+0.88 0.69 1.0 
+
+0.84 0.72 1.0 
+0.88 0.72 1.0 
+
+
+0.81 0.72 1.0 
+0.84 0.72 1.0 
+
+0.81 0.75 1.0 
+0.84 0.75 1.0 
+
+
+0.84 0.72 1.0 
+0.88 0.72 1.0 
+
+0.84 0.75 1.0 
+0.88 0.75 1.0 
+
+
+0.88 0.62 1.0 
+0.91 0.62 1.0 
+
+0.88 0.66 1.0 
+0.91 0.66 1.0 
+
+
+0.91 0.62 1.0 
+0.94 0.62 1.0 
+
+0.91 0.66 1.0 
+0.94 0.66 1.0 
+
+
+0.88 0.66 1.0 
+0.91 0.66 1.0 
+
+0.88 0.69 1.0 
+0.91 0.69 1.0 
+
+
+0.91 0.66 1.0 
+0.94 0.66 1.0 
+
+0.91 0.69 1.0 
+0.94 0.69 1.0 
+
+
+0.94 0.62 1.0 
+0.97 0.62 1.0 
+
+0.94 0.66 1.0 
+0.97 0.66 1.0 
+
+
+0.97 0.62 1.0 
+1.0 0.62 1.0 
+
+0.97 0.66 1.0 
+1.0 0.66 1.0 
+
+
+0.94 0.66 1.0 
+0.97 0.66 1.0 
+
+0.94 0.69 1.0 
+0.97 0.69 1.0 
+
+
+0.97 0.66 1.0 
+1.0 0.66 1.0 
+
+0.97 0.69 1.0 
+1.0 0.69 1.0 
+
+
+0.88 0.69 1.0 
+0.91 0.69 1.0 
+
+0.88 0.72 1.0 
+0.91 0.72 1.0 
+
+
+0.91 0.69 1.0 
+0.94 0.69 1.0 
+
+0.91 0.72 1.0 
+0.94 0.72 1.0 
+
+
+0.88 0.72 1.0 
+0.91 0.72 1.0 
+
+0.88 0.75 1.0 
+0.91 0.75 1.0 
+
+
+0.91 0.72 1.0 
+0.94 0.72 1.0 
+
+0.91 0.75 1.0 
+0.94 0.75 1.0 
+
+
+0.94 0.69 1.0 
+0.97 0.69 1.0 
+
+0.94 0.72 1.0 
+0.97 0.72 1.0 
+
+
+0.97 0.69 1.0 
+1.0 0.69 1.0 
+
+0.97 0.72 1.0 
+1.0 0.72 1.0 
+
+
+0.94 0.72 1.0 
+0.97 0.72 1.0 
+
+0.94 0.75 1.0 
+0.97 0.75 1.0 
+
+
+0.97 0.72 1.0 
+1.0 0.72 1.0 
+
+0.97 0.75 1.0 
+1.0 0.75 1.0 
+
+
+0.50 0.75 1.0 
+0.53 0.75 1.0 
+
+0.50 0.78 1.0 
+0.53 0.78 1.0 
+
+
+0.53 0.75 1.0 
+0.56 0.75 1.0 
+
+0.53 0.78 1.0 
+0.56 0.78 1.0 
+
+
+0.50 0.78 1.0 
+0.53 0.78 1.0 
+
+0.50 0.81 1.0 
+0.53 0.81 1.0 
+
+
+0.53 0.78 1.0 
+0.56 0.78 1.0 
+
+0.53 0.81 1.0 
+0.56 0.81 1.0 
+
+
+0.56 0.75 1.0 
+0.59 0.75 1.0 
+
+0.56 0.78 1.0 
+0.59 0.78 1.0 
+
+
+0.59 0.75 1.0 
+0.62 0.75 1.0 
+
+0.59 0.78 1.0 
+0.62 0.78 1.0 
+
+
+0.56 0.78 1.0 
+0.59 0.78 1.0 
+
+0.56 0.81 1.0 
+0.59 0.81 1.0 
+
+
+0.59 0.78 1.0 
+0.62 0.78 1.0 
+
+0.59 0.81 1.0 
+0.62 0.81 1.0 
+
+
+0.50 0.81 1.0 
+0.53 0.81 1.0 
+
+0.50 0.84 1.0 
+0.53 0.84 1.0 
+
+
+0.53 0.81 1.0 
+0.56 0.81 1.0 
+
+0.53 0.84 1.0 
+0.56 0.84 1.0 
+
+
+0.50 0.84 1.0 
+0.53 0.84 1.0 
+
+0.50 0.88 1.0 
+0.53 0.88 1.0 
+
+
+0.53 0.84 1.0 
+0.56 0.84 1.0 
+
+0.53 0.88 1.0 
+0.56 0.88 1.0 
+
+
+0.56 0.81 1.0 
+0.59 0.81 1.0 
+
+0.56 0.84 1.0 
+0.59 0.84 1.0 
+
+
+0.59 0.81 1.0 
+0.62 0.81 1.0 
+
+0.59 0.84 1.0 
+0.62 0.84 1.0 
+
+
+0.56 0.84 1.0 
+0.59 0.84 1.0 
+
+0.56 0.88 1.0 
+0.59 0.88 1.0 
+
+
+0.59 0.84 1.0 
+0.62 0.84 1.0 
+
+0.59 0.88 1.0 
+0.62 0.88 1.0 
+
+
+0.62 0.75 1.0 
+0.66 0.75 1.0 
+
+0.62 0.78 1.0 
+0.66 0.78 1.0 
+
+
+0.66 0.75 1.0 
+0.69 0.75 1.0 
+
+0.66 0.78 1.0 
+0.69 0.78 1.0 
+
+
+0.62 0.78 1.0 
+0.66 0.78 1.0 
+
+0.62 0.81 1.0 
+0.66 0.81 1.0 
+
+
+0.66 0.78 1.0 
+0.69 0.78 1.0 
+
+0.66 0.81 1.0 
+0.69 0.81 1.0 
+
+
+0.69 0.75 1.0 
+0.72 0.75 1.0 
+
+0.69 0.78 1.0 
+0.72 0.78 1.0 
+
+
+0.72 0.75 1.0 
+0.75 0.75 1.0 
+
+0.72 0.78 1.0 
+0.75 0.78 1.0 
+
+
+0.69 0.78 1.0 
+0.72 0.78 1.0 
+
+0.69 0.81 1.0 
+0.72 0.81 1.0 
+
+
+0.72 0.78 1.0 
+0.75 0.78 1.0 
+
+0.72 0.81 1.0 
+0.75 0.81 1.0 
+
+
+0.62 0.81 1.0 
+0.66 0.81 1.0 
+
+0.62 0.84 1.0 
+0.66 0.84 1.0 
+
+
+0.66 0.81 1.0 
+0.69 0.81 1.0 
+
+0.66 0.84 1.0 
+0.69 0.84 1.0 
+
+
+0.62 0.84 1.0 
+0.66 0.84 1.0 
+
+0.62 0.88 1.0 
+0.66 0.88 1.0 
+
+
+0.66 0.84 1.0 
+0.69 0.84 1.0 
+
+0.66 0.88 1.0 
+0.69 0.88 1.0 
+
+
+0.69 0.81 1.0 
+0.72 0.81 1.0 
+
+0.69 0.84 1.0 
+0.72 0.84 1.0 
+
+
+0.72 0.81 1.0 
+0.75 0.81 1.0 
+
+0.72 0.84 1.0 
+0.75 0.84 1.0 
+
+
+0.69 0.84 1.0 
+0.72 0.84 1.0 
+
+0.69 0.88 1.0 
+0.72 0.88 1.0 
+
+
+0.72 0.84 1.0 
+0.75 0.84 1.0 
+
+0.72 0.88 1.0 
+0.75 0.88 1.0 
+
+
+0.50 0.88 1.0 
+0.53 0.88 1.0 
+
+0.50 0.91 1.0 
+0.53 0.91 1.0 
+
+
+0.53 0.88 1.0 
+0.56 0.88 1.0 
+
+0.53 0.91 1.0 
+0.56 0.91 1.0 
+
+
+0.50 0.91 1.0 
+0.53 0.91 1.0 
+
+0.50 0.94 1.0 
+0.53 0.94 1.0 
+
+
+0.53 0.91 1.0 
+0.56 0.91 1.0 
+
+0.53 0.94 1.0 
+0.56 0.94 1.0 
+
+
+0.56 0.88 1.0 
+0.59 0.88 1.0 
+
+0.56 0.91 1.0 
+0.59 0.91 1.0 
+
+
+0.59 0.88 1.0 
+0.62 0.88 1.0 
+
+0.59 0.91 1.0 
+0.62 0.91 1.0 
+
+
+0.56 0.91 1.0 
+0.59 0.91 1.0 
+
+0.56 0.94 1.0 
+0.59 0.94 1.0 
+
+
+0.59 0.91 1.0 
+0.62 0.91 1.0 
+
+0.59 0.94 1.0 
+0.62 0.94 1.0 
+
+
+0.50 0.94 1.0 
+0.53 0.94 1.0 
+
+0.50 0.97 1.0 
+0.53 0.97 1.0 
+
+
+0.53 0.94 1.0 
+0.56 0.94 1.0 
+
+0.53 0.97 1.0 
+0.56 0.97 1.0 
+
+
+0.50 0.97 1.0 
+0.53 0.97 1.0 
+
+0.50 1.0 1.0 
+0.53 1.0 1.0 
+
+
+0.53 0.97 1.0 
+0.56 0.97 1.0 
+
+0.53 1.0 1.0 
+0.56 1.0 1.0 
+
+
+0.56 0.94 1.0 
+0.59 0.94 1.0 
+
+0.56 0.97 1.0 
+0.59 0.97 1.0 
+
+
+0.59 0.94 1.0 
+0.62 0.94 1.0 
+
+0.59 0.97 1.0 
+0.62 0.97 1.0 
+
+
+0.56 0.97 1.0 
+0.59 0.97 1.0 
+
+0.56 1.0 1.0 
+0.59 1.0 1.0 
+
+
+0.59 0.97 1.0 
+0.62 0.97 1.0 
+
+0.59 1.0 1.0 
+0.62 1.0 1.0 
+
+
+0.62 0.88 1.0 
+0.66 0.88 1.0 
+
+0.62 0.91 1.0 
+0.66 0.91 1.0 
+
+
+0.66 0.88 1.0 
+0.69 0.88 1.0 
+
+0.66 0.91 1.0 
+0.69 0.91 1.0 
+
+
+0.62 0.91 1.0 
+0.66 0.91 1.0 
+
+0.62 0.94 1.0 
+0.66 0.94 1.0 
+
+
+0.66 0.91 1.0 
+0.69 0.91 1.0 
+
+0.66 0.94 1.0 
+0.69 0.94 1.0 
+
+
+0.69 0.88 1.0 
+0.72 0.88 1.0 
+
+0.69 0.91 1.0 
+0.72 0.91 1.0 
+
+
+0.72 0.88 1.0 
+0.75 0.88 1.0 
+
+0.72 0.91 1.0 
+0.75 0.91 1.0 
+
+
+0.69 0.91 1.0 
+0.72 0.91 1.0 
+
+0.69 0.94 1.0 
+0.72 0.94 1.0 
+
+
+0.72 0.91 1.0 
+0.75 0.91 1.0 
+
+0.72 0.94 1.0 
+0.75 0.94 1.0 
+
+
+0.62 0.94 1.0 
+0.66 0.94 1.0 
+
+0.62 0.97 1.0 
+0.66 0.97 1.0 
+
+
+0.66 0.94 1.0 
+0.69 0.94 1.0 
+
+0.66 0.97 1.0 
+0.69 0.97 1.0 
+
+
+0.62 0.97 1.0 
+0.66 0.97 1.0 
+
+0.62 1.0 1.0 
+0.66 1.0 1.0 
+
+
+0.66 0.97 1.0 
+0.69 0.97 1.0 
+
+0.66 1.0 1.0 
+0.69 1.0 1.0 
+
+
+0.69 0.94 1.0 
+0.72 0.94 1.0 
+
+0.69 0.97 1.0 
+0.72 0.97 1.0 
+
+
+0.72 0.94 1.0 
+0.75 0.94 1.0 
+
+0.72 0.97 1.0 
+0.75 0.97 1.0 
+
+
+0.69 0.97 1.0 
+0.72 0.97 1.0 
+
+0.69 1.0 1.0 
+0.72 1.0 1.0 
+
+
+0.72 0.97 1.0 
+0.75 0.97 1.0 
+
+0.72 1.0 1.0 
+0.75 1.0 1.0 
+
+
+0.75 0.75 1.0 
+0.78 0.75 1.0 
+
+0.75 0.78 1.0 
+0.78 0.78 1.0 
+
+
+0.78 0.75 1.0 
+0.81 0.75 1.0 
+
+0.78 0.78 1.0 
+0.81 0.78 1.0 
+
+
+0.75 0.78 1.0 
+0.78 0.78 1.0 
+
+0.75 0.81 1.0 
+0.78 0.81 1.0 
+
+
+0.78 0.78 1.0 
+0.81 0.78 1.0 
+
+0.78 0.81 1.0 
+0.81 0.81 1.0 
+
+
+0.81 0.75 1.0 
+0.84 0.75 1.0 
+
+0.81 0.78 1.0 
+0.84 0.78 1.0 
+
+
+0.84 0.75 1.0 
+0.88 0.75 1.0 
+
+0.84 0.78 1.0 
+0.88 0.78 1.0 
+
+
+0.81 0.78 1.0 
+0.84 0.78 1.0 
+
+0.81 0.81 1.0 
+0.84 0.81 1.0 
+
+
+0.84 0.78 1.0 
+0.88 0.78 1.0 
+
+0.84 0.81 1.0 
+0.88 0.81 1.0 
+
+
+0.75 0.81 1.0 
+0.78 0.81 1.0 
+
+0.75 0.84 1.0 
+0.78 0.84 1.0 
+
+
+0.78 0.81 1.0 
+0.81 0.81 1.0 
+
+0.78 0.84 1.0 
+0.81 0.84 1.0 
+
+
+0.75 0.84 1.0 
+0.78 0.84 1.0 
+
+0.75 0.88 1.0 
+0.78 0.88 1.0 
+
+
+0.78 0.84 1.0 
+0.81 0.84 1.0 
+
+0.78 0.88 1.0 
+0.81 0.88 1.0 
+
+
+0.81 0.81 1.0 
+0.84 0.81 1.0 
+
+0.81 0.84 1.0 
+0.84 0.84 1.0 
+
+
+0.84 0.81 1.0 
+0.88 0.81 1.0 
+
+0.84 0.84 1.0 
+0.88 0.84 1.0 
+
+
+0.81 0.84 1.0 
+0.84 0.84 1.0 
+
+0.81 0.88 1.0 
+0.84 0.88 1.0 
+
+
+0.84 0.84 1.0 
+0.88 0.84 1.0 
+
+0.84 0.88 1.0 
+0.88 0.88 1.0 
+
+
+0.88 0.75 1.0 
+0.91 0.75 1.0 
+
+0.88 0.78 1.0 
+0.91 0.78 1.0 
+
+
+0.91 0.75 1.0 
+0.94 0.75 1.0 
+
+0.91 0.78 1.0 
+0.94 0.78 1.0 
+
+
+0.88 0.78 1.0 
+0.91 0.78 1.0 
+
+0.88 0.81 1.0 
+0.91 0.81 1.0 
+
+
+0.91 0.78 1.0 
+0.94 0.78 1.0 
+
+0.91 0.81 1.0 
+0.94 0.81 1.0 
+
+
+0.94 0.75 1.0 
+0.97 0.75 1.0 
+
+0.94 0.78 1.0 
+0.97 0.78 1.0 
+
+
+0.97 0.75 1.0 
+1.0 0.75 1.0 
+
+0.97 0.78 1.0 
+1.0 0.78 1.0 
+
+
+0.94 0.78 1.0 
+0.97 0.78 1.0 
+
+0.94 0.81 1.0 
+0.97 0.81 1.0 
+
+
+0.97 0.78 1.0 
+1.0 0.78 1.0 
+
+0.97 0.81 1.0 
+1.0 0.81 1.0 
+
+
+0.88 0.81 1.0 
+0.91 0.81 1.0 
+
+0.88 0.84 1.0 
+0.91 0.84 1.0 
+
+
+0.91 0.81 1.0 
+0.94 0.81 1.0 
+
+0.91 0.84 1.0 
+0.94 0.84 1.0 
+
+
+0.88 0.84 1.0 
+0.91 0.84 1.0 
+
+0.88 0.88 1.0 
+0.91 0.88 1.0 
+
+
+0.91 0.84 1.0 
+0.94 0.84 1.0 
+
+0.91 0.88 1.0 
+0.94 0.88 1.0 
+
+
+0.94 0.81 1.0 
+0.97 0.81 1.0 
+
+0.94 0.84 1.0 
+0.97 0.84 1.0 
+
+
+0.97 0.81 1.0 
+1.0 0.81 1.0 
+
+0.97 0.84 1.0 
+1.0 0.84 1.0 
+
+
+0.94 0.84 1.0 
+0.97 0.84 1.0 
+
+0.94 0.88 1.0 
+0.97 0.88 1.0 
+
+
+0.97 0.84 1.0 
+1.0 0.84 1.0 
+
+0.97 0.88 1.0 
+1.0 0.88 1.0 
+
+
+0.75 0.88 1.0 
+0.78 0.88 1.0 
+
+0.75 0.91 1.0 
+0.78 0.91 1.0 
+
+
+0.78 0.88 1.0 
+0.81 0.88 1.0 
+
+0.78 0.91 1.0 
+0.81 0.91 1.0 
+
+
+0.75 0.91 1.0 
+0.78 0.91 1.0 
+
+0.75 0.94 1.0 
+0.78 0.94 1.0 
+
+
+0.78 0.91 1.0 
+0.81 0.91 1.0 
+
+0.78 0.94 1.0 
+0.81 0.94 1.0 
+
+
+0.81 0.88 1.0 
+0.84 0.88 1.0 
+
+0.81 0.91 1.0 
+0.84 0.91 1.0 
+
+
+0.84 0.88 1.0 
+0.88 0.88 1.0 
+
+0.84 0.91 1.0 
+0.88 0.91 1.0 
+
+
+0.81 0.91 1.0 
+0.84 0.91 1.0 
+
+0.81 0.94 1.0 
+0.84 0.94 1.0 
+
+
+0.84 0.91 1.0 
+0.88 0.91 1.0 
+
+0.84 0.94 1.0 
+0.88 0.94 1.0 
+
+
+0.75 0.94 1.0 
+0.78 0.94 1.0 
+
+0.75 0.97 1.0 
+0.78 0.97 1.0 
+
+
+0.78 0.94 1.0 
+0.81 0.94 1.0 
+
+0.78 0.97 1.0 
+0.81 0.97 1.0 
+
+
+0.75 0.97 1.0 
+0.78 0.97 1.0 
+
+0.75 1.0 1.0 
+0.78 1.0 1.0 
+
+
+0.78 0.97 1.0 
+0.81 0.97 1.0 
+
+0.78 1.0 1.0 
+0.81 1.0 1.0 
+
+
+0.81 0.94 1.0 
+0.84 0.94 1.0 
+
+0.81 0.97 1.0 
+0.84 0.97 1.0 
+
+
+0.84 0.94 1.0 
+0.88 0.94 1.0 
+
+0.84 0.97 1.0 
+0.88 0.97 1.0 
+
+
+0.81 0.97 1.0 
+0.84 0.97 1.0 
+
+0.81 1.0 1.0 
+0.84 1.0 1.0 
+
+
+0.84 0.97 1.0 
+0.88 0.97 1.0 
+
+0.84 1.0 1.0 
+0.88 1.0 1.0 
+
+
+0.88 0.88 1.0 
+0.91 0.88 1.0 
+
+0.88 0.91 1.0 
+0.91 0.91 1.0 
+
+
+0.91 0.88 1.0 
+0.94 0.88 1.0 
+
+0.91 0.91 1.0 
+0.94 0.91 1.0 
+
+
+0.88 0.91 1.0 
+0.91 0.91 1.0 
+
+0.88 0.94 1.0 
+0.91 0.94 1.0 
+
+
+0.91 0.91 1.0 
+0.94 0.91 1.0 
+
+0.91 0.94 1.0 
+0.94 0.94 1.0 
+
+
+0.94 0.88 1.0 
+0.97 0.88 1.0 
+
+0.94 0.91 1.0 
+0.97 0.91 1.0 
+
+
+0.97 0.88 1.0 
+1.0 0.88 1.0 
+
+0.97 0.91 1.0 
+1.0 0.91 1.0 
+
+
+0.94 0.91 1.0 
+0.97 0.91 1.0 
+
+0.94 0.94 1.0 
+0.97 0.94 1.0 
+
+
+0.97 0.91 1.0 
+1.0 0.91 1.0 
+
+0.97 0.94 1.0 
+1.0 0.94 1.0 
+
+
+0.88 0.94 1.0 
+0.91 0.94 1.0 
+
+0.88 0.97 1.0 
+0.91 0.97 1.0 
+
+
+0.91 0.94 1.0 
+0.94 0.94 1.0 
+
+0.91 0.97 1.0 
+0.94 0.97 1.0 
+
+
+0.88 0.97 1.0 
+0.91 0.97 1.0 
+
+0.88 1.0 1.0 
+0.91 1.0 1.0 
+
+
+0.91 0.97 1.0 
+0.94 0.97 1.0 
+
+0.91 1.0 1.0 
+0.94 1.0 1.0 
+
+
+0.94 0.94 1.0 
+0.97 0.94 1.0 
+
+0.94 0.97 1.0 
+0.97 0.97 1.0 
+
+
+0.97 0.94 1.0 
+1.0 0.94 1.0 
+
+0.97 0.97 1.0 
+1.0 0.97 1.0 
+
+
+0.94 0.97 1.0 
+0.97 0.97 1.0 
+
+0.94 1.0 1.0 
+0.97 1.0 1.0 
+
+
+0.97 0.97 1.0 
+1.0 0.97 1.0 
+
+0.97 1.0 1.0 
+1.0 1.0 1.0 
+
+
diff --git a/tests/deal.II/accessor_02.cc b/tests/deal.II/accessor_02.cc
new file mode 100644 (file)
index 0000000..3ab6749
--- /dev/null
@@ -0,0 +1,84 @@
+//----------------------------------------------------------------------
+//    $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.
+//
+//----------------------------------------------------------------------
+
+// We used to forget to instantiate a few static const member variables.
+// Verify that this is now fixed.
+
+
+#include "../tests.h"
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_q.h>
+#include <fstream>
+
+
+template <class ACCESSOR>
+LogStream&
+operator << (LogStream& log, const TriaIterator<ACCESSOR>& i)
+{
+  log << ACCESSOR::dimension << ' '
+      << ACCESSOR::structure_dimension << ' '
+      << ACCESSOR::space_dimension << ' ';
+  i.print(log);
+  return log;
+}
+
+
+template <class DH>
+void test_in_dim(const DH& d1, const DH& d2)
+{
+  typename DH::active_cell_iterator a = d1.begin_active();
+  typename DH::cell_iterator l = d1.begin(d1.get_tria().n_levels()-1);
+
+  deallog << "a " << a << std::endl
+         << "l " << l << std::endl;
+}
+
+
+template<int dim>
+void init_tria (Triangulation<dim>& tr)
+{
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(4-dim);
+}
+
+
+template<int dim>
+void init_dofs (DoFHandler<dim>& dof,
+               const Triangulation<dim>& tr,
+               const FiniteElement<dim>& fe)
+{
+  dof.initialize(tr, fe);
+}
+
+
+int main ()
+{
+  initlog(__FILE__, true);
+  deallog.depth_console(0);
+
+  Triangulation<2> t2;
+  init_tria (t2);
+
+  FE_Q<2> q21(1);
+  DoFHandler<2> d21;
+  init_dofs(d21, t2, q21);
+
+  FE_Q<2> q22(2);
+  DoFHandler<2> d22;
+  init_dofs(d22, t2, q22);
+
+  test_in_dim(d21,d22);
+}
diff --git a/tests/deal.II/accessor_02/cmp/generic b/tests/deal.II/accessor_02/cmp/generic
new file mode 100644 (file)
index 0000000..c6f2e2e
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL::a 2.0
+DEAL::l 2 2 2 2.0
index 0c2892927a01eb70f3b55f25d14525ede8812d12..b39d5c7e636771ec31bcfcad899a837933b126e9 100644 (file)
@@ -1,8 +1,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
diff --git a/tests/deal.II/block_info_02.cc b/tests/deal.II/block_info_02.cc
new file mode 100644 (file)
index 0000000..01310f7
--- /dev/null
@@ -0,0 +1,104 @@
+//----------------------------------------------------------------------
+//    $Id: block_info.cc 27473 2012-11-07 20:01:48Z heister $
+//
+//    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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------------
+
+// same as block_info, but here we use the new DoFHandler instead
+// of the MGDoFHandler
+
+#include "../tests.h"
+#include <deal.II/dofs/block_info.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/multigrid/mg_dof_handler.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <fstream>
+
+
+template <int dim>
+void test_grid(const Triangulation<dim>& tr,
+              const FiniteElement<dim>& fe)
+{
+  DoFHandler<dim> mgdof(tr);
+  mgdof.distribute_dofs(fe);
+  mgdof.distribute_mg_dofs(fe);
+  BlockInfo bi;
+  bi.initialize(mgdof, false, false);
+  bi.initialize_local(mgdof);
+  
+  deallog << "Global dofs    " << mgdof.n_dofs() << std::endl;
+  deallog << "Global blocks ";
+  for (unsigned int i=0;i<bi.global().size();++i)
+      deallog << ' ' << bi.global().block_size(i);
+  deallog << std::endl;
+
+  for (unsigned int l=0;l<tr.n_levels();++l)
+    {
+      deallog << "Level dofs     " << mgdof.n_dofs(l) << std::endl;
+      deallog << "Level block[" << l << ']';
+      for (unsigned int i=0;i<bi.level(l).size();++i)
+       deallog << ' ' << bi.level(l).block_size(i);
+      deallog << std::endl;
+    }
+  
+  deallog << "Local blocks  ";
+  for (unsigned int i=0;i<bi.local().size();++i)
+      deallog << ' ' << bi.local().block_size(i);
+  deallog << std::endl;
+
+  std::vector<unsigned int> renumbered(fe.dofs_per_cell);
+  
+  deallog << "Renumbering   ";
+  for (unsigned int i=0;i<fe.dofs_per_cell;++i)
+    {
+      deallog << ' ' << bi.renumber(i);
+      renumbered[bi.renumber(i)] = i;
+    }
+  deallog << std::endl;
+  
+  deallog << "Inverse       ";
+  for (unsigned int i=0;i<fe.dofs_per_cell;++i)
+    deallog << ' ' << renumbered[i];
+  deallog << std::endl;
+}
+
+
+template<int dim>
+void test_fe (const FiniteElement<dim>& fe)
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(5-dim);
+  test_grid(tr, fe);
+}
+
+
+int main () 
+{
+  initlog(__FILE__);
+  
+  FE_Q<2> q21(1);
+  FE_Q<2> q22(2);
+  FESystem<2> s2(q21, 3, q22, 2);
+  
+  test_fe(q21);
+  test_fe(q22);
+  test_fe(s2);
+  
+  FE_Q<3> q31(1);
+  FE_Q<3> q32(2);
+  FESystem<3> s3(q31, 3, q32, 2);
+  
+  test_fe(q31);
+  test_fe(q32);
+  test_fe(s3);
+}
diff --git a/tests/deal.II/block_info_02/cmp/generic b/tests/deal.II/block_info_02/cmp/generic
new file mode 100644 (file)
index 0000000..ec48cc4
--- /dev/null
@@ -0,0 +1,73 @@
+
+DEAL::Global dofs    81
+DEAL::Global blocks  81
+DEAL::Level dofs     4
+DEAL::Level block[0] 4
+DEAL::Level dofs     9
+DEAL::Level block[1] 9
+DEAL::Level dofs     25
+DEAL::Level block[2] 25
+DEAL::Level dofs     81
+DEAL::Level block[3] 81
+DEAL::Local blocks   4
+DEAL::Renumbering    0 1 2 3
+DEAL::Inverse        0 1 2 3
+DEAL::Global dofs    289
+DEAL::Global blocks  289
+DEAL::Level dofs     9
+DEAL::Level block[0] 9
+DEAL::Level dofs     25
+DEAL::Level block[1] 25
+DEAL::Level dofs     81
+DEAL::Level block[2] 81
+DEAL::Level dofs     289
+DEAL::Level block[3] 289
+DEAL::Local blocks   9
+DEAL::Renumbering    0 1 2 3 4 5 6 7 8
+DEAL::Inverse        0 1 2 3 4 5 6 7 8
+DEAL::Global dofs    821
+DEAL::Global blocks  81 81 81 289 289
+DEAL::Level dofs     30
+DEAL::Level block[0] 4 4 4 9 9
+DEAL::Level dofs     77
+DEAL::Level block[1] 9 9 9 25 25
+DEAL::Level dofs     237
+DEAL::Level block[2] 25 25 25 81 81
+DEAL::Level dofs     821
+DEAL::Level block[3] 81 81 81 289 289
+DEAL::Local blocks   4 4 4 9 9
+DEAL::Renumbering    0 4 8 12 21 1 5 9 13 22 2 6 10 14 23 3 7 11 15 24 16 25 17 26 18 27 19 28 20 29
+DEAL::Inverse        0 5 10 15 1 6 11 16 2 7 12 17 3 8 13 18 20 22 24 26 28 4 9 14 19 21 23 25 27 29
+DEAL::Global dofs    125
+DEAL::Global blocks  125
+DEAL::Level dofs     8
+DEAL::Level block[0] 8
+DEAL::Level dofs     27
+DEAL::Level block[1] 27
+DEAL::Level dofs     125
+DEAL::Level block[2] 125
+DEAL::Local blocks   8
+DEAL::Renumbering    0 1 2 3 4 5 6 7
+DEAL::Inverse        0 1 2 3 4 5 6 7
+DEAL::Global dofs    729
+DEAL::Global blocks  729
+DEAL::Level dofs     27
+DEAL::Level block[0] 27
+DEAL::Level dofs     125
+DEAL::Level block[1] 125
+DEAL::Level dofs     729
+DEAL::Level block[2] 729
+DEAL::Local blocks   27
+DEAL::Renumbering    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+DEAL::Inverse        0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+DEAL::Global dofs    1833
+DEAL::Global blocks  125 125 125 729 729
+DEAL::Level dofs     78
+DEAL::Level block[0] 8 8 8 27 27
+DEAL::Level dofs     331
+DEAL::Level block[1] 27 27 27 125 125
+DEAL::Level dofs     1833
+DEAL::Level block[2] 125 125 125 729 729
+DEAL::Local blocks   8 8 8 27 27
+DEAL::Renumbering    0 8 16 24 51 1 9 17 25 52 2 10 18 26 53 3 11 19 27 54 4 12 20 28 55 5 13 21 29 56 6 14 22 30 57 7 15 23 31 58 32 59 33 60 34 61 35 62 36 63 37 64 38 65 39 66 40 67 41 68 42 69 43 70 44 71 45 72 46 73 47 74 48 75 49 76 50 77
+DEAL::Inverse        0 5 10 15 20 25 30 35 1 6 11 16 21 26 31 36 2 7 12 17 22 27 32 37 3 8 13 18 23 28 33 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 4 9 14 19 24 29 34 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77
diff --git a/tests/deal.II/dof_renumbering_07.cc b/tests/deal.II/dof_renumbering_07.cc
new file mode 100644 (file)
index 0000000..5f020cf
--- /dev/null
@@ -0,0 +1,133 @@
+//----------------------------------------------------------------------
+//    $Id: dof_renumbering_04.cc 27160 2012-10-22 14:26:35Z kanschat $
+//    Version: $Name$
+//
+//    Copyright (C) 2000, 2001, 2003, 2004, 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.
+//
+//----------------------------------------------------------------------
+
+// Check DoFRenumbering::boost::Cuthill_McKee
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/function_lib.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_renumbering.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <fstream>
+
+
+
+template <int dim>
+void
+print_dofs (const DoFHandler<dim> &dof)
+{
+  const FiniteElement<dim>& fe = dof.get_fe();
+  std::vector<unsigned int> v (fe.dofs_per_cell);
+  std_cxx1x::shared_ptr<FEValues<dim> > fevalues;
+
+  if (fe.has_support_points())
+    {
+      Quadrature<dim> quad(fe.get_unit_support_points());
+      fevalues = std_cxx1x::shared_ptr<FEValues<dim> >(new FEValues<dim>(fe, quad, update_q_points));
+    }
+
+  for (typename DoFHandler<dim>::active_cell_iterator cell=dof.begin_active();
+       cell != dof.end(); ++cell)
+    {
+      Point<dim> p = cell->center();
+      if (fevalues.get() != 0)
+       fevalues->reinit(cell);
+
+      cell->get_dof_indices (v);
+      for (unsigned int i=0; i<v.size(); ++i)
+       if (fevalues.get() != 0)
+         deallog << fevalues->quadrature_point(i) << '\t' << v[i] << std::endl;
+       else
+         deallog << p << '\t' << v[i] << std::endl;
+      deallog << std::endl;
+    }
+}
+
+
+
+template <int dim>
+void
+check_renumbering(DoFHandler<dim>& dof)
+{
+  const FiniteElement<dim>& element = dof.get_fe();
+  deallog << element.get_name() << std::endl;
+
+  DoFRenumbering::boost::Cuthill_McKee(dof);
+  for (unsigned int level=0;level<dof.get_tria().n_levels();++level)
+    DoFRenumbering::Cuthill_McKee(dof, level);
+  print_dofs (dof);
+}
+
+
+template <int dim>
+void
+check ()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, -1., 1.);
+  tr.refine_global (1);
+  tr.begin_active()->set_refine_flag ();
+  tr.execute_coarsening_and_refinement ();
+  tr.refine_global(3-dim);
+
+  {
+    FE_Q<dim> fe(2);
+    DoFHandler<dim> dof(tr);
+
+    dof.distribute_dofs(fe);
+    dof.distribute_mg_dofs(fe);
+    check_renumbering(dof);
+  }
+
+  {
+    FESystem<dim> fe(FE_DGQ<dim>(1),1,
+                    FE_Q<dim>(2),dim);
+    DoFHandler<dim> dof(tr);
+
+    dof.distribute_dofs(fe);
+    dof.distribute_mg_dofs(fe);
+    check_renumbering(dof);
+  }
+}
+
+
+int main ()
+{
+  std::ofstream logfile ("dof_renumbering_07/output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  deallog.push ("1d");
+  check<1> ();
+  deallog.pop ();
+  deallog.push ("2d");
+  check<2> ();
+  deallog.pop ();
+  deallog.push ("3d");
+  check<3> ();
+  deallog.pop ();
+}
diff --git a/tests/deal.II/dof_renumbering_07/cmp/generic b/tests/deal.II/dof_renumbering_07/cmp/generic
new file mode 100644 (file)
index 0000000..5413272
--- /dev/null
@@ -0,0 +1,2821 @@
+
+DEAL:1d::FE_Q<1>(2)
+DEAL:1d::0.00  16
+DEAL:1d::0.25  18
+DEAL:1d::0.12  17
+DEAL:1d::
+DEAL:1d::0.25  18
+DEAL:1d::0.50  20
+DEAL:1d::0.38  19
+DEAL:1d::
+DEAL:1d::0.50  20
+DEAL:1d::0.75  22
+DEAL:1d::0.62  21
+DEAL:1d::
+DEAL:1d::0.75  22
+DEAL:1d::1.00  24
+DEAL:1d::0.88  23
+DEAL:1d::
+DEAL:1d::-1.00 1
+DEAL:1d::-0.88 2
+DEAL:1d::-0.94 0
+DEAL:1d::
+DEAL:1d::-0.88 2
+DEAL:1d::-0.75 4
+DEAL:1d::-0.81 3
+DEAL:1d::
+DEAL:1d::-0.75 4
+DEAL:1d::-0.62 6
+DEAL:1d::-0.69 5
+DEAL:1d::
+DEAL:1d::-0.62 6
+DEAL:1d::-0.50 8
+DEAL:1d::-0.56 7
+DEAL:1d::
+DEAL:1d::-0.50 8
+DEAL:1d::-0.38 10
+DEAL:1d::-0.44 9
+DEAL:1d::
+DEAL:1d::-0.38 10
+DEAL:1d::-0.25 12
+DEAL:1d::-0.31 11
+DEAL:1d::
+DEAL:1d::-0.25 12
+DEAL:1d::-0.12 14
+DEAL:1d::-0.19 13
+DEAL:1d::
+DEAL:1d::-0.12 14
+DEAL:1d::0.00  16
+DEAL:1d::-0.06 15
+DEAL:1d::
+DEAL:1d::FESystem<1>[FE_DGQ<1>(1)-FE_Q<1>(2)]
+DEAL:1d::0.00  32
+DEAL:1d::0.25  36
+DEAL:1d::0.00  35
+DEAL:1d::0.25  34
+DEAL:1d::0.12  33
+DEAL:1d::
+DEAL:1d::0.25  36
+DEAL:1d::0.50  40
+DEAL:1d::0.25  39
+DEAL:1d::0.50  38
+DEAL:1d::0.38  37
+DEAL:1d::
+DEAL:1d::0.50  40
+DEAL:1d::0.75  44
+DEAL:1d::0.50  43
+DEAL:1d::0.75  42
+DEAL:1d::0.62  41
+DEAL:1d::
+DEAL:1d::0.75  44
+DEAL:1d::1.00  48
+DEAL:1d::0.75  47
+DEAL:1d::1.00  46
+DEAL:1d::0.88  45
+DEAL:1d::
+DEAL:1d::-1.00 3
+DEAL:1d::-0.88 4
+DEAL:1d::-1.00 2
+DEAL:1d::-0.88 1
+DEAL:1d::-0.94 0
+DEAL:1d::
+DEAL:1d::-0.88 4
+DEAL:1d::-0.75 8
+DEAL:1d::-0.88 7
+DEAL:1d::-0.75 6
+DEAL:1d::-0.81 5
+DEAL:1d::
+DEAL:1d::-0.75 8
+DEAL:1d::-0.62 12
+DEAL:1d::-0.75 11
+DEAL:1d::-0.62 10
+DEAL:1d::-0.69 9
+DEAL:1d::
+DEAL:1d::-0.62 12
+DEAL:1d::-0.50 16
+DEAL:1d::-0.62 15
+DEAL:1d::-0.50 14
+DEAL:1d::-0.56 13
+DEAL:1d::
+DEAL:1d::-0.50 16
+DEAL:1d::-0.38 20
+DEAL:1d::-0.50 19
+DEAL:1d::-0.38 18
+DEAL:1d::-0.44 17
+DEAL:1d::
+DEAL:1d::-0.38 20
+DEAL:1d::-0.25 24
+DEAL:1d::-0.38 23
+DEAL:1d::-0.25 22
+DEAL:1d::-0.31 21
+DEAL:1d::
+DEAL:1d::-0.25 24
+DEAL:1d::-0.12 28
+DEAL:1d::-0.25 27
+DEAL:1d::-0.12 26
+DEAL:1d::-0.19 25
+DEAL:1d::
+DEAL:1d::-0.12 28
+DEAL:1d::0.00  32
+DEAL:1d::-0.12 31
+DEAL:1d::0.00  30
+DEAL:1d::-0.06 29
+DEAL:1d::
+DEAL:2d::FE_Q<2>(2)
+DEAL:2d::0.00 -1.00    127
+DEAL:2d::0.50 -1.00    136
+DEAL:2d::0.00 -0.50    126
+DEAL:2d::0.50 -0.50    132
+DEAL:2d::0.00 -0.75    131
+DEAL:2d::0.50 -0.75    135
+DEAL:2d::0.25 -1.00    130
+DEAL:2d::0.25 -0.50    128
+DEAL:2d::0.25 -0.75    129
+DEAL:2d::
+DEAL:2d::0.50 -1.00    136
+DEAL:2d::1.00 -1.00    140
+DEAL:2d::0.50 -0.50    132
+DEAL:2d::1.00 -0.50    134
+DEAL:2d::0.50 -0.75    135
+DEAL:2d::1.00 -0.75    139
+DEAL:2d::0.75 -1.00    138
+DEAL:2d::0.75 -0.50    133
+DEAL:2d::0.75 -0.75    137
+DEAL:2d::
+DEAL:2d::0.00 -0.50    126
+DEAL:2d::0.50 -0.50    132
+DEAL:2d::0.00 0.00     116
+DEAL:2d::0.50 0.00     120
+DEAL:2d::0.00 -0.25    119
+DEAL:2d::0.50 -0.25    123
+DEAL:2d::0.25 -0.50    128
+DEAL:2d::0.25 0.00     117
+DEAL:2d::0.25 -0.25    118
+DEAL:2d::
+DEAL:2d::0.50 -0.50    132
+DEAL:2d::1.00 -0.50    134
+DEAL:2d::0.50 0.00     120
+DEAL:2d::1.00 0.00     122
+DEAL:2d::0.50 -0.25    123
+DEAL:2d::1.00 -0.25    125
+DEAL:2d::0.75 -0.50    133
+DEAL:2d::0.75 0.00     121
+DEAL:2d::0.75 -0.25    124
+DEAL:2d::
+DEAL:2d::-1.00 0.00    39
+DEAL:2d::-0.50 0.00    76
+DEAL:2d::-1.00 0.50    41
+DEAL:2d::-0.50 0.50    77
+DEAL:2d::-1.00 0.25    44
+DEAL:2d::-0.50 0.25    81
+DEAL:2d::-0.75 0.00    43
+DEAL:2d::-0.75 0.50    40
+DEAL:2d::-0.75 0.25    42
+DEAL:2d::
+DEAL:2d::-0.50 0.00    76
+DEAL:2d::0.00 0.00     116
+DEAL:2d::-0.50 0.50    77
+DEAL:2d::0.00 0.50     87
+DEAL:2d::-0.50 0.25    81
+DEAL:2d::0.00 0.25     89
+DEAL:2d::-0.25 0.00    86
+DEAL:2d::-0.25 0.50    80
+DEAL:2d::-0.25 0.25    85
+DEAL:2d::
+DEAL:2d::-1.00 0.50    41
+DEAL:2d::-0.50 0.50    77
+DEAL:2d::-1.00 1.00    38
+DEAL:2d::-0.50 1.00    46
+DEAL:2d::-1.00 0.75    37
+DEAL:2d::-0.50 0.75    45
+DEAL:2d::-0.75 0.50    40
+DEAL:2d::-0.75 1.00    36
+DEAL:2d::-0.75 0.75    35
+DEAL:2d::
+DEAL:2d::-0.50 0.50    77
+DEAL:2d::0.00 0.50     87
+DEAL:2d::-0.50 1.00    46
+DEAL:2d::0.00 1.00     50
+DEAL:2d::-0.50 0.75    45
+DEAL:2d::0.00 0.75     49
+DEAL:2d::-0.25 0.50    80
+DEAL:2d::-0.25 1.00    48
+DEAL:2d::-0.25 0.75    47
+DEAL:2d::
+DEAL:2d::0.00 0.00     116
+DEAL:2d::0.50 0.00     120
+DEAL:2d::0.00 0.50     87
+DEAL:2d::0.50 0.50     91
+DEAL:2d::0.00 0.25     89
+DEAL:2d::0.50 0.25     94
+DEAL:2d::0.25 0.00     117
+DEAL:2d::0.25 0.50     88
+DEAL:2d::0.25 0.25     90
+DEAL:2d::
+DEAL:2d::0.50 0.00     120
+DEAL:2d::1.00 0.00     122
+DEAL:2d::0.50 0.50     91
+DEAL:2d::1.00 0.50     93
+DEAL:2d::0.50 0.25     94
+DEAL:2d::1.00 0.25     96
+DEAL:2d::0.75 0.00     121
+DEAL:2d::0.75 0.50     92
+DEAL:2d::0.75 0.25     95
+DEAL:2d::
+DEAL:2d::0.00 0.50     87
+DEAL:2d::0.50 0.50     91
+DEAL:2d::0.00 1.00     50
+DEAL:2d::0.50 1.00     54
+DEAL:2d::0.00 0.75     49
+DEAL:2d::0.50 0.75     53
+DEAL:2d::0.25 0.50     88
+DEAL:2d::0.25 1.00     52
+DEAL:2d::0.25 0.75     51
+DEAL:2d::
+DEAL:2d::0.50 0.50     91
+DEAL:2d::1.00 0.50     93
+DEAL:2d::0.50 1.00     54
+DEAL:2d::1.00 1.00     58
+DEAL:2d::0.50 0.75     53
+DEAL:2d::1.00 0.75     57
+DEAL:2d::0.75 0.50     92
+DEAL:2d::0.75 1.00     56
+DEAL:2d::0.75 0.75     55
+DEAL:2d::
+DEAL:2d::-1.00 -1.00   7
+DEAL:2d::-0.75 -1.00   26
+DEAL:2d::-1.00 -0.75   3
+DEAL:2d::-0.75 -0.75   23
+DEAL:2d::-1.00 -0.88   6
+DEAL:2d::-0.75 -0.88   25
+DEAL:2d::-0.88 -1.00   5
+DEAL:2d::-0.88 -0.75   2
+DEAL:2d::-0.88 -0.88   4
+DEAL:2d::
+DEAL:2d::-0.75 -1.00   26
+DEAL:2d::-0.50 -1.00   73
+DEAL:2d::-0.75 -0.75   23
+DEAL:2d::-0.50 -0.75   70
+DEAL:2d::-0.75 -0.88   25
+DEAL:2d::-0.50 -0.88   72
+DEAL:2d::-0.62 -1.00   28
+DEAL:2d::-0.62 -0.75   24
+DEAL:2d::-0.62 -0.88   27
+DEAL:2d::
+DEAL:2d::-1.00 -0.75   3
+DEAL:2d::-0.75 -0.75   23
+DEAL:2d::-1.00 -0.50   9
+DEAL:2d::-0.75 -0.50   19
+DEAL:2d::-1.00 -0.62   1
+DEAL:2d::-0.75 -0.62   21
+DEAL:2d::-0.88 -0.75   2
+DEAL:2d::-0.88 -0.50   8
+DEAL:2d::-0.88 -0.62   0
+DEAL:2d::
+DEAL:2d::-0.75 -0.75   23
+DEAL:2d::-0.50 -0.75   70
+DEAL:2d::-0.75 -0.50   19
+DEAL:2d::-0.50 -0.50   66
+DEAL:2d::-0.75 -0.62   21
+DEAL:2d::-0.50 -0.62   68
+DEAL:2d::-0.62 -0.75   24
+DEAL:2d::-0.62 -0.50   20
+DEAL:2d::-0.62 -0.62   22
+DEAL:2d::
+DEAL:2d::-0.50 -1.00   73
+DEAL:2d::-0.25 -1.00   112
+DEAL:2d::-0.50 -0.75   70
+DEAL:2d::-0.25 -0.75   108
+DEAL:2d::-0.50 -0.88   72
+DEAL:2d::-0.25 -0.88   111
+DEAL:2d::-0.38 -1.00   75
+DEAL:2d::-0.38 -0.75   71
+DEAL:2d::-0.38 -0.88   74
+DEAL:2d::
+DEAL:2d::-0.25 -1.00   112
+DEAL:2d::0.00 -1.00    127
+DEAL:2d::-0.25 -0.75   108
+DEAL:2d::0.00 -0.75    110
+DEAL:2d::-0.25 -0.88   111
+DEAL:2d::0.00 -0.88    115
+DEAL:2d::-0.12 -1.00   114
+DEAL:2d::-0.12 -0.75   109
+DEAL:2d::-0.12 -0.88   113
+DEAL:2d::
+DEAL:2d::-0.50 -0.75   70
+DEAL:2d::-0.25 -0.75   108
+DEAL:2d::-0.50 -0.50   66
+DEAL:2d::-0.25 -0.50   98
+DEAL:2d::-0.50 -0.62   68
+DEAL:2d::-0.25 -0.62   103
+DEAL:2d::-0.38 -0.75   71
+DEAL:2d::-0.38 -0.50   67
+DEAL:2d::-0.38 -0.62   69
+DEAL:2d::
+DEAL:2d::-0.25 -0.75   108
+DEAL:2d::0.00 -0.75    110
+DEAL:2d::-0.25 -0.50   98
+DEAL:2d::0.00 -0.50    126
+DEAL:2d::-0.25 -0.62   103
+DEAL:2d::0.00 -0.62    107
+DEAL:2d::-0.12 -0.75   109
+DEAL:2d::-0.12 -0.50   102
+DEAL:2d::-0.12 -0.62   106
+DEAL:2d::
+DEAL:2d::-1.00 -0.50   9
+DEAL:2d::-0.75 -0.50   19
+DEAL:2d::-1.00 -0.25   13
+DEAL:2d::-0.75 -0.25   29
+DEAL:2d::-1.00 -0.38   11
+DEAL:2d::-0.75 -0.38   17
+DEAL:2d::-0.88 -0.50   8
+DEAL:2d::-0.88 -0.25   12
+DEAL:2d::-0.88 -0.38   10
+DEAL:2d::
+DEAL:2d::-0.75 -0.50   19
+DEAL:2d::-0.50 -0.50   66
+DEAL:2d::-0.75 -0.25   29
+DEAL:2d::-0.50 -0.25   62
+DEAL:2d::-0.75 -0.38   17
+DEAL:2d::-0.50 -0.38   64
+DEAL:2d::-0.62 -0.50   20
+DEAL:2d::-0.62 -0.25   32
+DEAL:2d::-0.62 -0.38   18
+DEAL:2d::
+DEAL:2d::-1.00 -0.25   13
+DEAL:2d::-0.75 -0.25   29
+DEAL:2d::-1.00 0.00    39
+DEAL:2d::-0.75 0.00    31
+DEAL:2d::-1.00 -0.12   16
+DEAL:2d::-0.75 -0.12   30
+DEAL:2d::-0.88 -0.25   12
+DEAL:2d::-0.88 0.00    15
+DEAL:2d::-0.88 -0.12   14
+DEAL:2d::
+DEAL:2d::-0.75 -0.25   29
+DEAL:2d::-0.50 -0.25   62
+DEAL:2d::-0.75 0.00    31
+DEAL:2d::-0.50 0.00    76
+DEAL:2d::-0.75 -0.12   30
+DEAL:2d::-0.50 -0.12   59
+DEAL:2d::-0.62 -0.25   32
+DEAL:2d::-0.62 0.00    34
+DEAL:2d::-0.62 -0.12   33
+DEAL:2d::
+DEAL:2d::-0.50 -0.50   66
+DEAL:2d::-0.25 -0.50   98
+DEAL:2d::-0.50 -0.25   62
+DEAL:2d::-0.25 -0.25   97
+DEAL:2d::-0.50 -0.38   64
+DEAL:2d::-0.25 -0.38   101
+DEAL:2d::-0.38 -0.50   67
+DEAL:2d::-0.38 -0.25   63
+DEAL:2d::-0.38 -0.38   65
+DEAL:2d::
+DEAL:2d::-0.25 -0.50   98
+DEAL:2d::0.00 -0.50    126
+DEAL:2d::-0.25 -0.25   97
+DEAL:2d::0.00 -0.25    100
+DEAL:2d::-0.25 -0.38   101
+DEAL:2d::0.00 -0.38    105
+DEAL:2d::-0.12 -0.50   102
+DEAL:2d::-0.12 -0.25   99
+DEAL:2d::-0.12 -0.38   104
+DEAL:2d::
+DEAL:2d::-0.50 -0.25   62
+DEAL:2d::-0.25 -0.25   97
+DEAL:2d::-0.50 0.00    76
+DEAL:2d::-0.25 0.00    79
+DEAL:2d::-0.50 -0.12   59
+DEAL:2d::-0.25 -0.12   78
+DEAL:2d::-0.38 -0.25   63
+DEAL:2d::-0.38 0.00    61
+DEAL:2d::-0.38 -0.12   60
+DEAL:2d::
+DEAL:2d::-0.25 -0.25   97
+DEAL:2d::0.00 -0.25    100
+DEAL:2d::-0.25 0.00    79
+DEAL:2d::0.00 0.00     116
+DEAL:2d::-0.25 -0.12   78
+DEAL:2d::0.00 -0.12    84
+DEAL:2d::-0.12 -0.25   99
+DEAL:2d::-0.12 0.00    83
+DEAL:2d::-0.12 -0.12   82
+DEAL:2d::
+DEAL:2d::FESystem<2>[FE_DGQ<2>(1)-FE_Q<2>(2)^2]
+DEAL:2d::0.00 -1.00    343
+DEAL:2d::0.00 -1.00    342
+DEAL:2d::0.50 -1.00    374
+DEAL:2d::0.50 -1.00    375
+DEAL:2d::0.00 -0.50    341
+DEAL:2d::0.00 -0.50    340
+DEAL:2d::0.50 -0.50    372
+DEAL:2d::0.50 -0.50    373
+DEAL:2d::0.00 -0.75    355
+DEAL:2d::0.00 -0.75    354
+DEAL:2d::0.50 -0.75    376
+DEAL:2d::0.50 -0.75    377
+DEAL:2d::0.25 -1.00    353
+DEAL:2d::0.25 -1.00    352
+DEAL:2d::0.25 -0.50    345
+DEAL:2d::0.25 -0.50    344
+DEAL:2d::0.00 -1.00    351
+DEAL:2d::0.50 -1.00    350
+DEAL:2d::0.00 -0.50    349
+DEAL:2d::0.50 -0.50    348
+DEAL:2d::0.25 -0.75    347
+DEAL:2d::0.25 -0.75    346
+DEAL:2d::
+DEAL:2d::0.50 -1.00    374
+DEAL:2d::0.50 -1.00    375
+DEAL:2d::1.00 -1.00    393
+DEAL:2d::1.00 -1.00    382
+DEAL:2d::0.50 -0.50    372
+DEAL:2d::0.50 -0.50    373
+DEAL:2d::1.00 -0.50    380
+DEAL:2d::1.00 -0.50    381
+DEAL:2d::0.50 -0.75    376
+DEAL:2d::0.50 -0.75    377
+DEAL:2d::1.00 -0.75    383
+DEAL:2d::1.00 -0.75    384
+DEAL:2d::0.75 -1.00    385
+DEAL:2d::0.75 -1.00    386
+DEAL:2d::0.75 -0.50    379
+DEAL:2d::0.75 -0.50    378
+DEAL:2d::0.50 -1.00    387
+DEAL:2d::1.00 -1.00    388
+DEAL:2d::0.50 -0.50    389
+DEAL:2d::1.00 -0.50    390
+DEAL:2d::0.75 -0.75    391
+DEAL:2d::0.75 -0.75    392
+DEAL:2d::
+DEAL:2d::0.00 -0.50    341
+DEAL:2d::0.00 -0.50    340
+DEAL:2d::0.50 -0.50    372
+DEAL:2d::0.50 -0.50    373
+DEAL:2d::0.00 0.00     329
+DEAL:2d::0.00 0.00     328
+DEAL:2d::0.50 0.00     357
+DEAL:2d::0.50 0.00     356
+DEAL:2d::0.00 -0.25    339
+DEAL:2d::0.00 -0.25    338
+DEAL:2d::0.50 -0.25    363
+DEAL:2d::0.50 -0.25    362
+DEAL:2d::0.25 -0.50    345
+DEAL:2d::0.25 -0.50    344
+DEAL:2d::0.25 0.00     331
+DEAL:2d::0.25 0.00     330
+DEAL:2d::0.00 -0.50    337
+DEAL:2d::0.50 -0.50    336
+DEAL:2d::0.00 0.00     335
+DEAL:2d::0.50 0.00     334
+DEAL:2d::0.25 -0.25    333
+DEAL:2d::0.25 -0.25    332
+DEAL:2d::
+DEAL:2d::0.50 -0.50    372
+DEAL:2d::0.50 -0.50    373
+DEAL:2d::1.00 -0.50    380
+DEAL:2d::1.00 -0.50    381
+DEAL:2d::0.50 0.00     357
+DEAL:2d::0.50 0.00     356
+DEAL:2d::1.00 0.00     361
+DEAL:2d::1.00 0.00     360
+DEAL:2d::0.50 -0.25    363
+DEAL:2d::0.50 -0.25    362
+DEAL:2d::1.00 -0.25    371
+DEAL:2d::1.00 -0.25    370
+DEAL:2d::0.75 -0.50    379
+DEAL:2d::0.75 -0.50    378
+DEAL:2d::0.75 0.00     359
+DEAL:2d::0.75 0.00     358
+DEAL:2d::0.50 -0.50    369
+DEAL:2d::1.00 -0.50    368
+DEAL:2d::0.50 0.00     367
+DEAL:2d::1.00 0.00     366
+DEAL:2d::0.75 -0.25    365
+DEAL:2d::0.75 -0.25    364
+DEAL:2d::
+DEAL:2d::-1.00 0.00    115
+DEAL:2d::-1.00 0.00    114
+DEAL:2d::-0.50 0.00    220
+DEAL:2d::-0.50 0.00    221
+DEAL:2d::-1.00 0.50    119
+DEAL:2d::-1.00 0.50    118
+DEAL:2d::-0.50 0.50    222
+DEAL:2d::-0.50 0.50    223
+DEAL:2d::-1.00 0.25    129
+DEAL:2d::-1.00 0.25    128
+DEAL:2d::-0.50 0.25    231
+DEAL:2d::-0.50 0.25    230
+DEAL:2d::-0.75 0.00    127
+DEAL:2d::-0.75 0.00    126
+DEAL:2d::-0.75 0.50    117
+DEAL:2d::-0.75 0.50    116
+DEAL:2d::-1.00 0.00    125
+DEAL:2d::-0.50 0.00    124
+DEAL:2d::-1.00 0.50    123
+DEAL:2d::-0.50 0.50    122
+DEAL:2d::-0.75 0.25    121
+DEAL:2d::-0.75 0.25    120
+DEAL:2d::
+DEAL:2d::-0.50 0.00    220
+DEAL:2d::-0.50 0.00    221
+DEAL:2d::0.00 0.00     329
+DEAL:2d::0.00 0.00     328
+DEAL:2d::-0.50 0.50    222
+DEAL:2d::-0.50 0.50    223
+DEAL:2d::0.00 0.50     301
+DEAL:2d::0.00 0.50     300
+DEAL:2d::-0.50 0.25    231
+DEAL:2d::-0.50 0.25    230
+DEAL:2d::0.00 0.25     305
+DEAL:2d::0.00 0.25     304
+DEAL:2d::-0.25 0.00    233
+DEAL:2d::-0.25 0.00    232
+DEAL:2d::-0.25 0.50    229
+DEAL:2d::-0.25 0.50    228
+DEAL:2d::-0.50 0.00    234
+DEAL:2d::0.00 0.00     235
+DEAL:2d::-0.50 0.50    236
+DEAL:2d::0.00 0.50     237
+DEAL:2d::-0.25 0.25    238
+DEAL:2d::-0.25 0.25    239
+DEAL:2d::
+DEAL:2d::-1.00 0.50    119
+DEAL:2d::-1.00 0.50    118
+DEAL:2d::-0.50 0.50    222
+DEAL:2d::-0.50 0.50    223
+DEAL:2d::-1.00 1.00    113
+DEAL:2d::-1.00 1.00    112
+DEAL:2d::-0.50 1.00    183
+DEAL:2d::-0.50 1.00    182
+DEAL:2d::-1.00 0.75    111
+DEAL:2d::-1.00 0.75    110
+DEAL:2d::-0.50 0.75    181
+DEAL:2d::-0.50 0.75    180
+DEAL:2d::-0.75 0.50    117
+DEAL:2d::-0.75 0.50    116
+DEAL:2d::-0.75 1.00    109
+DEAL:2d::-0.75 1.00    108
+DEAL:2d::-1.00 0.50    107
+DEAL:2d::-0.50 0.50    106
+DEAL:2d::-1.00 1.00    105
+DEAL:2d::-0.50 1.00    104
+DEAL:2d::-0.75 0.75    103
+DEAL:2d::-0.75 0.75    102
+DEAL:2d::
+DEAL:2d::-0.50 0.50    222
+DEAL:2d::-0.50 0.50    223
+DEAL:2d::0.00 0.50     301
+DEAL:2d::0.00 0.50     300
+DEAL:2d::-0.50 1.00    183
+DEAL:2d::-0.50 1.00    182
+DEAL:2d::0.00 1.00     195
+DEAL:2d::0.00 1.00     194
+DEAL:2d::-0.50 0.75    181
+DEAL:2d::-0.50 0.75    180
+DEAL:2d::0.00 0.75     193
+DEAL:2d::0.00 0.75     192
+DEAL:2d::-0.25 0.50    229
+DEAL:2d::-0.25 0.50    228
+DEAL:2d::-0.25 1.00    191
+DEAL:2d::-0.25 1.00    190
+DEAL:2d::-0.50 0.50    189
+DEAL:2d::0.00 0.50     188
+DEAL:2d::-0.50 1.00    187
+DEAL:2d::0.00 1.00     186
+DEAL:2d::-0.25 0.75    185
+DEAL:2d::-0.25 0.75    184
+DEAL:2d::
+DEAL:2d::0.00 0.00     329
+DEAL:2d::0.00 0.00     328
+DEAL:2d::0.50 0.00     357
+DEAL:2d::0.50 0.00     356
+DEAL:2d::0.00 0.50     301
+DEAL:2d::0.00 0.50     300
+DEAL:2d::0.50 0.50     313
+DEAL:2d::0.50 0.50     312
+DEAL:2d::0.00 0.25     305
+DEAL:2d::0.00 0.25     304
+DEAL:2d::0.50 0.25     319
+DEAL:2d::0.50 0.25     318
+DEAL:2d::0.25 0.00     331
+DEAL:2d::0.25 0.00     330
+DEAL:2d::0.25 0.50     303
+DEAL:2d::0.25 0.50     302
+DEAL:2d::0.00 0.00     311
+DEAL:2d::0.50 0.00     310
+DEAL:2d::0.00 0.50     309
+DEAL:2d::0.50 0.50     308
+DEAL:2d::0.25 0.25     307
+DEAL:2d::0.25 0.25     306
+DEAL:2d::
+DEAL:2d::0.50 0.00     357
+DEAL:2d::0.50 0.00     356
+DEAL:2d::1.00 0.00     361
+DEAL:2d::1.00 0.00     360
+DEAL:2d::0.50 0.50     313
+DEAL:2d::0.50 0.50     312
+DEAL:2d::1.00 0.50     317
+DEAL:2d::1.00 0.50     316
+DEAL:2d::0.50 0.25     319
+DEAL:2d::0.50 0.25     318
+DEAL:2d::1.00 0.25     327
+DEAL:2d::1.00 0.25     326
+DEAL:2d::0.75 0.00     359
+DEAL:2d::0.75 0.00     358
+DEAL:2d::0.75 0.50     315
+DEAL:2d::0.75 0.50     314
+DEAL:2d::0.50 0.00     325
+DEAL:2d::1.00 0.00     324
+DEAL:2d::0.50 0.50     323
+DEAL:2d::1.00 0.50     322
+DEAL:2d::0.75 0.25     321
+DEAL:2d::0.75 0.25     320
+DEAL:2d::
+DEAL:2d::0.00 0.50     301
+DEAL:2d::0.00 0.50     300
+DEAL:2d::0.50 0.50     313
+DEAL:2d::0.50 0.50     312
+DEAL:2d::0.00 1.00     195
+DEAL:2d::0.00 1.00     194
+DEAL:2d::0.50 1.00     207
+DEAL:2d::0.50 1.00     206
+DEAL:2d::0.00 0.75     193
+DEAL:2d::0.00 0.75     192
+DEAL:2d::0.50 0.75     205
+DEAL:2d::0.50 0.75     204
+DEAL:2d::0.25 0.50     303
+DEAL:2d::0.25 0.50     302
+DEAL:2d::0.25 1.00     203
+DEAL:2d::0.25 1.00     202
+DEAL:2d::0.00 0.50     201
+DEAL:2d::0.50 0.50     200
+DEAL:2d::0.00 1.00     199
+DEAL:2d::0.50 1.00     198
+DEAL:2d::0.25 0.75     197
+DEAL:2d::0.25 0.75     196
+DEAL:2d::
+DEAL:2d::0.50 0.50     313
+DEAL:2d::0.50 0.50     312
+DEAL:2d::1.00 0.50     317
+DEAL:2d::1.00 0.50     316
+DEAL:2d::0.50 1.00     207
+DEAL:2d::0.50 1.00     206
+DEAL:2d::1.00 1.00     219
+DEAL:2d::1.00 1.00     218
+DEAL:2d::0.50 0.75     205
+DEAL:2d::0.50 0.75     204
+DEAL:2d::1.00 0.75     217
+DEAL:2d::1.00 0.75     216
+DEAL:2d::0.75 0.50     315
+DEAL:2d::0.75 0.50     314
+DEAL:2d::0.75 1.00     215
+DEAL:2d::0.75 1.00     214
+DEAL:2d::0.50 0.50     213
+DEAL:2d::1.00 0.50     212
+DEAL:2d::0.50 1.00     211
+DEAL:2d::1.00 1.00     210
+DEAL:2d::0.75 0.75     209
+DEAL:2d::0.75 0.75     208
+DEAL:2d::
+DEAL:2d::-1.00 -1.00   23
+DEAL:2d::-1.00 -1.00   22
+DEAL:2d::-0.75 -1.00   77
+DEAL:2d::-0.75 -1.00   76
+DEAL:2d::-1.00 -0.75   11
+DEAL:2d::-1.00 -0.75   10
+DEAL:2d::-0.75 -0.75   71
+DEAL:2d::-0.75 -0.75   70
+DEAL:2d::-1.00 -0.88   21
+DEAL:2d::-1.00 -0.88   20
+DEAL:2d::-0.75 -0.88   75
+DEAL:2d::-0.75 -0.88   74
+DEAL:2d::-0.88 -1.00   19
+DEAL:2d::-0.88 -1.00   18
+DEAL:2d::-0.88 -0.75   9
+DEAL:2d::-0.88 -0.75   8
+DEAL:2d::-1.00 -1.00   17
+DEAL:2d::-0.75 -1.00   16
+DEAL:2d::-1.00 -0.75   15
+DEAL:2d::-0.75 -0.75   14
+DEAL:2d::-0.88 -0.88   13
+DEAL:2d::-0.88 -0.88   12
+DEAL:2d::
+DEAL:2d::-0.75 -1.00   77
+DEAL:2d::-0.75 -1.00   76
+DEAL:2d::-0.50 -1.00   171
+DEAL:2d::-0.50 -1.00   170
+DEAL:2d::-0.75 -0.75   71
+DEAL:2d::-0.75 -0.75   70
+DEAL:2d::-0.50 -0.75   165
+DEAL:2d::-0.50 -0.75   164
+DEAL:2d::-0.75 -0.88   75
+DEAL:2d::-0.75 -0.88   74
+DEAL:2d::-0.50 -0.88   169
+DEAL:2d::-0.50 -0.88   168
+DEAL:2d::-0.62 -1.00   85
+DEAL:2d::-0.62 -1.00   84
+DEAL:2d::-0.62 -0.75   73
+DEAL:2d::-0.62 -0.75   72
+DEAL:2d::-0.75 -1.00   83
+DEAL:2d::-0.50 -1.00   82
+DEAL:2d::-0.75 -0.75   81
+DEAL:2d::-0.50 -0.75   80
+DEAL:2d::-0.62 -0.88   79
+DEAL:2d::-0.62 -0.88   78
+DEAL:2d::
+DEAL:2d::-1.00 -0.75   11
+DEAL:2d::-1.00 -0.75   10
+DEAL:2d::-0.75 -0.75   71
+DEAL:2d::-0.75 -0.75   70
+DEAL:2d::-1.00 -0.50   27
+DEAL:2d::-1.00 -0.50   26
+DEAL:2d::-0.75 -0.50   59
+DEAL:2d::-0.75 -0.50   58
+DEAL:2d::-1.00 -0.62   7
+DEAL:2d::-1.00 -0.62   6
+DEAL:2d::-0.75 -0.62   63
+DEAL:2d::-0.75 -0.62   62
+DEAL:2d::-0.88 -0.75   9
+DEAL:2d::-0.88 -0.75   8
+DEAL:2d::-0.88 -0.50   25
+DEAL:2d::-0.88 -0.50   24
+DEAL:2d::-1.00 -0.75   5
+DEAL:2d::-0.75 -0.75   4
+DEAL:2d::-1.00 -0.50   3
+DEAL:2d::-0.75 -0.50   2
+DEAL:2d::-0.88 -0.62   1
+DEAL:2d::-0.88 -0.62   0
+DEAL:2d::
+DEAL:2d::-0.75 -0.75   71
+DEAL:2d::-0.75 -0.75   70
+DEAL:2d::-0.50 -0.75   165
+DEAL:2d::-0.50 -0.75   164
+DEAL:2d::-0.75 -0.50   59
+DEAL:2d::-0.75 -0.50   58
+DEAL:2d::-0.50 -0.50   153
+DEAL:2d::-0.50 -0.50   152
+DEAL:2d::-0.75 -0.62   63
+DEAL:2d::-0.75 -0.62   62
+DEAL:2d::-0.50 -0.62   157
+DEAL:2d::-0.50 -0.62   156
+DEAL:2d::-0.62 -0.75   73
+DEAL:2d::-0.62 -0.75   72
+DEAL:2d::-0.62 -0.50   61
+DEAL:2d::-0.62 -0.50   60
+DEAL:2d::-0.75 -0.75   69
+DEAL:2d::-0.50 -0.75   68
+DEAL:2d::-0.75 -0.50   67
+DEAL:2d::-0.50 -0.50   66
+DEAL:2d::-0.62 -0.62   65
+DEAL:2d::-0.62 -0.62   64
+DEAL:2d::
+DEAL:2d::-0.50 -1.00   171
+DEAL:2d::-0.50 -1.00   170
+DEAL:2d::-0.25 -1.00   282
+DEAL:2d::-0.25 -1.00   283
+DEAL:2d::-0.50 -0.75   165
+DEAL:2d::-0.50 -0.75   164
+DEAL:2d::-0.25 -0.75   280
+DEAL:2d::-0.25 -0.75   281
+DEAL:2d::-0.50 -0.88   169
+DEAL:2d::-0.50 -0.88   168
+DEAL:2d::-0.25 -0.88   284
+DEAL:2d::-0.25 -0.88   285
+DEAL:2d::-0.38 -1.00   179
+DEAL:2d::-0.38 -1.00   178
+DEAL:2d::-0.38 -0.75   167
+DEAL:2d::-0.38 -0.75   166
+DEAL:2d::-0.50 -1.00   177
+DEAL:2d::-0.25 -1.00   176
+DEAL:2d::-0.50 -0.75   175
+DEAL:2d::-0.25 -0.75   174
+DEAL:2d::-0.38 -0.88   173
+DEAL:2d::-0.38 -0.88   172
+DEAL:2d::
+DEAL:2d::-0.25 -1.00   282
+DEAL:2d::-0.25 -1.00   283
+DEAL:2d::0.00 -1.00    343
+DEAL:2d::0.00 -1.00    342
+DEAL:2d::-0.25 -0.75   280
+DEAL:2d::-0.25 -0.75   281
+DEAL:2d::0.00 -0.75    288
+DEAL:2d::0.00 -0.75    289
+DEAL:2d::-0.25 -0.88   284
+DEAL:2d::-0.25 -0.88   285
+DEAL:2d::0.00 -0.88    290
+DEAL:2d::0.00 -0.88    291
+DEAL:2d::-0.12 -1.00   292
+DEAL:2d::-0.12 -1.00   293
+DEAL:2d::-0.12 -0.75   287
+DEAL:2d::-0.12 -0.75   286
+DEAL:2d::-0.25 -1.00   294
+DEAL:2d::0.00 -1.00    295
+DEAL:2d::-0.25 -0.75   296
+DEAL:2d::0.00 -0.75    297
+DEAL:2d::-0.12 -0.88   298
+DEAL:2d::-0.12 -0.88   299
+DEAL:2d::
+DEAL:2d::-0.50 -0.75   165
+DEAL:2d::-0.50 -0.75   164
+DEAL:2d::-0.25 -0.75   280
+DEAL:2d::-0.25 -0.75   281
+DEAL:2d::-0.50 -0.50   153
+DEAL:2d::-0.50 -0.50   152
+DEAL:2d::-0.25 -0.50   250
+DEAL:2d::-0.25 -0.50   251
+DEAL:2d::-0.50 -0.62   157
+DEAL:2d::-0.50 -0.62   156
+DEAL:2d::-0.25 -0.62   256
+DEAL:2d::-0.25 -0.62   257
+DEAL:2d::-0.38 -0.75   167
+DEAL:2d::-0.38 -0.75   166
+DEAL:2d::-0.38 -0.50   155
+DEAL:2d::-0.38 -0.50   154
+DEAL:2d::-0.50 -0.75   163
+DEAL:2d::-0.25 -0.75   162
+DEAL:2d::-0.50 -0.50   161
+DEAL:2d::-0.25 -0.50   160
+DEAL:2d::-0.38 -0.62   159
+DEAL:2d::-0.38 -0.62   158
+DEAL:2d::
+DEAL:2d::-0.25 -0.75   280
+DEAL:2d::-0.25 -0.75   281
+DEAL:2d::0.00 -0.75    288
+DEAL:2d::0.00 -0.75    289
+DEAL:2d::-0.25 -0.50   250
+DEAL:2d::-0.25 -0.50   251
+DEAL:2d::0.00 -0.50    341
+DEAL:2d::0.00 -0.50    340
+DEAL:2d::-0.25 -0.62   256
+DEAL:2d::-0.25 -0.62   257
+DEAL:2d::0.00 -0.62    266
+DEAL:2d::0.00 -0.62    267
+DEAL:2d::-0.12 -0.75   287
+DEAL:2d::-0.12 -0.75   286
+DEAL:2d::-0.12 -0.50   262
+DEAL:2d::-0.12 -0.50   263
+DEAL:2d::-0.25 -0.75   268
+DEAL:2d::0.00 -0.75    269
+DEAL:2d::-0.25 -0.50   270
+DEAL:2d::0.00 -0.50    271
+DEAL:2d::-0.12 -0.62   272
+DEAL:2d::-0.12 -0.62   273
+DEAL:2d::
+DEAL:2d::-1.00 -0.50   27
+DEAL:2d::-1.00 -0.50   26
+DEAL:2d::-0.75 -0.50   59
+DEAL:2d::-0.75 -0.50   58
+DEAL:2d::-1.00 -0.25   39
+DEAL:2d::-1.00 -0.25   38
+DEAL:2d::-0.75 -0.25   87
+DEAL:2d::-0.75 -0.25   86
+DEAL:2d::-1.00 -0.38   35
+DEAL:2d::-1.00 -0.38   34
+DEAL:2d::-0.75 -0.38   51
+DEAL:2d::-0.75 -0.38   50
+DEAL:2d::-0.88 -0.50   25
+DEAL:2d::-0.88 -0.50   24
+DEAL:2d::-0.88 -0.25   37
+DEAL:2d::-0.88 -0.25   36
+DEAL:2d::-1.00 -0.50   33
+DEAL:2d::-0.75 -0.50   32
+DEAL:2d::-1.00 -0.25   31
+DEAL:2d::-0.75 -0.25   30
+DEAL:2d::-0.88 -0.38   29
+DEAL:2d::-0.88 -0.38   28
+DEAL:2d::
+DEAL:2d::-0.75 -0.50   59
+DEAL:2d::-0.75 -0.50   58
+DEAL:2d::-0.50 -0.50   153
+DEAL:2d::-0.50 -0.50   152
+DEAL:2d::-0.75 -0.25   87
+DEAL:2d::-0.75 -0.25   86
+DEAL:2d::-0.50 -0.25   141
+DEAL:2d::-0.50 -0.25   140
+DEAL:2d::-0.75 -0.38   51
+DEAL:2d::-0.75 -0.38   50
+DEAL:2d::-0.50 -0.38   145
+DEAL:2d::-0.50 -0.38   144
+DEAL:2d::-0.62 -0.50   61
+DEAL:2d::-0.62 -0.50   60
+DEAL:2d::-0.62 -0.25   93
+DEAL:2d::-0.62 -0.25   92
+DEAL:2d::-0.75 -0.50   57
+DEAL:2d::-0.50 -0.50   56
+DEAL:2d::-0.75 -0.25   55
+DEAL:2d::-0.50 -0.25   54
+DEAL:2d::-0.62 -0.38   53
+DEAL:2d::-0.62 -0.38   52
+DEAL:2d::
+DEAL:2d::-1.00 -0.25   39
+DEAL:2d::-1.00 -0.25   38
+DEAL:2d::-0.75 -0.25   87
+DEAL:2d::-0.75 -0.25   86
+DEAL:2d::-1.00 0.00    115
+DEAL:2d::-1.00 0.00    114
+DEAL:2d::-0.75 0.00    91
+DEAL:2d::-0.75 0.00    90
+DEAL:2d::-1.00 -0.12   49
+DEAL:2d::-1.00 -0.12   48
+DEAL:2d::-0.75 -0.12   89
+DEAL:2d::-0.75 -0.12   88
+DEAL:2d::-0.88 -0.25   37
+DEAL:2d::-0.88 -0.25   36
+DEAL:2d::-0.88 0.00    47
+DEAL:2d::-0.88 0.00    46
+DEAL:2d::-1.00 -0.25   45
+DEAL:2d::-0.75 -0.25   44
+DEAL:2d::-1.00 0.00    43
+DEAL:2d::-0.75 0.00    42
+DEAL:2d::-0.88 -0.12   41
+DEAL:2d::-0.88 -0.12   40
+DEAL:2d::
+DEAL:2d::-0.75 -0.25   87
+DEAL:2d::-0.75 -0.25   86
+DEAL:2d::-0.50 -0.25   141
+DEAL:2d::-0.50 -0.25   140
+DEAL:2d::-0.75 0.00    91
+DEAL:2d::-0.75 0.00    90
+DEAL:2d::-0.50 0.00    220
+DEAL:2d::-0.50 0.00    221
+DEAL:2d::-0.75 -0.12   89
+DEAL:2d::-0.75 -0.12   88
+DEAL:2d::-0.50 -0.12   131
+DEAL:2d::-0.50 -0.12   130
+DEAL:2d::-0.62 -0.25   93
+DEAL:2d::-0.62 -0.25   92
+DEAL:2d::-0.62 0.00    101
+DEAL:2d::-0.62 0.00    100
+DEAL:2d::-0.75 -0.25   99
+DEAL:2d::-0.50 -0.25   98
+DEAL:2d::-0.75 0.00    97
+DEAL:2d::-0.50 0.00    96
+DEAL:2d::-0.62 -0.12   95
+DEAL:2d::-0.62 -0.12   94
+DEAL:2d::
+DEAL:2d::-0.50 -0.50   153
+DEAL:2d::-0.50 -0.50   152
+DEAL:2d::-0.25 -0.50   250
+DEAL:2d::-0.25 -0.50   251
+DEAL:2d::-0.50 -0.25   141
+DEAL:2d::-0.50 -0.25   140
+DEAL:2d::-0.25 -0.25   252
+DEAL:2d::-0.25 -0.25   253
+DEAL:2d::-0.50 -0.38   145
+DEAL:2d::-0.50 -0.38   144
+DEAL:2d::-0.25 -0.38   261
+DEAL:2d::-0.25 -0.38   260
+DEAL:2d::-0.38 -0.50   155
+DEAL:2d::-0.38 -0.50   154
+DEAL:2d::-0.38 -0.25   143
+DEAL:2d::-0.38 -0.25   142
+DEAL:2d::-0.50 -0.50   151
+DEAL:2d::-0.25 -0.50   150
+DEAL:2d::-0.50 -0.25   149
+DEAL:2d::-0.25 -0.25   148
+DEAL:2d::-0.38 -0.38   147
+DEAL:2d::-0.38 -0.38   146
+DEAL:2d::
+DEAL:2d::-0.25 -0.50   250
+DEAL:2d::-0.25 -0.50   251
+DEAL:2d::0.00 -0.50    341
+DEAL:2d::0.00 -0.50    340
+DEAL:2d::-0.25 -0.25   252
+DEAL:2d::-0.25 -0.25   253
+DEAL:2d::0.00 -0.25    259
+DEAL:2d::0.00 -0.25    258
+DEAL:2d::-0.25 -0.38   261
+DEAL:2d::-0.25 -0.38   260
+DEAL:2d::0.00 -0.38    276
+DEAL:2d::0.00 -0.38    277
+DEAL:2d::-0.12 -0.50   262
+DEAL:2d::-0.12 -0.50   263
+DEAL:2d::-0.12 -0.25   255
+DEAL:2d::-0.12 -0.25   254
+DEAL:2d::-0.25 -0.50   278
+DEAL:2d::0.00 -0.50    279
+DEAL:2d::-0.25 -0.25   275
+DEAL:2d::0.00 -0.25    274
+DEAL:2d::-0.12 -0.38   265
+DEAL:2d::-0.12 -0.38   264
+DEAL:2d::
+DEAL:2d::-0.50 -0.25   141
+DEAL:2d::-0.50 -0.25   140
+DEAL:2d::-0.25 -0.25   252
+DEAL:2d::-0.25 -0.25   253
+DEAL:2d::-0.50 0.00    220
+DEAL:2d::-0.50 0.00    221
+DEAL:2d::-0.25 0.00    224
+DEAL:2d::-0.25 0.00    225
+DEAL:2d::-0.50 -0.12   131
+DEAL:2d::-0.50 -0.12   130
+DEAL:2d::-0.25 -0.12   226
+DEAL:2d::-0.25 -0.12   227
+DEAL:2d::-0.38 -0.25   143
+DEAL:2d::-0.38 -0.25   142
+DEAL:2d::-0.38 0.00    139
+DEAL:2d::-0.38 0.00    138
+DEAL:2d::-0.50 -0.25   137
+DEAL:2d::-0.25 -0.25   136
+DEAL:2d::-0.50 0.00    135
+DEAL:2d::-0.25 0.00    134
+DEAL:2d::-0.38 -0.12   133
+DEAL:2d::-0.38 -0.12   132
+DEAL:2d::
+DEAL:2d::-0.25 -0.25   252
+DEAL:2d::-0.25 -0.25   253
+DEAL:2d::0.00 -0.25    259
+DEAL:2d::0.00 -0.25    258
+DEAL:2d::-0.25 0.00    224
+DEAL:2d::-0.25 0.00    225
+DEAL:2d::0.00 0.00     329
+DEAL:2d::0.00 0.00     328
+DEAL:2d::-0.25 -0.12   226
+DEAL:2d::-0.25 -0.12   227
+DEAL:2d::0.00 -0.12    240
+DEAL:2d::0.00 -0.12    241
+DEAL:2d::-0.12 -0.25   255
+DEAL:2d::-0.12 -0.25   254
+DEAL:2d::-0.12 0.00    242
+DEAL:2d::-0.12 0.00    243
+DEAL:2d::-0.25 -0.25   244
+DEAL:2d::0.00 -0.25    245
+DEAL:2d::-0.25 0.00    246
+DEAL:2d::0.00 0.00     247
+DEAL:2d::-0.12 -0.12   248
+DEAL:2d::-0.12 -0.12   249
+DEAL:2d::
+DEAL:3d::FE_Q<3>(2)
+DEAL:3d::0.00 -1.00 -1.00      215
+DEAL:3d::1.00 -1.00 -1.00      146
+DEAL:3d::0.00 0.00 -1.00       154
+DEAL:3d::1.00 0.00 -1.00       136
+DEAL:3d::0.00 -1.00 0.00       172
+DEAL:3d::1.00 -1.00 0.00       138
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::1.00 0.00 0.00        131
+DEAL:3d::0.00 -0.50 -1.00      145
+DEAL:3d::1.00 -0.50 -1.00      144
+DEAL:3d::0.50 -1.00 -1.00      143
+DEAL:3d::0.50 0.00 -1.00       140
+DEAL:3d::0.00 -0.50 0.00       134
+DEAL:3d::1.00 -0.50 0.00       142
+DEAL:3d::0.50 -1.00 0.00       141
+DEAL:3d::0.50 0.00 0.00        132
+DEAL:3d::0.00 -1.00 -0.50      147
+DEAL:3d::1.00 -1.00 -0.50      148
+DEAL:3d::0.00 0.00 -0.50       133
+DEAL:3d::1.00 0.00 -0.50       139
+DEAL:3d::0.00 -0.50 -0.50      149
+DEAL:3d::1.00 -0.50 -0.50      150
+DEAL:3d::0.50 -1.00 -0.50      151
+DEAL:3d::0.50 0.00 -0.50       137
+DEAL:3d::0.50 -0.50 -1.00      152
+DEAL:3d::0.50 -0.50 0.00       135
+DEAL:3d::0.50 -0.50 -0.50      153
+DEAL:3d::
+DEAL:3d::-1.00 0.00 -1.00      106
+DEAL:3d::0.00 0.00 -1.00       154
+DEAL:3d::-1.00 1.00 -1.00      39
+DEAL:3d::0.00 1.00 -1.00       24
+DEAL:3d::-1.00 0.00 0.00       87
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::-1.00 1.00 0.00       25
+DEAL:3d::0.00 1.00 0.00        20
+DEAL:3d::-1.00 0.50 -1.00      38
+DEAL:3d::0.00 0.50 -1.00       28
+DEAL:3d::-0.50 0.00 -1.00      37
+DEAL:3d::-0.50 1.00 -1.00      36
+DEAL:3d::-1.00 0.50 0.00       31
+DEAL:3d::0.00 0.50 0.00        21
+DEAL:3d::-0.50 0.00 0.00       55
+DEAL:3d::-0.50 1.00 0.00       33
+DEAL:3d::-1.00 0.00 -0.50      35
+DEAL:3d::0.00 0.00 -0.50       133
+DEAL:3d::-1.00 1.00 -0.50      34
+DEAL:3d::0.00 1.00 -0.50       22
+DEAL:3d::-1.00 0.50 -0.50      40
+DEAL:3d::0.00 0.50 -0.50       29
+DEAL:3d::-0.50 0.00 -0.50      41
+DEAL:3d::-0.50 1.00 -0.50      42
+DEAL:3d::-0.50 0.50 -1.00      43
+DEAL:3d::-0.50 0.50 0.00       32
+DEAL:3d::-0.50 0.50 -0.50      44
+DEAL:3d::
+DEAL:3d::0.00 0.00 -1.00       154
+DEAL:3d::1.00 0.00 -1.00       136
+DEAL:3d::0.00 1.00 -1.00       24
+DEAL:3d::1.00 1.00 -1.00       45
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::1.00 0.00 0.00        131
+DEAL:3d::0.00 1.00 0.00        20
+DEAL:3d::1.00 1.00 0.00        30
+DEAL:3d::0.00 0.50 -1.00       28
+DEAL:3d::1.00 0.50 -1.00       46
+DEAL:3d::0.50 0.00 -1.00       140
+DEAL:3d::0.50 1.00 -1.00       47
+DEAL:3d::0.00 0.50 0.00        21
+DEAL:3d::1.00 0.50 0.00        27
+DEAL:3d::0.50 0.00 0.00        132
+DEAL:3d::0.50 1.00 0.00        26
+DEAL:3d::0.00 0.00 -0.50       133
+DEAL:3d::1.00 0.00 -0.50       139
+DEAL:3d::0.00 1.00 -0.50       22
+DEAL:3d::1.00 1.00 -0.50       48
+DEAL:3d::0.00 0.50 -0.50       29
+DEAL:3d::1.00 0.50 -0.50       49
+DEAL:3d::0.50 0.00 -0.50       137
+DEAL:3d::0.50 1.00 -0.50       50
+DEAL:3d::0.50 0.50 -1.00       51
+DEAL:3d::0.50 0.50 0.00        23
+DEAL:3d::0.50 0.50 -0.50       52
+DEAL:3d::
+DEAL:3d::-1.00 -1.00 0.00      118
+DEAL:3d::0.00 -1.00 0.00       172
+DEAL:3d::-1.00 0.00 0.00       87
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::-1.00 -1.00 1.00      73
+DEAL:3d::0.00 -1.00 1.00       66
+DEAL:3d::-1.00 0.00 1.00       65
+DEAL:3d::0.00 0.00 1.00        54
+DEAL:3d::-1.00 -0.50 0.00      70
+DEAL:3d::0.00 -0.50 0.00       134
+DEAL:3d::-0.50 -1.00 0.00      68
+DEAL:3d::-0.50 0.00 0.00       55
+DEAL:3d::-1.00 -0.50 1.00      69
+DEAL:3d::0.00 -0.50 1.00       61
+DEAL:3d::-0.50 -1.00 1.00      71
+DEAL:3d::-0.50 0.00 1.00       60
+DEAL:3d::-1.00 -1.00 0.50      72
+DEAL:3d::0.00 -1.00 0.50       57
+DEAL:3d::-1.00 0.00 0.50       56
+DEAL:3d::0.00 0.00 0.50        53
+DEAL:3d::-1.00 -0.50 0.50      74
+DEAL:3d::0.00 -0.50 0.50       58
+DEAL:3d::-0.50 -1.00 0.50      75
+DEAL:3d::-0.50 0.00 0.50       59
+DEAL:3d::-0.50 -0.50 0.00      76
+DEAL:3d::-0.50 -0.50 1.00      77
+DEAL:3d::-0.50 -0.50 0.50      78
+DEAL:3d::
+DEAL:3d::0.00 -1.00 0.00       172
+DEAL:3d::1.00 -1.00 0.00       138
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::1.00 0.00 0.00        131
+DEAL:3d::0.00 -1.00 1.00       66
+DEAL:3d::1.00 -1.00 1.00       79
+DEAL:3d::0.00 0.00 1.00        54
+DEAL:3d::1.00 0.00 1.00        62
+DEAL:3d::0.00 -0.50 0.00       134
+DEAL:3d::1.00 -0.50 0.00       142
+DEAL:3d::0.50 -1.00 0.00       141
+DEAL:3d::0.50 0.00 0.00        132
+DEAL:3d::0.00 -0.50 1.00       61
+DEAL:3d::1.00 -0.50 1.00       80
+DEAL:3d::0.50 -1.00 1.00       81
+DEAL:3d::0.50 0.00 1.00        63
+DEAL:3d::0.00 -1.00 0.50       57
+DEAL:3d::1.00 -1.00 0.50       82
+DEAL:3d::0.00 0.00 0.50        53
+DEAL:3d::1.00 0.00 0.50        64
+DEAL:3d::0.00 -0.50 0.50       58
+DEAL:3d::1.00 -0.50 0.50       83
+DEAL:3d::0.50 -1.00 0.50       84
+DEAL:3d::0.50 0.00 0.50        67
+DEAL:3d::0.50 -0.50 0.00       135
+DEAL:3d::0.50 -0.50 1.00       85
+DEAL:3d::0.50 -0.50 0.50       86
+DEAL:3d::
+DEAL:3d::-1.00 0.00 0.00       87
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::-1.00 1.00 0.00       25
+DEAL:3d::0.00 1.00 0.00        20
+DEAL:3d::-1.00 0.00 1.00       65
+DEAL:3d::0.00 0.00 1.00        54
+DEAL:3d::-1.00 1.00 1.00       7
+DEAL:3d::0.00 1.00 1.00        11
+DEAL:3d::-1.00 0.50 0.00       31
+DEAL:3d::0.00 0.50 0.00        21
+DEAL:3d::-0.50 0.00 0.00       55
+DEAL:3d::-0.50 1.00 0.00       33
+DEAL:3d::-1.00 0.50 1.00       6
+DEAL:3d::0.00 0.50 1.00        10
+DEAL:3d::-0.50 0.00 1.00       60
+DEAL:3d::-0.50 1.00 1.00       5
+DEAL:3d::-1.00 0.00 0.50       56
+DEAL:3d::0.00 0.00 0.50        53
+DEAL:3d::-1.00 1.00 0.50       4
+DEAL:3d::0.00 1.00 0.50        9
+DEAL:3d::-1.00 0.50 0.50       3
+DEAL:3d::0.00 0.50 0.50        8
+DEAL:3d::-0.50 0.00 0.50       59
+DEAL:3d::-0.50 1.00 0.50       2
+DEAL:3d::-0.50 0.50 0.00       32
+DEAL:3d::-0.50 0.50 1.00       1
+DEAL:3d::-0.50 0.50 0.50       0
+DEAL:3d::
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::1.00 0.00 0.00        131
+DEAL:3d::0.00 1.00 0.00        20
+DEAL:3d::1.00 1.00 0.00        30
+DEAL:3d::0.00 0.00 1.00        54
+DEAL:3d::1.00 0.00 1.00        62
+DEAL:3d::0.00 1.00 1.00        11
+DEAL:3d::1.00 1.00 1.00        19
+DEAL:3d::0.00 0.50 0.00        21
+DEAL:3d::1.00 0.50 0.00        27
+DEAL:3d::0.50 0.00 0.00        132
+DEAL:3d::0.50 1.00 0.00        26
+DEAL:3d::0.00 0.50 1.00        10
+DEAL:3d::1.00 0.50 1.00        18
+DEAL:3d::0.50 0.00 1.00        63
+DEAL:3d::0.50 1.00 1.00        17
+DEAL:3d::0.00 0.00 0.50        53
+DEAL:3d::1.00 0.00 0.50        64
+DEAL:3d::0.00 1.00 0.50        9
+DEAL:3d::1.00 1.00 0.50        16
+DEAL:3d::0.00 0.50 0.50        8
+DEAL:3d::1.00 0.50 0.50        15
+DEAL:3d::0.50 0.00 0.50        67
+DEAL:3d::0.50 1.00 0.50        14
+DEAL:3d::0.50 0.50 0.00        23
+DEAL:3d::0.50 0.50 1.00        13
+DEAL:3d::0.50 0.50 0.50        12
+DEAL:3d::
+DEAL:3d::-1.00 -1.00 -1.00     200
+DEAL:3d::-0.50 -1.00 -1.00     222
+DEAL:3d::-1.00 -0.50 -1.00     193
+DEAL:3d::-0.50 -0.50 -1.00     213
+DEAL:3d::-1.00 -1.00 -0.50     195
+DEAL:3d::-0.50 -1.00 -0.50     214
+DEAL:3d::-1.00 -0.50 -0.50     190
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::-1.00 -0.75 -1.00     201
+DEAL:3d::-0.50 -0.75 -1.00     221
+DEAL:3d::-0.75 -1.00 -1.00     202
+DEAL:3d::-0.75 -0.50 -1.00     199
+DEAL:3d::-1.00 -0.75 -0.50     198
+DEAL:3d::-0.50 -0.75 -0.50     209
+DEAL:3d::-0.75 -1.00 -0.50     197
+DEAL:3d::-0.75 -0.50 -0.50     191
+DEAL:3d::-1.00 -1.00 -0.75     203
+DEAL:3d::-0.50 -1.00 -0.75     227
+DEAL:3d::-1.00 -0.50 -0.75     196
+DEAL:3d::-0.50 -0.50 -0.75     210
+DEAL:3d::-1.00 -0.75 -0.75     204
+DEAL:3d::-0.50 -0.75 -0.75     225
+DEAL:3d::-0.75 -1.00 -0.75     205
+DEAL:3d::-0.75 -0.50 -0.75     194
+DEAL:3d::-0.75 -0.75 -1.00     206
+DEAL:3d::-0.75 -0.75 -0.50     192
+DEAL:3d::-0.75 -0.75 -0.75     207
+DEAL:3d::
+DEAL:3d::-0.50 -1.00 -1.00     222
+DEAL:3d::0.00 -1.00 -1.00      215
+DEAL:3d::-0.50 -0.50 -1.00     213
+DEAL:3d::0.00 -0.50 -1.00      224
+DEAL:3d::-0.50 -1.00 -0.50     214
+DEAL:3d::0.00 -1.00 -0.50      223
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::0.00 -0.50 -0.50      211
+DEAL:3d::-0.50 -0.75 -1.00     221
+DEAL:3d::0.00 -0.75 -1.00      234
+DEAL:3d::-0.25 -1.00 -1.00     228
+DEAL:3d::-0.25 -0.50 -1.00     220
+DEAL:3d::-0.50 -0.75 -0.50     209
+DEAL:3d::0.00 -0.75 -0.50      219
+DEAL:3d::-0.25 -1.00 -0.50     218
+DEAL:3d::-0.25 -0.50 -0.50     212
+DEAL:3d::-0.50 -1.00 -0.75     227
+DEAL:3d::0.00 -1.00 -0.75      229
+DEAL:3d::-0.50 -0.50 -0.75     210
+DEAL:3d::0.00 -0.50 -0.75      216
+DEAL:3d::-0.50 -0.75 -0.75     225
+DEAL:3d::0.00 -0.75 -0.75      230
+DEAL:3d::-0.25 -1.00 -0.75     231
+DEAL:3d::-0.25 -0.50 -0.75     217
+DEAL:3d::-0.25 -0.75 -1.00     232
+DEAL:3d::-0.25 -0.75 -0.50     226
+DEAL:3d::-0.25 -0.75 -0.75     233
+DEAL:3d::
+DEAL:3d::-1.00 -0.50 -1.00     193
+DEAL:3d::-0.50 -0.50 -1.00     213
+DEAL:3d::-1.00 0.00 -1.00      106
+DEAL:3d::-0.50 0.00 -1.00      158
+DEAL:3d::-1.00 -0.50 -0.50     190
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::-1.00 0.00 -0.50      110
+DEAL:3d::-0.50 0.00 -0.50      155
+DEAL:3d::-1.00 -0.25 -1.00     117
+DEAL:3d::-0.50 -0.25 -1.00     159
+DEAL:3d::-0.75 -0.50 -1.00     199
+DEAL:3d::-0.75 0.00 -1.00      116
+DEAL:3d::-1.00 -0.25 -0.50     109
+DEAL:3d::-0.50 -0.25 -0.50     156
+DEAL:3d::-0.75 -0.50 -0.50     191
+DEAL:3d::-0.75 0.00 -0.50      108
+DEAL:3d::-1.00 -0.50 -0.75     196
+DEAL:3d::-0.50 -0.50 -0.75     210
+DEAL:3d::-1.00 0.00 -0.75      115
+DEAL:3d::-0.50 0.00 -0.75      162
+DEAL:3d::-1.00 -0.25 -0.75     114
+DEAL:3d::-0.50 -0.25 -0.75     163
+DEAL:3d::-0.75 -0.50 -0.75     194
+DEAL:3d::-0.75 0.00 -0.75      113
+DEAL:3d::-0.75 -0.25 -1.00     112
+DEAL:3d::-0.75 -0.25 -0.50     107
+DEAL:3d::-0.75 -0.25 -0.75     111
+DEAL:3d::
+DEAL:3d::-0.50 -0.50 -1.00     213
+DEAL:3d::0.00 -0.50 -1.00      224
+DEAL:3d::-0.50 0.00 -1.00      158
+DEAL:3d::0.00 0.00 -1.00       154
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::0.00 -0.50 -0.50      211
+DEAL:3d::-0.50 0.00 -0.50      155
+DEAL:3d::0.00 0.00 -0.50       164
+DEAL:3d::-0.50 -0.25 -1.00     159
+DEAL:3d::0.00 -0.25 -1.00      165
+DEAL:3d::-0.25 -0.50 -1.00     220
+DEAL:3d::-0.25 0.00 -1.00      166
+DEAL:3d::-0.50 -0.25 -0.50     156
+DEAL:3d::0.00 -0.25 -0.50      161
+DEAL:3d::-0.25 -0.50 -0.50     212
+DEAL:3d::-0.25 0.00 -0.50      160
+DEAL:3d::-0.50 -0.50 -0.75     210
+DEAL:3d::0.00 -0.50 -0.75      216
+DEAL:3d::-0.50 0.00 -0.75      162
+DEAL:3d::0.00 0.00 -0.75       167
+DEAL:3d::-0.50 -0.25 -0.75     163
+DEAL:3d::0.00 -0.25 -0.75      168
+DEAL:3d::-0.25 -0.50 -0.75     217
+DEAL:3d::-0.25 0.00 -0.75      169
+DEAL:3d::-0.25 -0.25 -1.00     170
+DEAL:3d::-0.25 -0.25 -0.50     157
+DEAL:3d::-0.25 -0.25 -0.75     171
+DEAL:3d::
+DEAL:3d::-1.00 -1.00 -0.50     195
+DEAL:3d::-0.50 -1.00 -0.50     214
+DEAL:3d::-1.00 -0.50 -0.50     190
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::-1.00 -1.00 0.00      118
+DEAL:3d::-0.50 -1.00 0.00      175
+DEAL:3d::-1.00 -0.50 0.00      122
+DEAL:3d::-0.50 -0.50 0.00      173
+DEAL:3d::-1.00 -0.75 -0.50     198
+DEAL:3d::-0.50 -0.75 -0.50     209
+DEAL:3d::-0.75 -1.00 -0.50     197
+DEAL:3d::-0.75 -0.50 -0.50     191
+DEAL:3d::-1.00 -0.75 0.00      129
+DEAL:3d::-0.50 -0.75 0.00      177
+DEAL:3d::-0.75 -1.00 0.00      128
+DEAL:3d::-0.75 -0.50 0.00      121
+DEAL:3d::-1.00 -1.00 -0.25     127
+DEAL:3d::-0.50 -1.00 -0.25     179
+DEAL:3d::-1.00 -0.50 -0.25     120
+DEAL:3d::-0.50 -0.50 -0.25     174
+DEAL:3d::-1.00 -0.75 -0.25     126
+DEAL:3d::-0.50 -0.75 -0.25     181
+DEAL:3d::-0.75 -1.00 -0.25     125
+DEAL:3d::-0.75 -0.50 -0.25     119
+DEAL:3d::-0.75 -0.75 -0.50     192
+DEAL:3d::-0.75 -0.75 0.00      124
+DEAL:3d::-0.75 -0.75 -0.25     123
+DEAL:3d::
+DEAL:3d::-0.50 -1.00 -0.50     214
+DEAL:3d::0.00 -1.00 -0.50      223
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::0.00 -0.50 -0.50      211
+DEAL:3d::-0.50 -1.00 0.00      175
+DEAL:3d::0.00 -1.00 0.00       172
+DEAL:3d::-0.50 -0.50 0.00      173
+DEAL:3d::0.00 -0.50 0.00       182
+DEAL:3d::-0.50 -0.75 -0.50     209
+DEAL:3d::0.00 -0.75 -0.50      219
+DEAL:3d::-0.25 -1.00 -0.50     218
+DEAL:3d::-0.25 -0.50 -0.50     212
+DEAL:3d::-0.50 -0.75 0.00      177
+DEAL:3d::0.00 -0.75 0.00       183
+DEAL:3d::-0.25 -1.00 0.00      184
+DEAL:3d::-0.25 -0.50 0.00      180
+DEAL:3d::-0.50 -1.00 -0.25     179
+DEAL:3d::0.00 -1.00 -0.25      185
+DEAL:3d::-0.50 -0.50 -0.25     174
+DEAL:3d::0.00 -0.50 -0.25      178
+DEAL:3d::-0.50 -0.75 -0.25     181
+DEAL:3d::0.00 -0.75 -0.25      186
+DEAL:3d::-0.25 -1.00 -0.25     187
+DEAL:3d::-0.25 -0.50 -0.25     176
+DEAL:3d::-0.25 -0.75 -0.50     226
+DEAL:3d::-0.25 -0.75 0.00      188
+DEAL:3d::-0.25 -0.75 -0.25     189
+DEAL:3d::
+DEAL:3d::-1.00 -0.50 -0.50     190
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::-1.00 0.00 -0.50      110
+DEAL:3d::-0.50 0.00 -0.50      155
+DEAL:3d::-1.00 -0.50 0.00      122
+DEAL:3d::-0.50 -0.50 0.00      173
+DEAL:3d::-1.00 0.00 0.00       87
+DEAL:3d::-0.50 0.00 0.00       98
+DEAL:3d::-1.00 -0.25 -0.50     109
+DEAL:3d::-0.50 -0.25 -0.50     156
+DEAL:3d::-0.75 -0.50 -0.50     191
+DEAL:3d::-0.75 0.00 -0.50      108
+DEAL:3d::-1.00 -0.25 0.00      94
+DEAL:3d::-0.50 -0.25 0.00      97
+DEAL:3d::-0.75 -0.50 0.00      121
+DEAL:3d::-0.75 0.00 0.00       93
+DEAL:3d::-1.00 -0.50 -0.25     120
+DEAL:3d::-0.50 -0.50 -0.25     174
+DEAL:3d::-1.00 0.00 -0.25      92
+DEAL:3d::-0.50 0.00 -0.25      96
+DEAL:3d::-1.00 -0.25 -0.25     91
+DEAL:3d::-0.50 -0.25 -0.25     95
+DEAL:3d::-0.75 -0.50 -0.25     119
+DEAL:3d::-0.75 0.00 -0.25      90
+DEAL:3d::-0.75 -0.25 -0.50     107
+DEAL:3d::-0.75 -0.25 0.00      89
+DEAL:3d::-0.75 -0.25 -0.25     88
+DEAL:3d::
+DEAL:3d::-0.50 -0.50 -0.50     208
+DEAL:3d::0.00 -0.50 -0.50      211
+DEAL:3d::-0.50 0.00 -0.50      155
+DEAL:3d::0.00 0.00 -0.50       164
+DEAL:3d::-0.50 -0.50 0.00      173
+DEAL:3d::0.00 -0.50 0.00       182
+DEAL:3d::-0.50 0.00 0.00       98
+DEAL:3d::0.00 0.00 0.00        130
+DEAL:3d::-0.50 -0.25 -0.50     156
+DEAL:3d::0.00 -0.25 -0.50      161
+DEAL:3d::-0.25 -0.50 -0.50     212
+DEAL:3d::-0.25 0.00 -0.50      160
+DEAL:3d::-0.50 -0.25 0.00      97
+DEAL:3d::0.00 -0.25 0.00       105
+DEAL:3d::-0.25 -0.50 0.00      180
+DEAL:3d::-0.25 0.00 0.00       104
+DEAL:3d::-0.50 -0.50 -0.25     174
+DEAL:3d::0.00 -0.50 -0.25      178
+DEAL:3d::-0.50 0.00 -0.25      96
+DEAL:3d::0.00 0.00 -0.25       103
+DEAL:3d::-0.50 -0.25 -0.25     95
+DEAL:3d::0.00 -0.25 -0.25      102
+DEAL:3d::-0.25 -0.50 -0.25     176
+DEAL:3d::-0.25 0.00 -0.25      101
+DEAL:3d::-0.25 -0.25 -0.50     157
+DEAL:3d::-0.25 -0.25 0.00      100
+DEAL:3d::-0.25 -0.25 -0.25     99
+DEAL:3d::
+DEAL:3d::FESystem<3>[FE_DGQ<3>(1)-FE_Q<3>(2)^3]
+DEAL:3d::0.00 -1.00 -1.00      759
+DEAL:3d::0.00 -1.00 -1.00      758
+DEAL:3d::0.00 -1.00 -1.00      757
+DEAL:3d::1.00 -1.00 -1.00      520
+DEAL:3d::1.00 -1.00 -1.00      519
+DEAL:3d::1.00 -1.00 -1.00      518
+DEAL:3d::0.00 0.00 -1.00       674
+DEAL:3d::0.00 0.00 -1.00       675
+DEAL:3d::0.00 0.00 -1.00       676
+DEAL:3d::1.00 0.00 -1.00       506
+DEAL:3d::1.00 0.00 -1.00       505
+DEAL:3d::1.00 0.00 -1.00       504
+DEAL:3d::0.00 -1.00 0.00       612
+DEAL:3d::0.00 -1.00 0.00       613
+DEAL:3d::0.00 -1.00 0.00       614
+DEAL:3d::1.00 -1.00 0.00       503
+DEAL:3d::1.00 -1.00 0.00       502
+DEAL:3d::1.00 -1.00 0.00       501
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::1.00 0.00 0.00        474
+DEAL:3d::1.00 0.00 0.00        473
+DEAL:3d::1.00 0.00 0.00        478
+DEAL:3d::0.00 -0.50 -1.00      517
+DEAL:3d::0.00 -0.50 -1.00      516
+DEAL:3d::0.00 -0.50 -1.00      515
+DEAL:3d::1.00 -0.50 -1.00      514
+DEAL:3d::1.00 -0.50 -1.00      513
+DEAL:3d::1.00 -0.50 -1.00      512
+DEAL:3d::0.50 -1.00 -1.00      511
+DEAL:3d::0.50 -1.00 -1.00      510
+DEAL:3d::0.50 -1.00 -1.00      509
+DEAL:3d::0.50 0.00 -1.00       490
+DEAL:3d::0.50 0.00 -1.00       491
+DEAL:3d::0.50 0.00 -1.00       492
+DEAL:3d::0.00 -0.50 0.00       482
+DEAL:3d::0.00 -0.50 0.00       483
+DEAL:3d::0.00 -0.50 0.00       484
+DEAL:3d::1.00 -0.50 0.00       508
+DEAL:3d::1.00 -0.50 0.00       507
+DEAL:3d::1.00 -0.50 0.00       494
+DEAL:3d::0.50 -1.00 0.00       493
+DEAL:3d::0.50 -1.00 0.00       486
+DEAL:3d::0.50 -1.00 0.00       485
+DEAL:3d::0.50 0.00 0.00        477
+DEAL:3d::0.50 0.00 0.00        476
+DEAL:3d::0.50 0.00 0.00        475
+DEAL:3d::0.00 -1.00 -0.50      549
+DEAL:3d::0.00 -1.00 -0.50      548
+DEAL:3d::0.00 -1.00 -0.50      547
+DEAL:3d::1.00 -1.00 -0.50      546
+DEAL:3d::1.00 -1.00 -0.50      545
+DEAL:3d::1.00 -1.00 -0.50      544
+DEAL:3d::0.00 0.00 -0.50       481
+DEAL:3d::0.00 0.00 -0.50       480
+DEAL:3d::0.00 0.00 -0.50       479
+DEAL:3d::1.00 0.00 -0.50       489
+DEAL:3d::1.00 0.00 -0.50       488
+DEAL:3d::1.00 0.00 -0.50       487
+DEAL:3d::0.00 -0.50 -0.50      543
+DEAL:3d::0.00 -0.50 -0.50      542
+DEAL:3d::0.00 -0.50 -0.50      541
+DEAL:3d::1.00 -0.50 -0.50      540
+DEAL:3d::1.00 -0.50 -0.50      539
+DEAL:3d::1.00 -0.50 -0.50      538
+DEAL:3d::0.50 -1.00 -0.50      537
+DEAL:3d::0.50 -1.00 -0.50      536
+DEAL:3d::0.50 -1.00 -0.50      535
+DEAL:3d::0.50 0.00 -0.50       495
+DEAL:3d::0.50 0.00 -0.50       496
+DEAL:3d::0.50 0.00 -0.50       497
+DEAL:3d::0.50 -0.50 -1.00      534
+DEAL:3d::0.50 -0.50 -1.00      533
+DEAL:3d::0.50 -0.50 -1.00      532
+DEAL:3d::0.50 -0.50 0.00       498
+DEAL:3d::0.50 -0.50 0.00       499
+DEAL:3d::0.50 -0.50 0.00       500
+DEAL:3d::0.00 -1.00 -1.00      531
+DEAL:3d::1.00 -1.00 -1.00      530
+DEAL:3d::0.00 0.00 -1.00       529
+DEAL:3d::1.00 0.00 -1.00       528
+DEAL:3d::0.00 -1.00 0.00       527
+DEAL:3d::1.00 -1.00 0.00       526
+DEAL:3d::0.00 0.00 0.00        525
+DEAL:3d::1.00 0.00 0.00        524
+DEAL:3d::0.50 -0.50 -0.50      523
+DEAL:3d::0.50 -0.50 -0.50      522
+DEAL:3d::0.50 -0.50 -0.50      521
+DEAL:3d::
+DEAL:3d::-1.00 0.00 -1.00      385
+DEAL:3d::-1.00 0.00 -1.00      386
+DEAL:3d::-1.00 0.00 -1.00      387
+DEAL:3d::0.00 0.00 -1.00       674
+DEAL:3d::0.00 0.00 -1.00       675
+DEAL:3d::0.00 0.00 -1.00       676
+DEAL:3d::-1.00 1.00 -1.00      257
+DEAL:3d::-1.00 1.00 -1.00      256
+DEAL:3d::-1.00 1.00 -1.00      255
+DEAL:3d::0.00 1.00 -1.00       219
+DEAL:3d::0.00 1.00 -1.00       220
+DEAL:3d::0.00 1.00 -1.00       221
+DEAL:3d::-1.00 0.00 0.00       309
+DEAL:3d::-1.00 0.00 0.00       310
+DEAL:3d::-1.00 0.00 0.00       311
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::-1.00 1.00 0.00       222
+DEAL:3d::-1.00 1.00 0.00       223
+DEAL:3d::-1.00 1.00 0.00       224
+DEAL:3d::0.00 1.00 0.00        194
+DEAL:3d::0.00 1.00 0.00        195
+DEAL:3d::0.00 1.00 0.00        192
+DEAL:3d::-1.00 0.50 -1.00      254
+DEAL:3d::-1.00 0.50 -1.00      253
+DEAL:3d::-1.00 0.50 -1.00      252
+DEAL:3d::0.00 0.50 -1.00       229
+DEAL:3d::0.00 0.50 -1.00       230
+DEAL:3d::0.00 0.50 -1.00       231
+DEAL:3d::-0.50 0.00 -1.00      251
+DEAL:3d::-0.50 0.00 -1.00      250
+DEAL:3d::-0.50 0.00 -1.00      249
+DEAL:3d::-0.50 1.00 -1.00      248
+DEAL:3d::-0.50 1.00 -1.00      247
+DEAL:3d::-0.50 1.00 -1.00      246
+DEAL:3d::-1.00 0.50 0.00       200
+DEAL:3d::-1.00 0.50 0.00       209
+DEAL:3d::-1.00 0.50 0.00       210
+DEAL:3d::0.00 0.50 0.00        193
+DEAL:3d::0.00 0.50 0.00        196
+DEAL:3d::0.00 0.50 0.00        191
+DEAL:3d::-0.50 0.00 0.00       199
+DEAL:3d::-0.50 0.00 0.00       198
+DEAL:3d::-0.50 0.00 0.00       197
+DEAL:3d::-0.50 1.00 0.00       214
+DEAL:3d::-0.50 1.00 0.00       215
+DEAL:3d::-0.50 1.00 0.00       216
+DEAL:3d::-1.00 0.00 -0.50      245
+DEAL:3d::-1.00 0.00 -0.50      244
+DEAL:3d::-1.00 0.00 -0.50      243
+DEAL:3d::0.00 0.00 -0.50       481
+DEAL:3d::0.00 0.00 -0.50       480
+DEAL:3d::0.00 0.00 -0.50       479
+DEAL:3d::-1.00 1.00 -0.50      238
+DEAL:3d::-1.00 1.00 -0.50      236
+DEAL:3d::-1.00 1.00 -0.50      237
+DEAL:3d::0.00 1.00 -0.50       232
+DEAL:3d::0.00 1.00 -0.50       234
+DEAL:3d::0.00 1.00 -0.50       233
+DEAL:3d::-1.00 0.50 -0.50      239
+DEAL:3d::-1.00 0.50 -0.50      240
+DEAL:3d::-1.00 0.50 -0.50      241
+DEAL:3d::0.00 0.50 -0.50       228
+DEAL:3d::0.00 0.50 -0.50       218
+DEAL:3d::0.00 0.50 -0.50       217
+DEAL:3d::-0.50 0.00 -0.50      242
+DEAL:3d::-0.50 0.00 -0.50      284
+DEAL:3d::-0.50 0.00 -0.50      285
+DEAL:3d::-0.50 1.00 -0.50      286
+DEAL:3d::-0.50 1.00 -0.50      287
+DEAL:3d::-0.50 1.00 -0.50      288
+DEAL:3d::-0.50 0.50 -1.00      289
+DEAL:3d::-0.50 0.50 -1.00      290
+DEAL:3d::-0.50 0.50 -1.00      291
+DEAL:3d::-0.50 0.50 0.00       235
+DEAL:3d::-0.50 0.50 0.00       208
+DEAL:3d::-0.50 0.50 0.00       201
+DEAL:3d::-1.00 0.00 -1.00      292
+DEAL:3d::0.00 0.00 -1.00       293
+DEAL:3d::-1.00 1.00 -1.00      294
+DEAL:3d::0.00 1.00 -1.00       295
+DEAL:3d::-1.00 0.00 0.00       296
+DEAL:3d::0.00 0.00 0.00        297
+DEAL:3d::-1.00 1.00 0.00       298
+DEAL:3d::0.00 1.00 0.00        299
+DEAL:3d::-0.50 0.50 -0.50      300
+DEAL:3d::-0.50 0.50 -0.50      301
+DEAL:3d::-0.50 0.50 -0.50      302
+DEAL:3d::
+DEAL:3d::0.00 0.00 -1.00       674
+DEAL:3d::0.00 0.00 -1.00       675
+DEAL:3d::0.00 0.00 -1.00       676
+DEAL:3d::1.00 0.00 -1.00       506
+DEAL:3d::1.00 0.00 -1.00       505
+DEAL:3d::1.00 0.00 -1.00       504
+DEAL:3d::0.00 1.00 -1.00       219
+DEAL:3d::0.00 1.00 -1.00       220
+DEAL:3d::0.00 1.00 -1.00       221
+DEAL:3d::1.00 1.00 -1.00       303
+DEAL:3d::1.00 1.00 -1.00       304
+DEAL:3d::1.00 1.00 -1.00       305
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::1.00 0.00 0.00        474
+DEAL:3d::1.00 0.00 0.00        473
+DEAL:3d::1.00 0.00 0.00        478
+DEAL:3d::0.00 1.00 0.00        194
+DEAL:3d::0.00 1.00 0.00        195
+DEAL:3d::0.00 1.00 0.00        192
+DEAL:3d::1.00 1.00 0.00        213
+DEAL:3d::1.00 1.00 0.00        212
+DEAL:3d::1.00 1.00 0.00        211
+DEAL:3d::0.00 0.50 -1.00       229
+DEAL:3d::0.00 0.50 -1.00       230
+DEAL:3d::0.00 0.50 -1.00       231
+DEAL:3d::1.00 0.50 -1.00       306
+DEAL:3d::1.00 0.50 -1.00       307
+DEAL:3d::1.00 0.50 -1.00       308
+DEAL:3d::0.50 0.00 -1.00       490
+DEAL:3d::0.50 0.00 -1.00       491
+DEAL:3d::0.50 0.00 -1.00       492
+DEAL:3d::0.50 1.00 -1.00       258
+DEAL:3d::0.50 1.00 -1.00       259
+DEAL:3d::0.50 1.00 -1.00       260
+DEAL:3d::0.00 0.50 0.00        193
+DEAL:3d::0.00 0.50 0.00        196
+DEAL:3d::0.00 0.50 0.00        191
+DEAL:3d::1.00 0.50 0.00        202
+DEAL:3d::1.00 0.50 0.00        203
+DEAL:3d::1.00 0.50 0.00        204
+DEAL:3d::0.50 0.00 0.00        477
+DEAL:3d::0.50 0.00 0.00        476
+DEAL:3d::0.50 0.00 0.00        475
+DEAL:3d::0.50 1.00 0.00        205
+DEAL:3d::0.50 1.00 0.00        206
+DEAL:3d::0.50 1.00 0.00        207
+DEAL:3d::0.00 0.00 -0.50       481
+DEAL:3d::0.00 0.00 -0.50       480
+DEAL:3d::0.00 0.00 -0.50       479
+DEAL:3d::1.00 0.00 -0.50       489
+DEAL:3d::1.00 0.00 -0.50       488
+DEAL:3d::1.00 0.00 -0.50       487
+DEAL:3d::0.00 1.00 -0.50       232
+DEAL:3d::0.00 1.00 -0.50       234
+DEAL:3d::0.00 1.00 -0.50       233
+DEAL:3d::1.00 1.00 -0.50       261
+DEAL:3d::1.00 1.00 -0.50       262
+DEAL:3d::1.00 1.00 -0.50       263
+DEAL:3d::0.00 0.50 -0.50       228
+DEAL:3d::0.00 0.50 -0.50       218
+DEAL:3d::0.00 0.50 -0.50       217
+DEAL:3d::1.00 0.50 -0.50       264
+DEAL:3d::1.00 0.50 -0.50       265
+DEAL:3d::1.00 0.50 -0.50       266
+DEAL:3d::0.50 0.00 -0.50       495
+DEAL:3d::0.50 0.00 -0.50       496
+DEAL:3d::0.50 0.00 -0.50       497
+DEAL:3d::0.50 1.00 -0.50       267
+DEAL:3d::0.50 1.00 -0.50       268
+DEAL:3d::0.50 1.00 -0.50       269
+DEAL:3d::0.50 0.50 -1.00       270
+DEAL:3d::0.50 0.50 -1.00       271
+DEAL:3d::0.50 0.50 -1.00       272
+DEAL:3d::0.50 0.50 0.00        227
+DEAL:3d::0.50 0.50 0.00        226
+DEAL:3d::0.50 0.50 0.00        225
+DEAL:3d::0.00 0.00 -1.00       273
+DEAL:3d::1.00 0.00 -1.00       274
+DEAL:3d::0.00 1.00 -1.00       275
+DEAL:3d::1.00 1.00 -1.00       276
+DEAL:3d::0.00 0.00 0.00        277
+DEAL:3d::1.00 0.00 0.00        278
+DEAL:3d::0.00 1.00 0.00        279
+DEAL:3d::1.00 1.00 0.00        280
+DEAL:3d::0.50 0.50 -0.50       281
+DEAL:3d::0.50 0.50 -0.50       282
+DEAL:3d::0.50 0.50 -0.50       283
+DEAL:3d::
+DEAL:3d::-1.00 -1.00 0.00      341
+DEAL:3d::-1.00 -1.00 0.00      342
+DEAL:3d::-1.00 -1.00 0.00      343
+DEAL:3d::0.00 -1.00 0.00       612
+DEAL:3d::0.00 -1.00 0.00       613
+DEAL:3d::0.00 -1.00 0.00       614
+DEAL:3d::-1.00 0.00 0.00       309
+DEAL:3d::-1.00 0.00 0.00       310
+DEAL:3d::-1.00 0.00 0.00       311
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::-1.00 -1.00 1.00      123
+DEAL:3d::-1.00 -1.00 1.00      124
+DEAL:3d::-1.00 -1.00 1.00      125
+DEAL:3d::0.00 -1.00 1.00       103
+DEAL:3d::0.00 -1.00 1.00       104
+DEAL:3d::0.00 -1.00 1.00       105
+DEAL:3d::-1.00 0.00 1.00       106
+DEAL:3d::-1.00 0.00 1.00       107
+DEAL:3d::-1.00 0.00 1.00       108
+DEAL:3d::0.00 0.00 1.00        78
+DEAL:3d::0.00 0.00 1.00        79
+DEAL:3d::0.00 0.00 1.00        80
+DEAL:3d::-1.00 -0.50 0.00      126
+DEAL:3d::-1.00 -0.50 0.00      127
+DEAL:3d::-1.00 -0.50 0.00      128
+DEAL:3d::0.00 -0.50 0.00       482
+DEAL:3d::0.00 -0.50 0.00       483
+DEAL:3d::0.00 -0.50 0.00       484
+DEAL:3d::-0.50 -1.00 0.00      129
+DEAL:3d::-0.50 -1.00 0.00      130
+DEAL:3d::-0.50 -1.00 0.00      131
+DEAL:3d::-0.50 0.00 0.00       199
+DEAL:3d::-0.50 0.00 0.00       198
+DEAL:3d::-0.50 0.00 0.00       197
+DEAL:3d::-1.00 -0.50 1.00      132
+DEAL:3d::-1.00 -0.50 1.00      133
+DEAL:3d::-1.00 -0.50 1.00      134
+DEAL:3d::0.00 -0.50 1.00       83
+DEAL:3d::0.00 -0.50 1.00       84
+DEAL:3d::0.00 -0.50 1.00       88
+DEAL:3d::-0.50 -1.00 1.00      135
+DEAL:3d::-0.50 -1.00 1.00      136
+DEAL:3d::-0.50 -1.00 1.00      137
+DEAL:3d::-0.50 0.00 1.00       90
+DEAL:3d::-0.50 0.00 1.00       91
+DEAL:3d::-0.50 0.00 1.00       95
+DEAL:3d::-1.00 -1.00 0.50      138
+DEAL:3d::-1.00 -1.00 0.50      139
+DEAL:3d::-1.00 -1.00 0.50      140
+DEAL:3d::0.00 -1.00 0.50       99
+DEAL:3d::0.00 -1.00 0.50       100
+DEAL:3d::0.00 -1.00 0.50       98
+DEAL:3d::-1.00 0.00 0.50       97
+DEAL:3d::-1.00 0.00 0.50       96
+DEAL:3d::-1.00 0.00 0.50       89
+DEAL:3d::0.00 0.00 0.50        81
+DEAL:3d::0.00 0.00 0.50        77
+DEAL:3d::0.00 0.00 0.50        76
+DEAL:3d::-1.00 -0.50 0.50      121
+DEAL:3d::-1.00 -0.50 0.50      120
+DEAL:3d::-1.00 -0.50 0.50      119
+DEAL:3d::0.00 -0.50 0.50       115
+DEAL:3d::0.00 -0.50 0.50       114
+DEAL:3d::0.00 -0.50 0.50       113
+DEAL:3d::-0.50 -1.00 0.50      118
+DEAL:3d::-0.50 -1.00 0.50      122
+DEAL:3d::-0.50 -1.00 0.50      166
+DEAL:3d::-0.50 0.00 0.50       101
+DEAL:3d::-0.50 0.00 0.50       102
+DEAL:3d::-0.50 0.00 0.50       109
+DEAL:3d::-0.50 -0.50 0.00      167
+DEAL:3d::-0.50 -0.50 0.00      168
+DEAL:3d::-0.50 -0.50 0.00      169
+DEAL:3d::-0.50 -0.50 1.00      170
+DEAL:3d::-0.50 -0.50 1.00      171
+DEAL:3d::-0.50 -0.50 1.00      172
+DEAL:3d::-1.00 -1.00 0.00      173
+DEAL:3d::0.00 -1.00 0.00       174
+DEAL:3d::-1.00 0.00 0.00       175
+DEAL:3d::0.00 0.00 0.00        176
+DEAL:3d::-1.00 -1.00 1.00      177
+DEAL:3d::0.00 -1.00 1.00       178
+DEAL:3d::-1.00 0.00 1.00       179
+DEAL:3d::0.00 0.00 1.00        180
+DEAL:3d::-0.50 -0.50 0.50      181
+DEAL:3d::-0.50 -0.50 0.50      182
+DEAL:3d::-0.50 -0.50 0.50      183
+DEAL:3d::
+DEAL:3d::0.00 -1.00 0.00       612
+DEAL:3d::0.00 -1.00 0.00       613
+DEAL:3d::0.00 -1.00 0.00       614
+DEAL:3d::1.00 -1.00 0.00       503
+DEAL:3d::1.00 -1.00 0.00       502
+DEAL:3d::1.00 -1.00 0.00       501
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::1.00 0.00 0.00        474
+DEAL:3d::1.00 0.00 0.00        473
+DEAL:3d::1.00 0.00 0.00        478
+DEAL:3d::0.00 -1.00 1.00       103
+DEAL:3d::0.00 -1.00 1.00       104
+DEAL:3d::0.00 -1.00 1.00       105
+DEAL:3d::1.00 -1.00 1.00       184
+DEAL:3d::1.00 -1.00 1.00       185
+DEAL:3d::1.00 -1.00 1.00       186
+DEAL:3d::0.00 0.00 1.00        78
+DEAL:3d::0.00 0.00 1.00        79
+DEAL:3d::0.00 0.00 1.00        80
+DEAL:3d::1.00 0.00 1.00        94
+DEAL:3d::1.00 0.00 1.00        93
+DEAL:3d::1.00 0.00 1.00        92
+DEAL:3d::0.00 -0.50 0.00       482
+DEAL:3d::0.00 -0.50 0.00       483
+DEAL:3d::0.00 -0.50 0.00       484
+DEAL:3d::1.00 -0.50 0.00       508
+DEAL:3d::1.00 -0.50 0.00       507
+DEAL:3d::1.00 -0.50 0.00       494
+DEAL:3d::0.50 -1.00 0.00       493
+DEAL:3d::0.50 -1.00 0.00       486
+DEAL:3d::0.50 -1.00 0.00       485
+DEAL:3d::0.50 0.00 0.00        477
+DEAL:3d::0.50 0.00 0.00        476
+DEAL:3d::0.50 0.00 0.00        475
+DEAL:3d::0.00 -0.50 1.00       83
+DEAL:3d::0.00 -0.50 1.00       84
+DEAL:3d::0.00 -0.50 1.00       88
+DEAL:3d::1.00 -0.50 1.00       187
+DEAL:3d::1.00 -0.50 1.00       188
+DEAL:3d::1.00 -0.50 1.00       189
+DEAL:3d::0.50 -1.00 1.00       190
+DEAL:3d::0.50 -1.00 1.00       141
+DEAL:3d::0.50 -1.00 1.00       142
+DEAL:3d::0.50 0.00 1.00        87
+DEAL:3d::0.50 0.00 1.00        86
+DEAL:3d::0.50 0.00 1.00        85
+DEAL:3d::0.00 -1.00 0.50       99
+DEAL:3d::0.00 -1.00 0.50       100
+DEAL:3d::0.00 -1.00 0.50       98
+DEAL:3d::1.00 -1.00 0.50       143
+DEAL:3d::1.00 -1.00 0.50       144
+DEAL:3d::1.00 -1.00 0.50       145
+DEAL:3d::0.00 0.00 0.50        81
+DEAL:3d::0.00 0.00 0.50        77
+DEAL:3d::0.00 0.00 0.50        76
+DEAL:3d::1.00 0.00 0.50        82
+DEAL:3d::1.00 0.00 0.50        117
+DEAL:3d::1.00 0.00 0.50        116
+DEAL:3d::0.00 -0.50 0.50       115
+DEAL:3d::0.00 -0.50 0.50       114
+DEAL:3d::0.00 -0.50 0.50       113
+DEAL:3d::1.00 -0.50 0.50       146
+DEAL:3d::1.00 -0.50 0.50       147
+DEAL:3d::1.00 -0.50 0.50       148
+DEAL:3d::0.50 -1.00 0.50       149
+DEAL:3d::0.50 -1.00 0.50       150
+DEAL:3d::0.50 -1.00 0.50       151
+DEAL:3d::0.50 0.00 0.50        112
+DEAL:3d::0.50 0.00 0.50        111
+DEAL:3d::0.50 0.00 0.50        110
+DEAL:3d::0.50 -0.50 0.00       498
+DEAL:3d::0.50 -0.50 0.00       499
+DEAL:3d::0.50 -0.50 0.00       500
+DEAL:3d::0.50 -0.50 1.00       152
+DEAL:3d::0.50 -0.50 1.00       153
+DEAL:3d::0.50 -0.50 1.00       154
+DEAL:3d::0.00 -1.00 0.00       155
+DEAL:3d::1.00 -1.00 0.00       156
+DEAL:3d::0.00 0.00 0.00        157
+DEAL:3d::1.00 0.00 0.00        158
+DEAL:3d::0.00 -1.00 1.00       159
+DEAL:3d::1.00 -1.00 1.00       160
+DEAL:3d::0.00 0.00 1.00        161
+DEAL:3d::1.00 0.00 1.00        162
+DEAL:3d::0.50 -0.50 0.50       163
+DEAL:3d::0.50 -0.50 0.50       164
+DEAL:3d::0.50 -0.50 0.50       165
+DEAL:3d::
+DEAL:3d::-1.00 0.00 0.00       309
+DEAL:3d::-1.00 0.00 0.00       310
+DEAL:3d::-1.00 0.00 0.00       311
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::-1.00 1.00 0.00       222
+DEAL:3d::-1.00 1.00 0.00       223
+DEAL:3d::-1.00 1.00 0.00       224
+DEAL:3d::0.00 1.00 0.00        194
+DEAL:3d::0.00 1.00 0.00        195
+DEAL:3d::0.00 1.00 0.00        192
+DEAL:3d::-1.00 0.00 1.00       106
+DEAL:3d::-1.00 0.00 1.00       107
+DEAL:3d::-1.00 0.00 1.00       108
+DEAL:3d::0.00 0.00 1.00        78
+DEAL:3d::0.00 0.00 1.00        79
+DEAL:3d::0.00 0.00 1.00        80
+DEAL:3d::-1.00 1.00 1.00       0
+DEAL:3d::-1.00 1.00 1.00       1
+DEAL:3d::-1.00 1.00 1.00       2
+DEAL:3d::0.00 1.00 1.00        43
+DEAL:3d::0.00 1.00 1.00        42
+DEAL:3d::0.00 1.00 1.00        41
+DEAL:3d::-1.00 0.50 0.00       200
+DEAL:3d::-1.00 0.50 0.00       209
+DEAL:3d::-1.00 0.50 0.00       210
+DEAL:3d::0.00 0.50 0.00        193
+DEAL:3d::0.00 0.50 0.00        196
+DEAL:3d::0.00 0.50 0.00        191
+DEAL:3d::-0.50 0.00 0.00       199
+DEAL:3d::-0.50 0.00 0.00       198
+DEAL:3d::-0.50 0.00 0.00       197
+DEAL:3d::-0.50 1.00 0.00       214
+DEAL:3d::-0.50 1.00 0.00       215
+DEAL:3d::-0.50 1.00 0.00       216
+DEAL:3d::-1.00 0.50 1.00       3
+DEAL:3d::-1.00 0.50 1.00       4
+DEAL:3d::-1.00 0.50 1.00       5
+DEAL:3d::0.00 0.50 1.00        40
+DEAL:3d::0.00 0.50 1.00        39
+DEAL:3d::0.00 0.50 1.00        38
+DEAL:3d::-0.50 0.00 1.00       90
+DEAL:3d::-0.50 0.00 1.00       91
+DEAL:3d::-0.50 0.00 1.00       95
+DEAL:3d::-0.50 1.00 1.00       6
+DEAL:3d::-0.50 1.00 1.00       7
+DEAL:3d::-0.50 1.00 1.00       8
+DEAL:3d::-1.00 0.00 0.50       97
+DEAL:3d::-1.00 0.00 0.50       96
+DEAL:3d::-1.00 0.00 0.50       89
+DEAL:3d::0.00 0.00 0.50        81
+DEAL:3d::0.00 0.00 0.50        77
+DEAL:3d::0.00 0.00 0.50        76
+DEAL:3d::-1.00 1.00 0.50       9
+DEAL:3d::-1.00 1.00 0.50       10
+DEAL:3d::-1.00 1.00 0.50       11
+DEAL:3d::0.00 1.00 0.50        37
+DEAL:3d::0.00 1.00 0.50        36
+DEAL:3d::0.00 1.00 0.50        35
+DEAL:3d::-1.00 0.50 0.50       12
+DEAL:3d::-1.00 0.50 0.50       13
+DEAL:3d::-1.00 0.50 0.50       14
+DEAL:3d::0.00 0.50 0.50        34
+DEAL:3d::0.00 0.50 0.50        33
+DEAL:3d::0.00 0.50 0.50        32
+DEAL:3d::-0.50 0.00 0.50       101
+DEAL:3d::-0.50 0.00 0.50       102
+DEAL:3d::-0.50 0.00 0.50       109
+DEAL:3d::-0.50 1.00 0.50       15
+DEAL:3d::-0.50 1.00 0.50       16
+DEAL:3d::-0.50 1.00 0.50       17
+DEAL:3d::-0.50 0.50 0.00       235
+DEAL:3d::-0.50 0.50 0.00       208
+DEAL:3d::-0.50 0.50 0.00       201
+DEAL:3d::-0.50 0.50 1.00       18
+DEAL:3d::-0.50 0.50 1.00       19
+DEAL:3d::-0.50 0.50 1.00       20
+DEAL:3d::-1.00 0.00 0.00       21
+DEAL:3d::0.00 0.00 0.00        22
+DEAL:3d::-1.00 1.00 0.00       23
+DEAL:3d::0.00 1.00 0.00        24
+DEAL:3d::-1.00 0.00 1.00       25
+DEAL:3d::0.00 0.00 1.00        26
+DEAL:3d::-1.00 1.00 1.00       27
+DEAL:3d::0.00 1.00 1.00        28
+DEAL:3d::-0.50 0.50 0.50       29
+DEAL:3d::-0.50 0.50 0.50       30
+DEAL:3d::-0.50 0.50 0.50       31
+DEAL:3d::
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::1.00 0.00 0.00        474
+DEAL:3d::1.00 0.00 0.00        473
+DEAL:3d::1.00 0.00 0.00        478
+DEAL:3d::0.00 1.00 0.00        194
+DEAL:3d::0.00 1.00 0.00        195
+DEAL:3d::0.00 1.00 0.00        192
+DEAL:3d::1.00 1.00 0.00        213
+DEAL:3d::1.00 1.00 0.00        212
+DEAL:3d::1.00 1.00 0.00        211
+DEAL:3d::0.00 0.00 1.00        78
+DEAL:3d::0.00 0.00 1.00        79
+DEAL:3d::0.00 0.00 1.00        80
+DEAL:3d::1.00 0.00 1.00        94
+DEAL:3d::1.00 0.00 1.00        93
+DEAL:3d::1.00 0.00 1.00        92
+DEAL:3d::0.00 1.00 1.00        43
+DEAL:3d::0.00 1.00 1.00        42
+DEAL:3d::0.00 1.00 1.00        41
+DEAL:3d::1.00 1.00 1.00        44
+DEAL:3d::1.00 1.00 1.00        45
+DEAL:3d::1.00 1.00 1.00        46
+DEAL:3d::0.00 0.50 0.00        193
+DEAL:3d::0.00 0.50 0.00        196
+DEAL:3d::0.00 0.50 0.00        191
+DEAL:3d::1.00 0.50 0.00        202
+DEAL:3d::1.00 0.50 0.00        203
+DEAL:3d::1.00 0.50 0.00        204
+DEAL:3d::0.50 0.00 0.00        477
+DEAL:3d::0.50 0.00 0.00        476
+DEAL:3d::0.50 0.00 0.00        475
+DEAL:3d::0.50 1.00 0.00        205
+DEAL:3d::0.50 1.00 0.00        206
+DEAL:3d::0.50 1.00 0.00        207
+DEAL:3d::0.00 0.50 1.00        40
+DEAL:3d::0.00 0.50 1.00        39
+DEAL:3d::0.00 0.50 1.00        38
+DEAL:3d::1.00 0.50 1.00        47
+DEAL:3d::1.00 0.50 1.00        48
+DEAL:3d::1.00 0.50 1.00        49
+DEAL:3d::0.50 0.00 1.00        87
+DEAL:3d::0.50 0.00 1.00        86
+DEAL:3d::0.50 0.00 1.00        85
+DEAL:3d::0.50 1.00 1.00        50
+DEAL:3d::0.50 1.00 1.00        51
+DEAL:3d::0.50 1.00 1.00        52
+DEAL:3d::0.00 0.00 0.50        81
+DEAL:3d::0.00 0.00 0.50        77
+DEAL:3d::0.00 0.00 0.50        76
+DEAL:3d::1.00 0.00 0.50        82
+DEAL:3d::1.00 0.00 0.50        117
+DEAL:3d::1.00 0.00 0.50        116
+DEAL:3d::0.00 1.00 0.50        37
+DEAL:3d::0.00 1.00 0.50        36
+DEAL:3d::0.00 1.00 0.50        35
+DEAL:3d::1.00 1.00 0.50        53
+DEAL:3d::1.00 1.00 0.50        75
+DEAL:3d::1.00 1.00 0.50        74
+DEAL:3d::0.00 0.50 0.50        34
+DEAL:3d::0.00 0.50 0.50        33
+DEAL:3d::0.00 0.50 0.50        32
+DEAL:3d::1.00 0.50 0.50        73
+DEAL:3d::1.00 0.50 0.50        72
+DEAL:3d::1.00 0.50 0.50        71
+DEAL:3d::0.50 0.00 0.50        112
+DEAL:3d::0.50 0.00 0.50        111
+DEAL:3d::0.50 0.00 0.50        110
+DEAL:3d::0.50 1.00 0.50        70
+DEAL:3d::0.50 1.00 0.50        69
+DEAL:3d::0.50 1.00 0.50        68
+DEAL:3d::0.50 0.50 0.00        227
+DEAL:3d::0.50 0.50 0.00        226
+DEAL:3d::0.50 0.50 0.00        225
+DEAL:3d::0.50 0.50 1.00        67
+DEAL:3d::0.50 0.50 1.00        66
+DEAL:3d::0.50 0.50 1.00        65
+DEAL:3d::0.00 0.00 0.00        64
+DEAL:3d::1.00 0.00 0.00        63
+DEAL:3d::0.00 1.00 0.00        62
+DEAL:3d::1.00 1.00 0.00        61
+DEAL:3d::0.00 0.00 1.00        60
+DEAL:3d::1.00 0.00 1.00        59
+DEAL:3d::0.00 1.00 1.00        58
+DEAL:3d::1.00 1.00 1.00        57
+DEAL:3d::0.50 0.50 0.50        56
+DEAL:3d::0.50 0.50 0.50        55
+DEAL:3d::0.50 0.50 0.50        54
+DEAL:3d::
+DEAL:3d::-1.00 -1.00 -1.00     588
+DEAL:3d::-1.00 -1.00 -1.00     587
+DEAL:3d::-1.00 -1.00 -1.00     586
+DEAL:3d::-0.50 -1.00 -1.00     778
+DEAL:3d::-0.50 -1.00 -1.00     777
+DEAL:3d::-0.50 -1.00 -1.00     776
+DEAL:3d::-1.00 -0.50 -1.00     569
+DEAL:3d::-1.00 -0.50 -1.00     570
+DEAL:3d::-1.00 -0.50 -1.00     571
+DEAL:3d::-0.50 -0.50 -1.00     750
+DEAL:3d::-0.50 -0.50 -1.00     749
+DEAL:3d::-0.50 -0.50 -1.00     748
+DEAL:3d::-1.00 -1.00 -0.50     572
+DEAL:3d::-1.00 -1.00 -0.50     573
+DEAL:3d::-1.00 -1.00 -0.50     574
+DEAL:3d::-0.50 -1.00 -0.50     747
+DEAL:3d::-0.50 -1.00 -0.50     746
+DEAL:3d::-0.50 -1.00 -0.50     745
+DEAL:3d::-1.00 -0.50 -0.50     554
+DEAL:3d::-1.00 -0.50 -0.50     555
+DEAL:3d::-1.00 -0.50 -0.50     553
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::-1.00 -0.75 -1.00     580
+DEAL:3d::-1.00 -0.75 -1.00     581
+DEAL:3d::-1.00 -0.75 -1.00     585
+DEAL:3d::-0.50 -0.75 -1.00     775
+DEAL:3d::-0.50 -0.75 -1.00     774
+DEAL:3d::-0.50 -0.75 -1.00     773
+DEAL:3d::-0.75 -1.00 -1.00     584
+DEAL:3d::-0.75 -1.00 -1.00     583
+DEAL:3d::-0.75 -1.00 -1.00     582
+DEAL:3d::-0.75 -0.50 -1.00     557
+DEAL:3d::-0.75 -0.50 -1.00     558
+DEAL:3d::-0.75 -0.50 -1.00     562
+DEAL:3d::-1.00 -0.75 -0.50     563
+DEAL:3d::-1.00 -0.75 -0.50     564
+DEAL:3d::-1.00 -0.75 -0.50     568
+DEAL:3d::-0.50 -0.75 -0.50     741
+DEAL:3d::-0.50 -0.75 -0.50     740
+DEAL:3d::-0.50 -0.75 -0.50     739
+DEAL:3d::-0.75 -1.00 -0.50     567
+DEAL:3d::-0.75 -1.00 -0.50     566
+DEAL:3d::-0.75 -1.00 -0.50     565
+DEAL:3d::-0.75 -0.50 -0.50     550
+DEAL:3d::-0.75 -0.50 -0.50     551
+DEAL:3d::-0.75 -0.50 -0.50     552
+DEAL:3d::-1.00 -1.00 -0.75     611
+DEAL:3d::-1.00 -1.00 -0.75     610
+DEAL:3d::-1.00 -1.00 -0.75     609
+DEAL:3d::-0.50 -1.00 -0.75     772
+DEAL:3d::-0.50 -1.00 -0.75     771
+DEAL:3d::-0.50 -1.00 -0.75     770
+DEAL:3d::-1.00 -0.50 -0.75     561
+DEAL:3d::-1.00 -0.50 -0.75     560
+DEAL:3d::-1.00 -0.50 -0.75     559
+DEAL:3d::-0.50 -0.50 -0.75     743
+DEAL:3d::-0.50 -0.50 -0.75     753
+DEAL:3d::-0.50 -0.50 -0.75     754
+DEAL:3d::-1.00 -0.75 -0.75     608
+DEAL:3d::-1.00 -0.75 -0.75     607
+DEAL:3d::-1.00 -0.75 -0.75     606
+DEAL:3d::-0.50 -0.75 -0.75     769
+DEAL:3d::-0.50 -0.75 -0.75     768
+DEAL:3d::-0.50 -0.75 -0.75     767
+DEAL:3d::-0.75 -1.00 -0.75     605
+DEAL:3d::-0.75 -1.00 -0.75     604
+DEAL:3d::-0.75 -1.00 -0.75     603
+DEAL:3d::-0.75 -0.50 -0.75     556
+DEAL:3d::-0.75 -0.50 -0.75     579
+DEAL:3d::-0.75 -0.50 -0.75     578
+DEAL:3d::-0.75 -0.75 -1.00     602
+DEAL:3d::-0.75 -0.75 -1.00     601
+DEAL:3d::-0.75 -0.75 -1.00     600
+DEAL:3d::-0.75 -0.75 -0.50     577
+DEAL:3d::-0.75 -0.75 -0.50     576
+DEAL:3d::-0.75 -0.75 -0.50     575
+DEAL:3d::-1.00 -1.00 -1.00     599
+DEAL:3d::-0.50 -1.00 -1.00     598
+DEAL:3d::-1.00 -0.50 -1.00     597
+DEAL:3d::-0.50 -0.50 -1.00     596
+DEAL:3d::-1.00 -1.00 -0.50     595
+DEAL:3d::-0.50 -1.00 -0.50     594
+DEAL:3d::-1.00 -0.50 -0.50     593
+DEAL:3d::-0.50 -0.50 -0.50     592
+DEAL:3d::-0.75 -0.75 -0.75     591
+DEAL:3d::-0.75 -0.75 -0.75     590
+DEAL:3d::-0.75 -0.75 -0.75     589
+DEAL:3d::
+DEAL:3d::-0.50 -1.00 -1.00     778
+DEAL:3d::-0.50 -1.00 -1.00     777
+DEAL:3d::-0.50 -1.00 -1.00     776
+DEAL:3d::0.00 -1.00 -1.00      759
+DEAL:3d::0.00 -1.00 -1.00      758
+DEAL:3d::0.00 -1.00 -1.00      757
+DEAL:3d::-0.50 -0.50 -1.00     750
+DEAL:3d::-0.50 -0.50 -1.00     749
+DEAL:3d::-0.50 -0.50 -1.00     748
+DEAL:3d::0.00 -0.50 -1.00      766
+DEAL:3d::0.00 -0.50 -1.00      765
+DEAL:3d::0.00 -0.50 -1.00      761
+DEAL:3d::-0.50 -1.00 -0.50     747
+DEAL:3d::-0.50 -1.00 -0.50     746
+DEAL:3d::-0.50 -1.00 -0.50     745
+DEAL:3d::0.00 -1.00 -0.50      760
+DEAL:3d::0.00 -1.00 -0.50      762
+DEAL:3d::0.00 -1.00 -0.50      763
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::0.00 -0.50 -0.50      744
+DEAL:3d::0.00 -0.50 -0.50      751
+DEAL:3d::0.00 -0.50 -0.50      752
+DEAL:3d::-0.50 -0.75 -1.00     775
+DEAL:3d::-0.50 -0.75 -1.00     774
+DEAL:3d::-0.50 -0.75 -1.00     773
+DEAL:3d::0.00 -0.75 -1.00      824
+DEAL:3d::0.00 -0.75 -1.00      819
+DEAL:3d::0.00 -0.75 -1.00      820
+DEAL:3d::-0.25 -1.00 -1.00     821
+DEAL:3d::-0.25 -1.00 -1.00     822
+DEAL:3d::-0.25 -1.00 -1.00     823
+DEAL:3d::-0.25 -0.50 -1.00     764
+DEAL:3d::-0.25 -0.50 -1.00     795
+DEAL:3d::-0.25 -0.50 -1.00     791
+DEAL:3d::-0.50 -0.75 -0.50     741
+DEAL:3d::-0.50 -0.75 -0.50     740
+DEAL:3d::-0.50 -0.75 -0.50     739
+DEAL:3d::0.00 -0.75 -0.50      790
+DEAL:3d::0.00 -0.75 -0.50      789
+DEAL:3d::0.00 -0.75 -0.50      788
+DEAL:3d::-0.25 -1.00 -0.50     787
+DEAL:3d::-0.25 -1.00 -0.50     786
+DEAL:3d::-0.25 -1.00 -0.50     785
+DEAL:3d::-0.25 -0.50 -0.50     742
+DEAL:3d::-0.25 -0.50 -0.50     755
+DEAL:3d::-0.25 -0.50 -0.50     756
+DEAL:3d::-0.50 -1.00 -0.75     772
+DEAL:3d::-0.50 -1.00 -0.75     771
+DEAL:3d::-0.50 -1.00 -0.75     770
+DEAL:3d::0.00 -1.00 -0.75      818
+DEAL:3d::0.00 -1.00 -0.75      817
+DEAL:3d::0.00 -1.00 -0.75      816
+DEAL:3d::-0.50 -0.50 -0.75     743
+DEAL:3d::-0.50 -0.50 -0.75     753
+DEAL:3d::-0.50 -0.50 -0.75     754
+DEAL:3d::0.00 -0.50 -0.75      781
+DEAL:3d::0.00 -0.50 -0.75      780
+DEAL:3d::0.00 -0.50 -0.75      779
+DEAL:3d::-0.50 -0.75 -0.75     769
+DEAL:3d::-0.50 -0.75 -0.75     768
+DEAL:3d::-0.50 -0.75 -0.75     767
+DEAL:3d::0.00 -0.75 -0.75      815
+DEAL:3d::0.00 -0.75 -0.75      814
+DEAL:3d::0.00 -0.75 -0.75      813
+DEAL:3d::-0.25 -1.00 -0.75     812
+DEAL:3d::-0.25 -1.00 -0.75     811
+DEAL:3d::-0.25 -1.00 -0.75     810
+DEAL:3d::-0.25 -0.50 -0.75     792
+DEAL:3d::-0.25 -0.50 -0.75     793
+DEAL:3d::-0.25 -0.50 -0.75     794
+DEAL:3d::-0.25 -0.75 -1.00     809
+DEAL:3d::-0.25 -0.75 -1.00     797
+DEAL:3d::-0.25 -0.75 -1.00     796
+DEAL:3d::-0.25 -0.75 -0.50     784
+DEAL:3d::-0.25 -0.75 -0.50     783
+DEAL:3d::-0.25 -0.75 -0.50     782
+DEAL:3d::-0.50 -1.00 -1.00     798
+DEAL:3d::0.00 -1.00 -1.00      799
+DEAL:3d::-0.50 -0.50 -1.00     800
+DEAL:3d::0.00 -0.50 -1.00      801
+DEAL:3d::-0.50 -1.00 -0.50     802
+DEAL:3d::0.00 -1.00 -0.50      803
+DEAL:3d::-0.50 -0.50 -0.50     804
+DEAL:3d::0.00 -0.50 -0.50      805
+DEAL:3d::-0.25 -0.75 -0.75     806
+DEAL:3d::-0.25 -0.75 -0.75     807
+DEAL:3d::-0.25 -0.75 -0.75     808
+DEAL:3d::
+DEAL:3d::-1.00 -0.50 -1.00     569
+DEAL:3d::-1.00 -0.50 -1.00     570
+DEAL:3d::-1.00 -0.50 -1.00     571
+DEAL:3d::-0.50 -0.50 -1.00     750
+DEAL:3d::-0.50 -0.50 -1.00     749
+DEAL:3d::-0.50 -0.50 -1.00     748
+DEAL:3d::-1.00 0.00 -1.00      385
+DEAL:3d::-1.00 0.00 -1.00      386
+DEAL:3d::-1.00 0.00 -1.00      387
+DEAL:3d::-0.50 0.00 -1.00      696
+DEAL:3d::-0.50 0.00 -1.00      697
+DEAL:3d::-0.50 0.00 -1.00      698
+DEAL:3d::-1.00 -0.50 -0.50     554
+DEAL:3d::-1.00 -0.50 -0.50     555
+DEAL:3d::-1.00 -0.50 -0.50     553
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::-1.00 0.00 -0.50      399
+DEAL:3d::-1.00 0.00 -0.50      398
+DEAL:3d::-1.00 0.00 -0.50      397
+DEAL:3d::-0.50 0.00 -0.50      682
+DEAL:3d::-0.50 0.00 -0.50      681
+DEAL:3d::-0.50 0.00 -0.50      680
+DEAL:3d::-1.00 -0.25 -1.00     405
+DEAL:3d::-1.00 -0.25 -1.00     404
+DEAL:3d::-1.00 -0.25 -1.00     403
+DEAL:3d::-0.50 -0.25 -1.00     701
+DEAL:3d::-0.50 -0.25 -1.00     700
+DEAL:3d::-0.50 -0.25 -1.00     699
+DEAL:3d::-0.75 -0.50 -1.00     557
+DEAL:3d::-0.75 -0.50 -1.00     558
+DEAL:3d::-0.75 -0.50 -1.00     562
+DEAL:3d::-0.75 0.00 -1.00      401
+DEAL:3d::-0.75 0.00 -1.00      400
+DEAL:3d::-0.75 0.00 -1.00      402
+DEAL:3d::-1.00 -0.25 -0.50     393
+DEAL:3d::-1.00 -0.25 -0.50     392
+DEAL:3d::-1.00 -0.25 -0.50     391
+DEAL:3d::-0.50 -0.25 -0.50     679
+DEAL:3d::-0.50 -0.25 -0.50     678
+DEAL:3d::-0.50 -0.25 -0.50     677
+DEAL:3d::-0.75 -0.50 -0.50     550
+DEAL:3d::-0.75 -0.50 -0.50     551
+DEAL:3d::-0.75 -0.50 -0.50     552
+DEAL:3d::-0.75 0.00 -0.50      390
+DEAL:3d::-0.75 0.00 -0.50      389
+DEAL:3d::-0.75 0.00 -0.50      388
+DEAL:3d::-1.00 -0.50 -0.75     561
+DEAL:3d::-1.00 -0.50 -0.75     560
+DEAL:3d::-1.00 -0.50 -0.75     559
+DEAL:3d::-0.50 -0.50 -0.75     743
+DEAL:3d::-0.50 -0.50 -0.75     753
+DEAL:3d::-0.50 -0.50 -0.75     754
+DEAL:3d::-1.00 0.00 -0.75      406
+DEAL:3d::-1.00 0.00 -0.75      407
+DEAL:3d::-1.00 0.00 -0.75      408
+DEAL:3d::-0.50 0.00 -0.75      695
+DEAL:3d::-0.50 0.00 -0.75      694
+DEAL:3d::-0.50 0.00 -0.75      693
+DEAL:3d::-1.00 -0.25 -0.75     428
+DEAL:3d::-1.00 -0.25 -0.75     427
+DEAL:3d::-1.00 -0.25 -0.75     426
+DEAL:3d::-0.50 -0.25 -0.75     692
+DEAL:3d::-0.50 -0.25 -0.75     691
+DEAL:3d::-0.50 -0.25 -0.75     690
+DEAL:3d::-0.75 -0.50 -0.75     556
+DEAL:3d::-0.75 -0.50 -0.75     579
+DEAL:3d::-0.75 -0.50 -0.75     578
+DEAL:3d::-0.75 0.00 -0.75      425
+DEAL:3d::-0.75 0.00 -0.75      424
+DEAL:3d::-0.75 0.00 -0.75      423
+DEAL:3d::-0.75 -0.25 -1.00     422
+DEAL:3d::-0.75 -0.25 -1.00     421
+DEAL:3d::-0.75 -0.25 -1.00     420
+DEAL:3d::-0.75 -0.25 -0.50     394
+DEAL:3d::-0.75 -0.25 -0.50     395
+DEAL:3d::-0.75 -0.25 -0.50     396
+DEAL:3d::-1.00 -0.50 -1.00     419
+DEAL:3d::-0.50 -0.50 -1.00     418
+DEAL:3d::-1.00 0.00 -1.00      417
+DEAL:3d::-0.50 0.00 -1.00      416
+DEAL:3d::-1.00 -0.50 -0.50     415
+DEAL:3d::-0.50 -0.50 -0.50     414
+DEAL:3d::-1.00 0.00 -0.50      413
+DEAL:3d::-0.50 0.00 -0.50      412
+DEAL:3d::-0.75 -0.25 -0.75     411
+DEAL:3d::-0.75 -0.25 -0.75     410
+DEAL:3d::-0.75 -0.25 -0.75     409
+DEAL:3d::
+DEAL:3d::-0.50 -0.50 -1.00     750
+DEAL:3d::-0.50 -0.50 -1.00     749
+DEAL:3d::-0.50 -0.50 -1.00     748
+DEAL:3d::0.00 -0.50 -1.00      766
+DEAL:3d::0.00 -0.50 -1.00      765
+DEAL:3d::0.00 -0.50 -1.00      761
+DEAL:3d::-0.50 0.00 -1.00      696
+DEAL:3d::-0.50 0.00 -1.00      697
+DEAL:3d::-0.50 0.00 -1.00      698
+DEAL:3d::0.00 0.00 -1.00       674
+DEAL:3d::0.00 0.00 -1.00       675
+DEAL:3d::0.00 0.00 -1.00       676
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::0.00 -0.50 -0.50      744
+DEAL:3d::0.00 -0.50 -0.50      751
+DEAL:3d::0.00 -0.50 -0.50      752
+DEAL:3d::-0.50 0.00 -0.50      682
+DEAL:3d::-0.50 0.00 -0.50      681
+DEAL:3d::-0.50 0.00 -0.50      680
+DEAL:3d::0.00 0.00 -0.50       689
+DEAL:3d::0.00 0.00 -0.50       688
+DEAL:3d::0.00 0.00 -0.50       687
+DEAL:3d::-0.50 -0.25 -1.00     701
+DEAL:3d::-0.50 -0.25 -1.00     700
+DEAL:3d::-0.50 -0.25 -1.00     699
+DEAL:3d::0.00 -0.25 -1.00      728
+DEAL:3d::0.00 -0.25 -1.00      729
+DEAL:3d::0.00 -0.25 -1.00      730
+DEAL:3d::-0.25 -0.50 -1.00     764
+DEAL:3d::-0.25 -0.50 -1.00     795
+DEAL:3d::-0.25 -0.50 -1.00     791
+DEAL:3d::-0.25 0.00 -1.00      731
+DEAL:3d::-0.25 0.00 -1.00      732
+DEAL:3d::-0.25 0.00 -1.00      733
+DEAL:3d::-0.50 -0.25 -0.50     679
+DEAL:3d::-0.50 -0.25 -0.50     678
+DEAL:3d::-0.50 -0.25 -0.50     677
+DEAL:3d::0.00 -0.25 -0.50      686
+DEAL:3d::0.00 -0.25 -0.50      685
+DEAL:3d::0.00 -0.25 -0.50      684
+DEAL:3d::-0.25 -0.50 -0.50     742
+DEAL:3d::-0.25 -0.50 -0.50     755
+DEAL:3d::-0.25 -0.50 -0.50     756
+DEAL:3d::-0.25 0.00 -0.50      683
+DEAL:3d::-0.25 0.00 -0.50      702
+DEAL:3d::-0.25 0.00 -0.50      703
+DEAL:3d::-0.50 -0.50 -0.75     743
+DEAL:3d::-0.50 -0.50 -0.75     753
+DEAL:3d::-0.50 -0.50 -0.75     754
+DEAL:3d::0.00 -0.50 -0.75      781
+DEAL:3d::0.00 -0.50 -0.75      780
+DEAL:3d::0.00 -0.50 -0.75      779
+DEAL:3d::-0.50 0.00 -0.75      695
+DEAL:3d::-0.50 0.00 -0.75      694
+DEAL:3d::-0.50 0.00 -0.75      693
+DEAL:3d::0.00 0.00 -0.75       735
+DEAL:3d::0.00 0.00 -0.75       734
+DEAL:3d::0.00 0.00 -0.75       727
+DEAL:3d::-0.50 -0.25 -0.75     692
+DEAL:3d::-0.50 -0.25 -0.75     691
+DEAL:3d::-0.50 -0.25 -0.75     690
+DEAL:3d::0.00 -0.25 -0.75      726
+DEAL:3d::0.00 -0.25 -0.75      725
+DEAL:3d::0.00 -0.25 -0.75      724
+DEAL:3d::-0.25 -0.50 -0.75     792
+DEAL:3d::-0.25 -0.50 -0.75     793
+DEAL:3d::-0.25 -0.50 -0.75     794
+DEAL:3d::-0.25 0.00 -0.75      723
+DEAL:3d::-0.25 0.00 -0.75      722
+DEAL:3d::-0.25 0.00 -0.75      721
+DEAL:3d::-0.25 -0.25 -1.00     720
+DEAL:3d::-0.25 -0.25 -1.00     707
+DEAL:3d::-0.25 -0.25 -1.00     708
+DEAL:3d::-0.25 -0.25 -0.50     704
+DEAL:3d::-0.25 -0.25 -0.50     705
+DEAL:3d::-0.25 -0.25 -0.50     706
+DEAL:3d::-0.50 -0.50 -1.00     709
+DEAL:3d::0.00 -0.50 -1.00      710
+DEAL:3d::-0.50 0.00 -1.00      711
+DEAL:3d::0.00 0.00 -1.00       712
+DEAL:3d::-0.50 -0.50 -0.50     713
+DEAL:3d::0.00 -0.50 -0.50      714
+DEAL:3d::-0.50 0.00 -0.50      715
+DEAL:3d::0.00 0.00 -0.50       716
+DEAL:3d::-0.25 -0.25 -0.75     717
+DEAL:3d::-0.25 -0.25 -0.75     718
+DEAL:3d::-0.25 -0.25 -0.75     719
+DEAL:3d::
+DEAL:3d::-1.00 -1.00 -0.50     572
+DEAL:3d::-1.00 -1.00 -0.50     573
+DEAL:3d::-1.00 -1.00 -0.50     574
+DEAL:3d::-0.50 -1.00 -0.50     747
+DEAL:3d::-0.50 -1.00 -0.50     746
+DEAL:3d::-0.50 -1.00 -0.50     745
+DEAL:3d::-1.00 -0.50 -0.50     554
+DEAL:3d::-1.00 -0.50 -0.50     555
+DEAL:3d::-1.00 -0.50 -0.50     553
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::-1.00 -1.00 0.00      341
+DEAL:3d::-1.00 -1.00 0.00      342
+DEAL:3d::-1.00 -1.00 0.00      343
+DEAL:3d::-0.50 -1.00 0.00      638
+DEAL:3d::-0.50 -1.00 0.00      637
+DEAL:3d::-0.50 -1.00 0.00      636
+DEAL:3d::-1.00 -0.50 0.00      355
+DEAL:3d::-1.00 -0.50 0.00      354
+DEAL:3d::-1.00 -0.50 0.00      353
+DEAL:3d::-0.50 -0.50 0.00      620
+DEAL:3d::-0.50 -0.50 0.00      619
+DEAL:3d::-0.50 -0.50 0.00      618
+DEAL:3d::-1.00 -0.75 -0.50     563
+DEAL:3d::-1.00 -0.75 -0.50     564
+DEAL:3d::-1.00 -0.75 -0.50     568
+DEAL:3d::-0.50 -0.75 -0.50     741
+DEAL:3d::-0.50 -0.75 -0.50     740
+DEAL:3d::-0.50 -0.75 -0.50     739
+DEAL:3d::-0.75 -1.00 -0.50     567
+DEAL:3d::-0.75 -1.00 -0.50     566
+DEAL:3d::-0.75 -1.00 -0.50     565
+DEAL:3d::-0.75 -0.50 -0.50     550
+DEAL:3d::-0.75 -0.50 -0.50     551
+DEAL:3d::-0.75 -0.50 -0.50     552
+DEAL:3d::-1.00 -0.75 0.00      361
+DEAL:3d::-1.00 -0.75 0.00      360
+DEAL:3d::-1.00 -0.75 0.00      359
+DEAL:3d::-0.50 -0.75 0.00      635
+DEAL:3d::-0.50 -0.75 0.00      634
+DEAL:3d::-0.50 -0.75 0.00      633
+DEAL:3d::-0.75 -1.00 0.00      358
+DEAL:3d::-0.75 -1.00 0.00      357
+DEAL:3d::-0.75 -1.00 0.00      356
+DEAL:3d::-0.75 -0.50 0.00      352
+DEAL:3d::-0.75 -0.50 0.00      351
+DEAL:3d::-0.75 -0.50 0.00      347
+DEAL:3d::-1.00 -1.00 -0.25     362
+DEAL:3d::-1.00 -1.00 -0.25     363
+DEAL:3d::-1.00 -1.00 -0.25     364
+DEAL:3d::-0.50 -1.00 -0.25     632
+DEAL:3d::-0.50 -1.00 -0.25     631
+DEAL:3d::-0.50 -1.00 -0.25     630
+DEAL:3d::-1.00 -0.50 -0.25     346
+DEAL:3d::-1.00 -0.50 -0.25     345
+DEAL:3d::-1.00 -0.50 -0.25     344
+DEAL:3d::-0.50 -0.50 -0.25     617
+DEAL:3d::-0.50 -0.50 -0.25     616
+DEAL:3d::-0.50 -0.50 -0.25     615
+DEAL:3d::-1.00 -0.75 -0.25     384
+DEAL:3d::-1.00 -0.75 -0.25     383
+DEAL:3d::-1.00 -0.75 -0.25     382
+DEAL:3d::-0.50 -0.75 -0.25     626
+DEAL:3d::-0.50 -0.75 -0.25     625
+DEAL:3d::-0.50 -0.75 -0.25     624
+DEAL:3d::-0.75 -1.00 -0.25     381
+DEAL:3d::-0.75 -1.00 -0.25     380
+DEAL:3d::-0.75 -1.00 -0.25     379
+DEAL:3d::-0.75 -0.50 -0.25     348
+DEAL:3d::-0.75 -0.50 -0.25     349
+DEAL:3d::-0.75 -0.50 -0.25     350
+DEAL:3d::-0.75 -0.75 -0.50     577
+DEAL:3d::-0.75 -0.75 -0.50     576
+DEAL:3d::-0.75 -0.75 -0.50     575
+DEAL:3d::-0.75 -0.75 0.00      378
+DEAL:3d::-0.75 -0.75 0.00      377
+DEAL:3d::-0.75 -0.75 0.00      376
+DEAL:3d::-1.00 -1.00 -0.50     375
+DEAL:3d::-0.50 -1.00 -0.50     374
+DEAL:3d::-1.00 -0.50 -0.50     373
+DEAL:3d::-0.50 -0.50 -0.50     372
+DEAL:3d::-1.00 -1.00 0.00      371
+DEAL:3d::-0.50 -1.00 0.00      370
+DEAL:3d::-1.00 -0.50 0.00      369
+DEAL:3d::-0.50 -0.50 0.00      368
+DEAL:3d::-0.75 -0.75 -0.25     367
+DEAL:3d::-0.75 -0.75 -0.25     366
+DEAL:3d::-0.75 -0.75 -0.25     365
+DEAL:3d::
+DEAL:3d::-0.50 -1.00 -0.50     747
+DEAL:3d::-0.50 -1.00 -0.50     746
+DEAL:3d::-0.50 -1.00 -0.50     745
+DEAL:3d::0.00 -1.00 -0.50      760
+DEAL:3d::0.00 -1.00 -0.50      762
+DEAL:3d::0.00 -1.00 -0.50      763
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::0.00 -0.50 -0.50      744
+DEAL:3d::0.00 -0.50 -0.50      751
+DEAL:3d::0.00 -0.50 -0.50      752
+DEAL:3d::-0.50 -1.00 0.00      638
+DEAL:3d::-0.50 -1.00 0.00      637
+DEAL:3d::-0.50 -1.00 0.00      636
+DEAL:3d::0.00 -1.00 0.00       612
+DEAL:3d::0.00 -1.00 0.00       613
+DEAL:3d::0.00 -1.00 0.00       614
+DEAL:3d::-0.50 -0.50 0.00      620
+DEAL:3d::-0.50 -0.50 0.00      619
+DEAL:3d::-0.50 -0.50 0.00      618
+DEAL:3d::0.00 -0.50 0.00       623
+DEAL:3d::0.00 -0.50 0.00       622
+DEAL:3d::0.00 -0.50 0.00       621
+DEAL:3d::-0.50 -0.75 -0.50     741
+DEAL:3d::-0.50 -0.75 -0.50     740
+DEAL:3d::-0.50 -0.75 -0.50     739
+DEAL:3d::0.00 -0.75 -0.50      790
+DEAL:3d::0.00 -0.75 -0.50      789
+DEAL:3d::0.00 -0.75 -0.50      788
+DEAL:3d::-0.25 -1.00 -0.50     787
+DEAL:3d::-0.25 -1.00 -0.50     786
+DEAL:3d::-0.25 -1.00 -0.50     785
+DEAL:3d::-0.25 -0.50 -0.50     742
+DEAL:3d::-0.25 -0.50 -0.50     755
+DEAL:3d::-0.25 -0.50 -0.50     756
+DEAL:3d::-0.50 -0.75 0.00      635
+DEAL:3d::-0.50 -0.75 0.00      634
+DEAL:3d::-0.50 -0.75 0.00      633
+DEAL:3d::0.00 -0.75 0.00       665
+DEAL:3d::0.00 -0.75 0.00       666
+DEAL:3d::0.00 -0.75 0.00       667
+DEAL:3d::-0.25 -1.00 0.00      668
+DEAL:3d::-0.25 -1.00 0.00      669
+DEAL:3d::-0.25 -1.00 0.00      670
+DEAL:3d::-0.25 -0.50 0.00      627
+DEAL:3d::-0.25 -0.50 0.00      628
+DEAL:3d::-0.25 -0.50 0.00      629
+DEAL:3d::-0.50 -1.00 -0.25     632
+DEAL:3d::-0.50 -1.00 -0.25     631
+DEAL:3d::-0.50 -1.00 -0.25     630
+DEAL:3d::0.00 -1.00 -0.25      672
+DEAL:3d::0.00 -1.00 -0.25      673
+DEAL:3d::0.00 -1.00 -0.25      671
+DEAL:3d::-0.50 -0.50 -0.25     617
+DEAL:3d::-0.50 -0.50 -0.25     616
+DEAL:3d::-0.50 -0.50 -0.25     615
+DEAL:3d::0.00 -0.50 -0.25      642
+DEAL:3d::0.00 -0.50 -0.25      643
+DEAL:3d::0.00 -0.50 -0.25      644
+DEAL:3d::-0.50 -0.75 -0.25     626
+DEAL:3d::-0.50 -0.75 -0.25     625
+DEAL:3d::-0.50 -0.75 -0.25     624
+DEAL:3d::0.00 -0.75 -0.25      664
+DEAL:3d::0.00 -0.75 -0.25      663
+DEAL:3d::0.00 -0.75 -0.25      662
+DEAL:3d::-0.25 -1.00 -0.25     661
+DEAL:3d::-0.25 -1.00 -0.25     660
+DEAL:3d::-0.25 -1.00 -0.25     659
+DEAL:3d::-0.25 -0.50 -0.25     640
+DEAL:3d::-0.25 -0.50 -0.25     639
+DEAL:3d::-0.25 -0.50 -0.25     641
+DEAL:3d::-0.25 -0.75 -0.50     784
+DEAL:3d::-0.25 -0.75 -0.50     783
+DEAL:3d::-0.25 -0.75 -0.50     782
+DEAL:3d::-0.25 -0.75 0.00      645
+DEAL:3d::-0.25 -0.75 0.00      646
+DEAL:3d::-0.25 -0.75 0.00      647
+DEAL:3d::-0.50 -1.00 -0.50     648
+DEAL:3d::0.00 -1.00 -0.50      649
+DEAL:3d::-0.50 -0.50 -0.50     650
+DEAL:3d::0.00 -0.50 -0.50      651
+DEAL:3d::-0.50 -1.00 0.00      652
+DEAL:3d::0.00 -1.00 0.00       653
+DEAL:3d::-0.50 -0.50 0.00      654
+DEAL:3d::0.00 -0.50 0.00       655
+DEAL:3d::-0.25 -0.75 -0.25     656
+DEAL:3d::-0.25 -0.75 -0.25     657
+DEAL:3d::-0.25 -0.75 -0.25     658
+DEAL:3d::
+DEAL:3d::-1.00 -0.50 -0.50     554
+DEAL:3d::-1.00 -0.50 -0.50     555
+DEAL:3d::-1.00 -0.50 -0.50     553
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::-1.00 0.00 -0.50      399
+DEAL:3d::-1.00 0.00 -0.50      398
+DEAL:3d::-1.00 0.00 -0.50      397
+DEAL:3d::-0.50 0.00 -0.50      682
+DEAL:3d::-0.50 0.00 -0.50      681
+DEAL:3d::-0.50 0.00 -0.50      680
+DEAL:3d::-1.00 -0.50 0.00      355
+DEAL:3d::-1.00 -0.50 0.00      354
+DEAL:3d::-1.00 -0.50 0.00      353
+DEAL:3d::-0.50 -0.50 0.00      620
+DEAL:3d::-0.50 -0.50 0.00      619
+DEAL:3d::-0.50 -0.50 0.00      618
+DEAL:3d::-1.00 0.00 0.00       309
+DEAL:3d::-1.00 0.00 0.00       310
+DEAL:3d::-1.00 0.00 0.00       311
+DEAL:3d::-0.50 0.00 0.00       440
+DEAL:3d::-0.50 0.00 0.00       439
+DEAL:3d::-0.50 0.00 0.00       438
+DEAL:3d::-1.00 -0.25 -0.50     393
+DEAL:3d::-1.00 -0.25 -0.50     392
+DEAL:3d::-1.00 -0.25 -0.50     391
+DEAL:3d::-0.50 -0.25 -0.50     679
+DEAL:3d::-0.50 -0.25 -0.50     678
+DEAL:3d::-0.50 -0.25 -0.50     677
+DEAL:3d::-0.75 -0.50 -0.50     550
+DEAL:3d::-0.75 -0.50 -0.50     551
+DEAL:3d::-0.75 -0.50 -0.50     552
+DEAL:3d::-0.75 0.00 -0.50      390
+DEAL:3d::-0.75 0.00 -0.50      389
+DEAL:3d::-0.75 0.00 -0.50      388
+DEAL:3d::-1.00 -0.25 0.00      312
+DEAL:3d::-1.00 -0.25 0.00      313
+DEAL:3d::-1.00 -0.25 0.00      314
+DEAL:3d::-0.50 -0.25 0.00      437
+DEAL:3d::-0.50 -0.25 0.00      436
+DEAL:3d::-0.50 -0.25 0.00      435
+DEAL:3d::-0.75 -0.50 0.00      352
+DEAL:3d::-0.75 -0.50 0.00      351
+DEAL:3d::-0.75 -0.50 0.00      347
+DEAL:3d::-0.75 0.00 0.00       315
+DEAL:3d::-0.75 0.00 0.00       316
+DEAL:3d::-0.75 0.00 0.00       317
+DEAL:3d::-1.00 -0.50 -0.25     346
+DEAL:3d::-1.00 -0.50 -0.25     345
+DEAL:3d::-1.00 -0.50 -0.25     344
+DEAL:3d::-0.50 -0.50 -0.25     617
+DEAL:3d::-0.50 -0.50 -0.25     616
+DEAL:3d::-0.50 -0.50 -0.25     615
+DEAL:3d::-1.00 0.00 -0.25      318
+DEAL:3d::-1.00 0.00 -0.25      319
+DEAL:3d::-1.00 0.00 -0.25      320
+DEAL:3d::-0.50 0.00 -0.25      434
+DEAL:3d::-0.50 0.00 -0.25      433
+DEAL:3d::-0.50 0.00 -0.25      432
+DEAL:3d::-1.00 -0.25 -0.25     321
+DEAL:3d::-1.00 -0.25 -0.25     322
+DEAL:3d::-1.00 -0.25 -0.25     323
+DEAL:3d::-0.50 -0.25 -0.25     431
+DEAL:3d::-0.50 -0.25 -0.25     430
+DEAL:3d::-0.50 -0.25 -0.25     429
+DEAL:3d::-0.75 -0.50 -0.25     348
+DEAL:3d::-0.75 -0.50 -0.25     349
+DEAL:3d::-0.75 -0.50 -0.25     350
+DEAL:3d::-0.75 0.00 -0.25      324
+DEAL:3d::-0.75 0.00 -0.25      325
+DEAL:3d::-0.75 0.00 -0.25      326
+DEAL:3d::-0.75 -0.25 -0.50     394
+DEAL:3d::-0.75 -0.25 -0.50     395
+DEAL:3d::-0.75 -0.25 -0.50     396
+DEAL:3d::-0.75 -0.25 0.00      327
+DEAL:3d::-0.75 -0.25 0.00      328
+DEAL:3d::-0.75 -0.25 0.00      329
+DEAL:3d::-1.00 -0.50 -0.50     330
+DEAL:3d::-0.50 -0.50 -0.50     331
+DEAL:3d::-1.00 0.00 -0.50      332
+DEAL:3d::-0.50 0.00 -0.50      333
+DEAL:3d::-1.00 -0.50 0.00      334
+DEAL:3d::-0.50 -0.50 0.00      335
+DEAL:3d::-1.00 0.00 0.00       336
+DEAL:3d::-0.50 0.00 0.00       337
+DEAL:3d::-0.75 -0.25 -0.25     338
+DEAL:3d::-0.75 -0.25 -0.25     339
+DEAL:3d::-0.75 -0.25 -0.25     340
+DEAL:3d::
+DEAL:3d::-0.50 -0.50 -0.50     738
+DEAL:3d::-0.50 -0.50 -0.50     737
+DEAL:3d::-0.50 -0.50 -0.50     736
+DEAL:3d::0.00 -0.50 -0.50      744
+DEAL:3d::0.00 -0.50 -0.50      751
+DEAL:3d::0.00 -0.50 -0.50      752
+DEAL:3d::-0.50 0.00 -0.50      682
+DEAL:3d::-0.50 0.00 -0.50      681
+DEAL:3d::-0.50 0.00 -0.50      680
+DEAL:3d::0.00 0.00 -0.50       689
+DEAL:3d::0.00 0.00 -0.50       688
+DEAL:3d::0.00 0.00 -0.50       687
+DEAL:3d::-0.50 -0.50 0.00      620
+DEAL:3d::-0.50 -0.50 0.00      619
+DEAL:3d::-0.50 -0.50 0.00      618
+DEAL:3d::0.00 -0.50 0.00       623
+DEAL:3d::0.00 -0.50 0.00       622
+DEAL:3d::0.00 -0.50 0.00       621
+DEAL:3d::-0.50 0.00 0.00       440
+DEAL:3d::-0.50 0.00 0.00       439
+DEAL:3d::-0.50 0.00 0.00       438
+DEAL:3d::0.00 0.00 0.00        472
+DEAL:3d::0.00 0.00 0.00        471
+DEAL:3d::0.00 0.00 0.00        470
+DEAL:3d::-0.50 -0.25 -0.50     679
+DEAL:3d::-0.50 -0.25 -0.50     678
+DEAL:3d::-0.50 -0.25 -0.50     677
+DEAL:3d::0.00 -0.25 -0.50      686
+DEAL:3d::0.00 -0.25 -0.50      685
+DEAL:3d::0.00 -0.25 -0.50      684
+DEAL:3d::-0.25 -0.50 -0.50     742
+DEAL:3d::-0.25 -0.50 -0.50     755
+DEAL:3d::-0.25 -0.50 -0.50     756
+DEAL:3d::-0.25 0.00 -0.50      683
+DEAL:3d::-0.25 0.00 -0.50      702
+DEAL:3d::-0.25 0.00 -0.50      703
+DEAL:3d::-0.50 -0.25 0.00      437
+DEAL:3d::-0.50 -0.25 0.00      436
+DEAL:3d::-0.50 -0.25 0.00      435
+DEAL:3d::0.00 -0.25 0.00       441
+DEAL:3d::0.00 -0.25 0.00       442
+DEAL:3d::0.00 -0.25 0.00       443
+DEAL:3d::-0.25 -0.50 0.00      627
+DEAL:3d::-0.25 -0.50 0.00      628
+DEAL:3d::-0.25 -0.50 0.00      629
+DEAL:3d::-0.25 0.00 0.00       444
+DEAL:3d::-0.25 0.00 0.00       445
+DEAL:3d::-0.25 0.00 0.00       446
+DEAL:3d::-0.50 -0.50 -0.25     617
+DEAL:3d::-0.50 -0.50 -0.25     616
+DEAL:3d::-0.50 -0.50 -0.25     615
+DEAL:3d::0.00 -0.50 -0.25      642
+DEAL:3d::0.00 -0.50 -0.25      643
+DEAL:3d::0.00 -0.50 -0.25      644
+DEAL:3d::-0.50 0.00 -0.25      434
+DEAL:3d::-0.50 0.00 -0.25      433
+DEAL:3d::-0.50 0.00 -0.25      432
+DEAL:3d::0.00 0.00 -0.25       447
+DEAL:3d::0.00 0.00 -0.25       448
+DEAL:3d::0.00 0.00 -0.25       449
+DEAL:3d::-0.50 -0.25 -0.25     431
+DEAL:3d::-0.50 -0.25 -0.25     430
+DEAL:3d::-0.50 -0.25 -0.25     429
+DEAL:3d::0.00 -0.25 -0.25      469
+DEAL:3d::0.00 -0.25 -0.25      468
+DEAL:3d::0.00 -0.25 -0.25      467
+DEAL:3d::-0.25 -0.50 -0.25     640
+DEAL:3d::-0.25 -0.50 -0.25     639
+DEAL:3d::-0.25 -0.50 -0.25     641
+DEAL:3d::-0.25 0.00 -0.25      466
+DEAL:3d::-0.25 0.00 -0.25      465
+DEAL:3d::-0.25 0.00 -0.25      464
+DEAL:3d::-0.25 -0.25 -0.50     704
+DEAL:3d::-0.25 -0.25 -0.50     705
+DEAL:3d::-0.25 -0.25 -0.50     706
+DEAL:3d::-0.25 -0.25 0.00      463
+DEAL:3d::-0.25 -0.25 0.00      462
+DEAL:3d::-0.25 -0.25 0.00      461
+DEAL:3d::-0.50 -0.50 -0.50     460
+DEAL:3d::0.00 -0.50 -0.50      459
+DEAL:3d::-0.50 0.00 -0.50      458
+DEAL:3d::0.00 0.00 -0.50       457
+DEAL:3d::-0.50 -0.50 0.00      456
+DEAL:3d::0.00 -0.50 0.00       455
+DEAL:3d::-0.50 0.00 0.00       454
+DEAL:3d::0.00 0.00 0.00        453
+DEAL:3d::-0.25 -0.25 -0.25     452
+DEAL:3d::-0.25 -0.25 -0.25     451
+DEAL:3d::-0.25 -0.25 -0.25     450
+DEAL:3d::
index fa51a0c2610cbdf7b9aaba522428a544d04d13be..aa895565d5e595aa5cdb9e204f1e4c478f4ea0f9 100644 (file)
@@ -1,6 +1,5 @@
-//----------------------------  grid_out_02.cc  ---------------------------
+//-----------------------------------------------------------------------------
 //    $Id$
-//    Version: $Name$ 
 //
 //    Copyright (C) 2002, 2003, 2004, 2005, 2008 by the deal.II authors
 //
diff --git a/tests/deal.II/grid_out_05.cc b/tests/deal.II/grid_out_05.cc
new file mode 100644 (file)
index 0000000..e8e4d58
--- /dev/null
@@ -0,0 +1,63 @@
+//----------------------------  grid_out_05.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2002, 2003, 2004, 2005, 2008, 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.
+//
+//----------------------------  grid_out_05.cc  ---------------------------
+
+// make sure that we write boundary lines marked with a non-zero boundary
+// indicator correctly in UCD format
+
+#include "../tests.h"
+#include <deal.II/base/geometry_info.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_boundary.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/base/logstream.h>
+
+#include <fstream>
+#include <iomanip>
+
+
+std::ofstream logfile("grid_out_05/output");
+
+
+template <int dim>
+void test ()
+{
+  Triangulation<dim> tria;
+  GridGenerator::hyper_cube (tria);
+  tria.begin_active()->line(0)->set_boundary_indicator(1);
+  tria.begin_active()->face(2*dim-1)->set_boundary_indicator(2);
+
+  GridOut grid_out;
+  GridOutFlags::Ucd flags;
+  flags.write_lines = flags.write_faces = true;
+  grid_out.set_flags (flags);
+  grid_out.write_ucd (tria, logfile);
+}
+
+
+int main ()
+{
+  deallog << std::setprecision (2);
+  logfile << std::setprecision (2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  test<2> ();
+  test<3> ();
+}
+
diff --git a/tests/deal.II/grid_out_05/cmp/generic b/tests/deal.II/grid_out_05/cmp/generic
new file mode 100644 (file)
index 0000000..53428aa
--- /dev/null
@@ -0,0 +1,21 @@
+
+4 3 0 0 0
+1  0.0 0.0 0
+2  1.0 0.0 0
+3  0.0 1.0 0
+4  1.0 1.0 0
+1 0 quad    1 2 4 3 
+2  1  line    1 3 
+3  2  line    3 4 
+8 3 0 0 0
+1  0.0 0.0 0.0
+2  1.0 0.0 0.0
+3  0.0 1.0 0.0
+4  1.0 1.0 0.0
+5  0.0 0.0 1.0
+6  1.0 0.0 1.0
+7  0.0 1.0 1.0
+8  1.0 1.0 1.0
+1 0 hex     1 2 6 5 3 4 8 7 
+2  2  quad    5 6 8 7 
+2  1  line    1 3 
index 01bde43fc564ae537a0b2d94bfacdaab4dfc0c6b..8329520fe5895c0f3c6565ce8b3e760e527c5f79 100644 (file)
@@ -6,7 +6,7 @@ DEAL::   Number of degrees of freedom: 17
 DEAL:cg::Starting value 0.261041
 DEAL:cg::Convergence step 13 value 0
 DEAL::Memory consumption -- Triangulation: 2778
-DEAL::Memory consumption -- DoFHandler:    952
+DEAL::Memory consumption -- DoFHandler:    976
 DEAL::Memory consumption -- FE:            1800
 DEAL::Memory consumption -- Constraints:   78
 DEAL::Memory consumption -- Sparsity:      456
@@ -19,7 +19,7 @@ DEAL::   Number of degrees of freedom: 23
 DEAL:cg::Starting value 0.235472
 DEAL:cg::Convergence step 16 value 0
 DEAL::Memory consumption -- Triangulation: 3618
-DEAL::Memory consumption -- DoFHandler:    1140
+DEAL::Memory consumption -- DoFHandler:    1164
 DEAL::Memory consumption -- FE:            1800
 DEAL::Memory consumption -- Constraints:   78
 DEAL::Memory consumption -- Sparsity:      576
@@ -32,7 +32,7 @@ DEAL::   Number of degrees of freedom: 31
 DEAL:cg::Starting value 0.226008
 DEAL:cg::Convergence step 21 value 0
 DEAL::Memory consumption -- Triangulation: 4426
-DEAL::Memory consumption -- DoFHandler:    1332
+DEAL::Memory consumption -- DoFHandler:    1356
 DEAL::Memory consumption -- FE:            1800
 DEAL::Memory consumption -- Constraints:   78
 DEAL::Memory consumption -- Sparsity:      736
@@ -45,7 +45,7 @@ DEAL::   Number of degrees of freedom: 41
 DEAL:cg::Starting value 0.204506
 DEAL:cg::Convergence step 27 value 0
 DEAL::Memory consumption -- Triangulation: 5442
-DEAL::Memory consumption -- DoFHandler:    1560
+DEAL::Memory consumption -- DoFHandler:    1584
 DEAL::Memory consumption -- FE:            1800
 DEAL::Memory consumption -- Constraints:   78
 DEAL::Memory consumption -- Sparsity:      936
@@ -60,7 +60,7 @@ DEAL::   Number of degrees of freedom: 89
 DEAL:cg::Starting value 0.351647
 DEAL:cg::Convergence step 22 value 0
 DEAL::Memory consumption -- Triangulation: 4887
-DEAL::Memory consumption -- DoFHandler:    1912
+DEAL::Memory consumption -- DoFHandler:    1936
 DEAL::Memory consumption -- FE:            14308
 DEAL::Memory consumption -- Constraints:   78
 DEAL::Memory consumption -- Sparsity:      5736
@@ -73,7 +73,7 @@ DEAL::   Number of degrees of freedom: 209
 DEAL:cg::Starting value 0.271387
 DEAL:cg::Convergence step 30 value 0
 DEAL::Memory consumption -- Triangulation: 10047
-DEAL::Memory consumption -- DoFHandler:    3704
+DEAL::Memory consumption -- DoFHandler:    3728
 DEAL::Memory consumption -- FE:            14308
 DEAL::Memory consumption -- Constraints:   3102
 DEAL::Memory consumption -- Sparsity:      13992
@@ -86,7 +86,7 @@ DEAL::   Number of degrees of freedom: 449
 DEAL:cg::Starting value 0.203851
 DEAL:cg::Convergence step 51 value 0
 DEAL::Memory consumption -- Triangulation: 19591
-DEAL::Memory consumption -- DoFHandler:    7160
+DEAL::Memory consumption -- DoFHandler:    7184
 DEAL::Memory consumption -- FE:            14308
 DEAL::Memory consumption -- Constraints:   10734
 DEAL::Memory consumption -- Sparsity:      31240
@@ -99,7 +99,7 @@ DEAL::   Number of degrees of freedom: 921
 DEAL:cg::Starting value 0.151971
 DEAL:cg::Convergence step 71 value 0
 DEAL::Memory consumption -- Triangulation: 39319
-DEAL::Memory consumption -- DoFHandler:    14648
+DEAL::Memory consumption -- DoFHandler:    14672
 DEAL::Memory consumption -- FE:            14308
 DEAL::Memory consumption -- Constraints:   19966
 DEAL::Memory consumption -- Sparsity:      64168
@@ -114,7 +114,7 @@ DEAL::   Number of degrees of freedom: 517
 DEAL:cg::Starting value 0.206362
 DEAL:cg::Convergence step 29 value 0
 DEAL::Memory consumption -- Triangulation: 22643
-DEAL::Memory consumption -- DoFHandler:    9736
+DEAL::Memory consumption -- DoFHandler:    9760
 DEAL::Memory consumption -- FE:            315604
 DEAL::Memory consumption -- Constraints:   78
 DEAL::Memory consumption -- Sparsity:      120280
@@ -127,7 +127,7 @@ DEAL::   Number of degrees of freedom: 2217
 DEAL:cg::Starting value 0.116541
 DEAL:cg::Convergence step 31 value 0
 DEAL::Memory consumption -- Triangulation: 88881
-DEAL::Memory consumption -- DoFHandler:    37972
+DEAL::Memory consumption -- DoFHandler:    37996
 DEAL::Memory consumption -- FE:            315604
 DEAL::Memory consumption -- Constraints:   55262
 DEAL::Memory consumption -- Sparsity:      567152
@@ -140,7 +140,7 @@ DEAL::   Number of degrees of freedom: 9373
 DEAL:cg::Starting value 0.0978429
 DEAL:cg::Convergence step 55 value 0
 DEAL::Memory consumption -- Triangulation: 355923
-DEAL::Memory consumption -- DoFHandler:    151256
+DEAL::Memory consumption -- DoFHandler:    151280
 DEAL::Memory consumption -- FE:            315604
 DEAL::Memory consumption -- Constraints:   367086
 DEAL::Memory consumption -- Sparsity:      2517208
@@ -153,7 +153,7 @@ DEAL::   Number of degrees of freedom: 32433
 DEAL:cg::Starting value 0.0425276
 DEAL:cg::Convergence step 82 value 0
 DEAL::Memory consumption -- Triangulation: 1252759
-DEAL::Memory consumption -- DoFHandler:    541984
+DEAL::Memory consumption -- DoFHandler:    542008
 DEAL::Memory consumption -- FE:            315604
 DEAL::Memory consumption -- Constraints:   1307806
 DEAL::Memory consumption -- Sparsity:      8321768
diff --git a/tests/lac/sparse_matrix_iterator.cc b/tests/lac/sparse_matrix_iterator.cc
new file mode 100644 (file)
index 0000000..692423f
--- /dev/null
@@ -0,0 +1,74 @@
+//----------------------------------------------------------------------
+//    $Id: functional_01.cc 23753 2011-05-30 00:22:23Z bangerth $
+//
+//    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.
+//
+//----------------------------------------------------------------------
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/sparse_matrix.h>
+
+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);
+
+  SparsityPattern pattern(4,5,2);
+  pattern.add(0,2);
+  pattern.add(0,0);
+  pattern.add(1,0);
+  pattern.add(1,3);
+  pattern.add(2,4);
+  pattern.add(2,2);
+  pattern.add(3,0);
+  pattern.add(3,4);
+  pattern.compress();
+  
+  SparseMatrix<float> matrix(pattern);
+  matrix.set(0,2, 3.5);
+  matrix.set(0,0, 1.);
+  matrix.set(1,0, -2.);
+  matrix.set(1,3, 1.5);
+  matrix.set(2,4, -2.25);
+  matrix.set(2,2, -0.5);
+  matrix.set(3,0, 2.);
+  matrix.set(3,4, 0.);
+
+                                  // Print the matrix
+  for (SparseMatrix<float>::const_iterator i=matrix.begin(); i != matrix.end();++i)
+    deallog << i->row() << ' ' << i->column() << ' ' << i->value() << std::endl;
+  deallog << std::endl;
+  
+                                  // Add 0.5 to each element
+  for (SparseMatrix<float>::iterator i=matrix.begin(); i != matrix.end();++i)
+    i->value() += .5;
+  
+                                  // Print the matrix
+  for (SparseMatrix<float>::const_iterator i=matrix.begin(); i != matrix.end();++i)
+    deallog << i->row() << ' ' << i->column() << ' ' << i->value() << std::endl;
+  deallog << std::endl;
+  
+                                  // Subtract 1 from each element in row 2
+  for (SparseMatrix<float>::iterator i=matrix.begin(2); i != matrix.end(2);++i)
+    i->value() -= 1.;
+
+                                  //  Double each element in row 1
+  for (SparseMatrix<float>::iterator i=matrix.begin(1); i != matrix.end(1);++i)
+    i->value() *= 2;
+
+                                  // Set the first entry to zero
+  matrix.begin()->value() = 0;
+  
+                                  // Print the matrix
+  for (SparseMatrix<float>::const_iterator i=matrix.begin(); i != matrix.end();++i)
+    deallog << i->row() << ' ' << i->column() << ' ' << i->value() << std::endl;
+  deallog << std::endl;
+}
diff --git a/tests/lac/sparse_matrix_iterator/cmp/generic b/tests/lac/sparse_matrix_iterator/cmp/generic
new file mode 100644 (file)
index 0000000..403adcd
--- /dev/null
@@ -0,0 +1,28 @@
+
+DEAL::0 0 1.00000
+DEAL::0 2 3.50000
+DEAL::1 0 -2.00000
+DEAL::1 3 1.50000
+DEAL::2 2 -0.500000
+DEAL::2 4 -2.25000
+DEAL::3 0 2.00000
+DEAL::3 4 0.00000
+DEAL::
+DEAL::0 0 1.50000
+DEAL::0 2 4.00000
+DEAL::1 0 -1.50000
+DEAL::1 3 2.00000
+DEAL::2 2 0.00000
+DEAL::2 4 -1.75000
+DEAL::3 0 2.50000
+DEAL::3 4 0.500000
+DEAL::
+DEAL::0 0 0.00000
+DEAL::0 2 4.00000
+DEAL::1 0 -3.00000
+DEAL::1 3 4.00000
+DEAL::2 2 -1.00000
+DEAL::2 4 -2.75000
+DEAL::3 0 2.50000
+DEAL::3 4 0.500000
+DEAL::
diff --git a/tests/mpi/mg_01.cc b/tests/mpi/mg_01.cc
new file mode 100644 (file)
index 0000000..d7923b5
--- /dev/null
@@ -0,0 +1,154 @@
+//---------------------------------------------------------------------------
+//    $Id: p4est_data_out_01.cc 25200 2012-03-02 21:11:21Z heister $
+//    Version: $Name$
+//
+//    Copyright (C) 2009, 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.
+//
+//---------------------------------------------------------------------------
+
+
+// check level_subdomain_id for distributed Triangulation
+
+#include "../tests.h"
+#include "coarse_grid_common.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/tensor.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_out.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/lac/trilinos_vector.h>
+
+#include <fstream>
+
+template<int dim>
+void output(parallel::distributed::Triangulation<dim> & tr)
+{
+    const std::string filename = ("mg_01/mesh." +
+                                Utilities::int_to_string
+                                (tr.locally_owned_subdomain(), 4) +
+                                ".fig");
+    std::ofstream stream(filename.c_str());
+
+       GridOutFlags::XFig flags;
+       flags.color_by = GridOutFlags::XFig::level_subdomain_id;
+       GridOut out;
+       out.set_flags(flags);
+
+       out.write_xfig(tr, stream);
+}
+
+template<int dim>
+void test()
+{
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+
+  if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+    deallog << "hyper_cube" << std::endl;
+
+  parallel::distributed::Triangulation<dim> tr(MPI_COMM_WORLD);
+
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(2);
+  DoFHandler<dim> dofh(tr);
+
+  output(tr);
+
+  //tr.begin_active()->set_level_subdomain_id(1+myid);
+
+  for (unsigned int i=0;i<10;++i)
+  {
+
+      MPI_Barrier(MPI_COMM_WORLD);
+      if (myid==i)
+        {
+          deallog << "ID = " << i << std::endl;
+          for (unsigned int lvl=0;lvl<tr.n_levels();++lvl)
+            {
+              typename Triangulation<dim>::cell_iterator
+              cell = tr.begin(lvl),
+              endc = tr.end(lvl);
+
+              for (; cell!=endc; ++cell)
+                if (cell->level_subdomain_id()!=4294967294)
+                  deallog << cell->level_subdomain_id();
+                else
+                  deallog << "-";
+              deallog << std::endl;
+            }
+          deallog << std::endl;
+        }
+  }
+
+  if (myid==0)
+    deallog << "my levels: " << tr.n_levels() << "<= global levels:" << tr.n_global_levels() << std::endl;
+  
+
+//  static const FE_DGP<dim> fe(0);
+//  dofh.distribute_dofs (fe);
+
+//  DataOut<dim> data_out;
+//  data_out.attach_dof_handler (dofh);
+//
+//  TrilinosWrappers::MPI::Vector x;
+//
+//  x.reinit(dofh.locally_owned_dofs(), MPI_COMM_WORLD);
+//  x=2.0;
+//
+//  data_out.add_data_vector (x, "x");
+//  data_out.build_patches ();
+//
+//  if (myid==0)
+//    {
+//      for (unsigned int i=0; i<dofh.n_locally_owned_dofs_per_processor().size(); ++i)
+//     deallog << dofh.n_locally_owned_dofs_per_processor()[i] << std::endl;
+//      data_out.write_vtu (deallog.get_file_stream());
+//    }
+}
+
+
+int main(int argc, char *argv[])
+{
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+  MPI_Init (&argc,&argv);
+#else
+  (void)argc;
+  (void)argv;
+#endif
+
+  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("mg_01").c_str());
+      deallog.attach(logfile);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+
+      deallog.push("2d");
+      test<2>();
+      deallog.pop();
+    }
+  else
+    test<2>();
+
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+  MPI_Finalize();
+#endif
+}
diff --git a/tests/mpi/mg_01/ncpu_10/cmp/generic b/tests/mpi/mg_01/ncpu_10/cmp/generic
new file mode 100644 (file)
index 0000000..4e2499b
--- /dev/null
@@ -0,0 +1,6 @@
+
+DEAL:0:2d::hyper_cube
+DEAL:0:2d::ID = 0
+DEAL:0:2d::-
+DEAL:0:2d::
+DEAL:0:2d::my levels: 1<= global levels:3
diff --git a/tests/mpi/mg_01/ncpu_4/cmp/generic b/tests/mpi/mg_01/ncpu_4/cmp/generic
new file mode 100644 (file)
index 0000000..d38a32a
--- /dev/null
@@ -0,0 +1,8 @@
+
+DEAL:0:2d::hyper_cube
+DEAL:0:2d::ID = 0
+DEAL:0:2d::0
+DEAL:0:2d::0123
+DEAL:0:2d::00001-1-22--3---
+DEAL:0:2d::
+DEAL:0:2d::my levels: 3<= global levels:3
diff --git a/tests/mpi/mg_02.cc b/tests/mpi/mg_02.cc
new file mode 100644 (file)
index 0000000..d86fce5
--- /dev/null
@@ -0,0 +1,154 @@
+//---------------------------------------------------------------------------
+//    $Id: p4est_data_out_01.cc 25200 2012-03-02 21:11:21Z heister $
+//    Version: $Name$
+//
+//    Copyright (C) 2009, 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.
+//
+//---------------------------------------------------------------------------
+
+
+// distribute dofs and mgdofs for a parallel Triangulation
+
+#include "../tests.h"
+#include "coarse_grid_common.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/tensor.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/numerics/data_out.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/lac/trilinos_vector.h>
+
+#include <fstream>
+
+template<int dim>
+void test()
+{
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+
+  if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+    deallog << "hyper_cube" << std::endl;
+
+  parallel::distributed::Triangulation<dim> tr(MPI_COMM_WORLD);
+
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(2);
+  DoFHandler<dim> dofh(tr);
+
+    {
+      std::ofstream file((JobIdentifier::base_name(__FILE__)+"/ncpu_" + Utilities::int_to_string(Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD)) + "/dat." + Utilities::int_to_string(myid)).c_str());
+    file << "**** proc " << myid << std::endl;
+          for (unsigned int lvl=0;lvl<tr.n_levels();++lvl)
+            {
+              file << "level " << lvl << ": ";
+              typename DoFHandler<dim>::cell_iterator
+              cell = dofh.begin(lvl),
+              endc = dofh.end(lvl);
+
+              for (;cell!=endc;++cell)
+                {
+                if (cell->level_subdomain_id()!=4294967294)
+                  file << cell->level_subdomain_id();
+                else
+                  file << "-";
+                }
+              file << std::endl;
+            }
+    }
+
+
+    MPI_Barrier(MPI_COMM_WORLD);
+    
+  if (myid==0)
+    {
+      for (unsigned int i=0;i<Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);++i)
+        {
+          cat_file((JobIdentifier::base_name(__FILE__)+"/ncpu_" + Utilities::int_to_string(Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD)) + "/dat." + Utilities::int_to_string(i)).c_str());
+        }
+    }      
+
+  static const FE_DGP<dim> fe(0);
+  Assert(dofh.has_active_dofs()==false, ExcInternalError());
+  Assert(dofh.has_level_dofs()==false, ExcInternalError());
+
+  dofh.distribute_dofs (fe);
+
+  Assert(dofh.has_active_dofs()==true, ExcInternalError());
+  Assert(dofh.has_level_dofs()==false, ExcInternalError());
+
+  dofh.distribute_mg_dofs (fe);
+
+  Assert(dofh.has_active_dofs()==true, ExcInternalError());
+  Assert(dofh.has_level_dofs()==true, ExcInternalError());
+  if (myid==0)
+    {
+      deallog << "Levels: " << tr.n_global_levels() << std::endl;
+      std::cout << "Levels: " << tr.n_global_levels() << std::endl;
+      
+      deallog << "n_locally_owned_dofs_per_processor:" << std::endl;
+      for (unsigned int i=0; i<dofh.n_locally_owned_dofs_per_processor().size(); ++i)
+       deallog << dofh.n_locally_owned_dofs_per_processor()[i] << std::endl;
+
+      deallog << "locally_owned_mg_dofs_per_processor:" << std::endl;
+      for (unsigned int lvl=0;lvl<tr.n_global_levels();++lvl)
+       {
+         deallog << "level " << lvl << ":" << std::endl;
+         
+         const std::vector<IndexSet> & vec = dofh.locally_owned_mg_dofs_per_processor(lvl);
+      
+         for (unsigned int i=0; i<vec.size(); ++i)
+           deallog << vec[i].n_elements() << std::endl;
+       }
+      
+      
+    }
+}
+
+
+int main(int argc, char *argv[])
+{
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+  MPI_Init (&argc,&argv);
+#else
+  (void)argc;
+  (void)argv;
+#endif
+
+  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(JobIdentifier::base_name(__FILE__)).c_str());
+      deallog.attach(logfile);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+
+      deallog.push("2d");
+      test<2>();
+      deallog.pop();
+    }
+  else
+    test<2>();
+
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+  MPI_Finalize();
+#endif
+}
diff --git a/tests/mpi/mg_02/ncpu_10/cmp/generic b/tests/mpi/mg_02/ncpu_10/cmp/generic
new file mode 100644 (file)
index 0000000..873d58a
--- /dev/null
@@ -0,0 +1,86 @@
+
+DEAL:0:2d::hyper_cube
+**** proc 0
+level 0: -
+
+**** proc 1
+level 0: 1
+level 1: 1368
+level 2: 11113-3-66--8---
+
+**** proc 2
+level 0: -
+
+**** proc 3
+level 0: 1
+level 1: 1368
+level 2: -1-13333-6--88--
+
+**** proc 4
+level 0: -
+
+**** proc 5
+level 0: -
+
+**** proc 6
+level 0: 1
+level 1: 1368
+level 2: --11--3-66668-8-
+
+**** proc 7
+level 0: -
+
+**** proc 8
+level 0: 1
+level 1: 1368
+level 2: ---1--33-6-68888
+
+**** proc 9
+level 0: -
+
+DEAL:0:2d::Levels: 3
+DEAL:0:2d::n_locally_owned_dofs_per_processor:
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::locally_owned_mg_dofs_per_processor:
+DEAL:0:2d::level 0:
+DEAL:0:2d::0
+DEAL:0:2d::1
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::level 1:
+DEAL:0:2d::0
+DEAL:0:2d::1
+DEAL:0:2d::0
+DEAL:0:2d::1
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::1
+DEAL:0:2d::0
+DEAL:0:2d::1
+DEAL:0:2d::0
+DEAL:0:2d::level 2:
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
+DEAL:0:2d::4
+DEAL:0:2d::0
diff --git a/tests/mpi/mg_02/ncpu_4/cmp/generic b/tests/mpi/mg_02/ncpu_4/cmp/generic
new file mode 100644 (file)
index 0000000..05af21b
--- /dev/null
@@ -0,0 +1,44 @@
+
+DEAL:0:2d::hyper_cube
+**** proc 0
+level 0: 0
+level 1: 0123
+level 2: 00001-1-22--3---
+
+**** proc 1
+level 0: 0
+level 1: 0123
+level 2: -0-01111-2--33--
+
+**** proc 2
+level 0: 0
+level 1: 0123
+level 2: --00--1-22223-3-
+
+**** proc 3
+level 0: 0
+level 1: 0123
+level 2: ---0--11-2-23333
+
+DEAL:0:2d::Levels: 3
+DEAL:0:2d::n_locally_owned_dofs_per_processor:
+DEAL:0:2d::4
+DEAL:0:2d::4
+DEAL:0:2d::4
+DEAL:0:2d::4
+DEAL:0:2d::locally_owned_mg_dofs_per_processor:
+DEAL:0:2d::level 0:
+DEAL:0:2d::1
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::0
+DEAL:0:2d::level 1:
+DEAL:0:2d::1
+DEAL:0:2d::1
+DEAL:0:2d::1
+DEAL:0:2d::1
+DEAL:0:2d::level 2:
+DEAL:0:2d::4
+DEAL:0:2d::4
+DEAL:0:2d::4
+DEAL:0:2d::4
diff --git a/tests/mpi/mg_03.cc b/tests/mpi/mg_03.cc
new file mode 100644 (file)
index 0000000..494b6d6
--- /dev/null
@@ -0,0 +1,155 @@
+//---------------------------------------------------------------------------
+//    $Id: p4est_data_out_01.cc 25200 2012-03-02 21:11:21Z heister $
+//    Version: $Name$
+//
+//    Copyright (C) 2009, 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.
+//
+//---------------------------------------------------------------------------
+
+
+// distribute_dofs on one cpu crashes with a segmentation fault.
+/* valgrind says:
+==7944== Invalid read of size 8
+==7944==    at 0x7A60612: dealii::DoFCellAccessor<dealii::DoFHandler<2, 2> >::DoFCellAccessor(dealii::Triangulation<2, 2> const*, int, int, dealii::DoFCellAccessor<dealii::DoFHandler<2, 2> >::AccessorData const*) (dof_accessor.templates.h:3515)
+==7944==    by 0x7AC3618: dealii::TriaRawIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2> > >::TriaRawIterator() (tria_iterator.templates.h:36)
+==7944==    by 0x7AC074D: dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2> > >::TriaIterator() (tria_iterator.templates.h:160)
+==7944==    by 0x7B70D2D: dealii::TriaActiveIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2> > >::TriaActiveIterator() (tria_iterator.templates.h:330)
+==7944==    by 0x9A434DA: dealii::internal::DoFHandler::Policy::ParallelDistributed<2, 2>::distribute_dofs(unsigned int, dealii::DoFHandler<2, 2>&) const (dof_handler_policy.cc:2054)
+==7944==    by 0x99FE383: dealii::DoFHandler<2, 2>::distribute_dofs(dealii::FiniteElement<2, 2> const&, unsigned int) (dof_handler.cc:984)
+==7944==    by 0x41C8E7: void test<2>() (mg_03.cc:73)
+==7944==    by 0x417949: main (mg_03.cc:134)
+==7944==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
+==7944==
+*/
+
+#include "../tests.h"
+#include "coarse_grid_common.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/tensor.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/numerics/data_out.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/lac/trilinos_vector.h>
+
+#include <fstream>
+
+template<int dim>
+void output(parallel::distributed::Triangulation<dim> & tr)
+{
+  const std::string filename = ("mg_03/mesh." +
+                                Utilities::int_to_string
+                                (tr.locally_owned_subdomain(), 4) +
+                                ".vtu");
+
+
+}
+
+template<int dim>
+void test()
+{
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+
+  if (myid == 0)
+    deallog << "hyper_cube" << std::endl;
+
+  parallel::distributed::Triangulation<dim> tr(MPI_COMM_WORLD);
+
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(2);
+  DoFHandler<dim> dofh(tr);
+
+  output(tr);
+
+  static const FE_DGP<dim> fe(0);
+  dofh.distribute_dofs (fe);
+  dofh.distribute_mg_dofs (fe);
+
+  {
+   std::ofstream file((std::string("mg_03/ncpu_") + Utilities::int_to_string(Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD)) + "/dat." + Utilities::int_to_string(myid)).c_str());
+    file << "**** proc " << myid << std::endl;
+          for (unsigned int lvl=0;lvl<tr.n_levels();++lvl)
+            {
+              file << "level " << lvl << ": ";
+              typename DoFHandler<dim>::cell_iterator
+              cell = dofh.begin(lvl),
+              endc = dofh.end(lvl);
+
+              for (;cell!=endc;++cell)
+                {
+              std::vector<unsigned int> dofs(fe.n_dofs_per_cell());
+              cell->get_mg_dof_indices(dofs);
+
+              for (unsigned int i=0;i<dofs.size();++i)
+                if (dofs[i]==types::invalid_dof_index)
+                  file << "- ";
+                else
+                  file << dofs[i] << " ";
+              file << " | ";
+                }
+              file << std::endl;
+            }
+  }
+
+  MPI_Barrier(MPI_COMM_WORLD);
+
+  if (myid==0)
+    {
+      for (unsigned int i=0;i<Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);++i)
+        {
+          cat_file((std::string("mg_03/ncpu_") + Utilities::int_to_string(Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD)) + "/dat." + Utilities::int_to_string(i)).c_str());
+        }
+    }      
+
+  if (myid==0)
+    deallog << "OK" << std::endl;
+}
+
+
+int main(int argc, char *argv[])
+{
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+  MPI_Init (&argc,&argv);
+#else
+  (void)argc;
+  (void)argv;
+#endif
+
+  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("mg_03").c_str());
+      deallog.attach(logfile);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+
+      deallog.push("2d");
+      test<2>();
+      deallog.pop();
+    }
+  else
+    test<2>();
+
+#ifdef DEAL_II_COMPILER_SUPPORTS_MPI
+  MPI_Finalize();
+#endif
+}
diff --git a/tests/mpi/mg_03/ncpu_1/cmp/generic b/tests/mpi/mg_03/ncpu_1/cmp/generic
new file mode 100644 (file)
index 0000000..9140b59
--- /dev/null
@@ -0,0 +1,8 @@
+
+DEAL:0:2d::hyper_cube
+**** proc 0
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10  | 11  | 12  | 13  | 14  | 15  | 
+
+DEAL:0:2d::OK
diff --git a/tests/mpi/mg_03/ncpu_1/status b/tests/mpi/mg_03/ncpu_1/status
new file mode 100644 (file)
index 0000000..2e57cf4
--- /dev/null
@@ -0,0 +1 @@
+Checking
diff --git a/tests/mpi/mg_03/ncpu_10/cmp/generic b/tests/mpi/mg_03/ncpu_10/cmp/generic
new file mode 100644 (file)
index 0000000..a3c35cc
--- /dev/null
@@ -0,0 +1,41 @@
+
+DEAL:0:2d::hyper_cube
+**** proc 0
+level 0: -  | 
+
+**** proc 1
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: 0  | 1  | 2  | 3  | 4  | -  | 6  | -  | 8  | 9  | -  | -  | 12  | -  | -  | -  | 
+
+**** proc 2
+level 0: -  | 
+
+**** proc 3
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: -  | 1  | -  | 3  | 4  | 5  | 6  | 7  | -  | 9  | -  | -  | 12  | 13  | -  | -  | 
+
+**** proc 4
+level 0: -  | 
+
+**** proc 5
+level 0: -  | 
+
+**** proc 6
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: -  | -  | 2  | 3  | -  | -  | 6  | -  | 8  | 9  | 10  | 11  | 12  | -  | 14  | -  | 
+
+**** proc 7
+level 0: -  | 
+
+**** proc 8
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: -  | -  | -  | 3  | -  | -  | 6  | 7  | -  | 9  | -  | 11  | 12  | 13  | 14  | 15  | 
+
+**** proc 9
+level 0: -  | 
+
+DEAL:0:2d::OK
diff --git a/tests/mpi/mg_03/ncpu_4/cmp/generic b/tests/mpi/mg_03/ncpu_4/cmp/generic
new file mode 100644 (file)
index 0000000..d548817
--- /dev/null
@@ -0,0 +1,23 @@
+
+DEAL:0:2d::hyper_cube
+**** proc 0
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: 0  | 1  | 2  | 3  | 4  | -  | 6  | -  | 8  | 9  | -  | -  | 12  | -  | -  | -  | 
+
+**** proc 1
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: -  | 1  | -  | 3  | 4  | 5  | 6  | 7  | -  | 9  | -  | -  | 12  | 13  | -  | -  | 
+
+**** proc 2
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: -  | -  | 2  | 3  | -  | -  | 6  | -  | 8  | 9  | 10  | 11  | 12  | -  | 14  | -  | 
+
+**** proc 3
+level 0: 0  | 
+level 1: 0  | 1  | 2  | 3  | 
+level 2: -  | -  | -  | 3  | -  | -  | 6  | 7  | -  | 9  | -  | 11  | 12  | 13  | 14  | 15  | 
+
+DEAL:0:2d::OK
index e8816d4ec5222fd92d9ed2e3033189a2c03cbda1..9ab9e8adc116ac786edc779a4d605d92df274fc9 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2006 by the deal.II authors
+//    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
@@ -97,12 +97,7 @@ void check()
 
 int main()
 {
-  std::ofstream logfile("dof_01/output");
-  deallog << std::setprecision(3);
-  deallog.attach(logfile);
-  deallog.depth_console(0);
-  deallog.threshold_double(1.e-10);
-
+  initlog(__FILE__);
   check<1> ();
   check<2> ();
   check<3> ();
index 9dd7cd690e907a167360b6990b7fd8e4971987dd..71a8af5c4f8e4447e262a5c30166663b2d8e655e 100644 (file)
 
 DEAL::FE_Q<1>(1)
-DEAL::Level 0 v0.00 v1.00 dofs  0 1
-DEAL::Level 1 v0.00 v0.500 dofs  0 1
-DEAL::Level 1 v0.500 v1.00 dofs  1 2
-DEAL::Level 2 v0.00 v0.250 dofs  0 1
-DEAL::Level 2 v0.250 v0.500 dofs  1 2
-DEAL::Level 2 v0.500 v0.750 dofs  2 3
-DEAL::Level 2 v0.750 v1.00 dofs  3 4
+DEAL::Level 0 v0.00000 v1.00000 dofs  0 1
+DEAL::Level 1 v0.00000 v0.500000 dofs  0 1
+DEAL::Level 1 v0.500000 v1.00000 dofs  1 2
+DEAL::Level 2 v0.00000 v0.250000 dofs  0 1
+DEAL::Level 2 v0.250000 v0.500000 dofs  1 2
+DEAL::Level 2 v0.500000 v0.750000 dofs  2 3
+DEAL::Level 2 v0.750000 v1.00000 dofs  3 4
 DEAL::FE_Q<1>(2)
-DEAL::Level 0 v0.00 v1.00 dofs  0 1 2
-DEAL::Level 1 v0.00 v0.500 dofs  0 1 2
-DEAL::Level 1 v0.500 v1.00 dofs  1 3 4
-DEAL::Level 2 v0.00 v0.250 dofs  0 1 2
-DEAL::Level 2 v0.250 v0.500 dofs  1 3 4
-DEAL::Level 2 v0.500 v0.750 dofs  3 5 6
-DEAL::Level 2 v0.750 v1.00 dofs  5 7 8
+DEAL::Level 0 v0.00000 v1.00000 dofs  0 1 2
+DEAL::Level 1 v0.00000 v0.500000 dofs  0 1 2
+DEAL::Level 1 v0.500000 v1.00000 dofs  1 3 4
+DEAL::Level 2 v0.00000 v0.250000 dofs  0 1 2
+DEAL::Level 2 v0.250000 v0.500000 dofs  1 3 4
+DEAL::Level 2 v0.500000 v0.750000 dofs  3 5 6
+DEAL::Level 2 v0.750000 v1.00000 dofs  5 7 8
 DEAL::FESystem<1>[FE_Q<1>(1)^2-FE_Q<1>(2)]
-DEAL::Level 0 v0.00 v1.00 dofs  0 1 2 3 4 5 6
-DEAL::Level 1 v0.00 v0.500 dofs  0 1 2 3 4 5 6
-DEAL::Level 1 v0.500 v1.00 dofs  3 4 5 7 8 9 10
-DEAL::Level 2 v0.00 v0.250 dofs  0 1 2 3 4 5 6
-DEAL::Level 2 v0.250 v0.500 dofs  3 4 5 7 8 9 10
-DEAL::Level 2 v0.500 v0.750 dofs  7 8 9 11 12 13 14
-DEAL::Level 2 v0.750 v1.00 dofs  11 12 13 15 16 17 18
+DEAL::Level 0 v0.00000 v1.00000 dofs  0 1 2 3 4 5 6
+DEAL::Level 1 v0.00000 v0.500000 dofs  0 1 2 3 4 5 6
+DEAL::Level 1 v0.500000 v1.00000 dofs  3 4 5 7 8 9 10
+DEAL::Level 2 v0.00000 v0.250000 dofs  0 1 2 3 4 5 6
+DEAL::Level 2 v0.250000 v0.500000 dofs  3 4 5 7 8 9 10
+DEAL::Level 2 v0.500000 v0.750000 dofs  7 8 9 11 12 13 14
+DEAL::Level 2 v0.750000 v1.00000 dofs  11 12 13 15 16 17 18
 DEAL::FE_Q<2>(1)
-DEAL::Level 0 v0.00 0.00 v1.00 0.00 v0.00 1.00 v1.00 1.00 dofs  0 1 2 3
-DEAL::Level 1 v0.00 0.00 v0.500 0.00 v0.00 0.500 v0.500 0.500 dofs  0 1 2 3
-DEAL::Level 1 v0.500 0.00 v1.00 0.00 v0.500 0.500 v1.00 0.500 dofs  1 4 3 5
-DEAL::Level 1 v0.00 0.500 v0.500 0.500 v0.00 1.00 v0.500 1.00 dofs  2 3 6 7
-DEAL::Level 1 v0.500 0.500 v1.00 0.500 v0.500 1.00 v1.00 1.00 dofs  3 5 7 8
-DEAL::Level 2 v0.00 0.00 v0.250 0.00 v0.00 0.250 v0.250 0.250 dofs  0 1 2 3
-DEAL::Level 2 v0.250 0.00 v0.500 0.00 v0.250 0.250 v0.500 0.250 dofs  1 4 3 5
-DEAL::Level 2 v0.00 0.250 v0.250 0.250 v0.00 0.500 v0.250 0.500 dofs  2 3 6 7
-DEAL::Level 2 v0.250 0.250 v0.500 0.250 v0.250 0.500 v0.500 0.500 dofs  3 5 7 8
-DEAL::Level 2 v0.500 0.00 v0.750 0.00 v0.500 0.250 v0.750 0.250 dofs  4 9 5 10
-DEAL::Level 2 v0.750 0.00 v1.00 0.00 v0.750 0.250 v1.00 0.250 dofs  9 11 10 12
-DEAL::Level 2 v0.500 0.250 v0.750 0.250 v0.500 0.500 v0.750 0.500 dofs  5 10 8 13
-DEAL::Level 2 v0.750 0.250 v1.00 0.250 v0.750 0.500 v1.00 0.500 dofs  10 12 13 14
-DEAL::Level 2 v0.00 0.500 v0.250 0.500 v0.00 0.750 v0.250 0.750 dofs  6 7 15 16
-DEAL::Level 2 v0.250 0.500 v0.500 0.500 v0.250 0.750 v0.500 0.750 dofs  7 8 16 17
-DEAL::Level 2 v0.00 0.750 v0.250 0.750 v0.00 1.00 v0.250 1.00 dofs  15 16 18 19
-DEAL::Level 2 v0.250 0.750 v0.500 0.750 v0.250 1.00 v0.500 1.00 dofs  16 17 19 20
-DEAL::Level 2 v0.500 0.500 v0.750 0.500 v0.500 0.750 v0.750 0.750 dofs  8 13 17 21
-DEAL::Level 2 v0.750 0.500 v1.00 0.500 v0.750 0.750 v1.00 0.750 dofs  13 14 21 22
-DEAL::Level 2 v0.500 0.750 v0.750 0.750 v0.500 1.00 v0.750 1.00 dofs  17 21 20 23
-DEAL::Level 2 v0.750 0.750 v1.00 0.750 v0.750 1.00 v1.00 1.00 dofs  21 22 23 24
+DEAL::Level 0 v0.00000 0.00000 v1.00000 0.00000 v0.00000 1.00000 v1.00000 1.00000 dofs  0 1 2 3
+DEAL::Level 1 v0.00000 0.00000 v0.500000 0.00000 v0.00000 0.500000 v0.500000 0.500000 dofs  0 1 2 3
+DEAL::Level 1 v0.500000 0.00000 v1.00000 0.00000 v0.500000 0.500000 v1.00000 0.500000 dofs  1 4 3 5
+DEAL::Level 1 v0.00000 0.500000 v0.500000 0.500000 v0.00000 1.00000 v0.500000 1.00000 dofs  2 3 6 7
+DEAL::Level 1 v0.500000 0.500000 v1.00000 0.500000 v0.500000 1.00000 v1.00000 1.00000 dofs  3 5 7 8
+DEAL::Level 2 v0.00000 0.00000 v0.250000 0.00000 v0.00000 0.250000 v0.250000 0.250000 dofs  0 1 2 3
+DEAL::Level 2 v0.250000 0.00000 v0.500000 0.00000 v0.250000 0.250000 v0.500000 0.250000 dofs  1 4 3 5
+DEAL::Level 2 v0.00000 0.250000 v0.250000 0.250000 v0.00000 0.500000 v0.250000 0.500000 dofs  2 3 6 7
+DEAL::Level 2 v0.250000 0.250000 v0.500000 0.250000 v0.250000 0.500000 v0.500000 0.500000 dofs  3 5 7 8
+DEAL::Level 2 v0.500000 0.00000 v0.750000 0.00000 v0.500000 0.250000 v0.750000 0.250000 dofs  4 9 5 10
+DEAL::Level 2 v0.750000 0.00000 v1.00000 0.00000 v0.750000 0.250000 v1.00000 0.250000 dofs  9 11 10 12
+DEAL::Level 2 v0.500000 0.250000 v0.750000 0.250000 v0.500000 0.500000 v0.750000 0.500000 dofs  5 10 8 13
+DEAL::Level 2 v0.750000 0.250000 v1.00000 0.250000 v0.750000 0.500000 v1.00000 0.500000 dofs  10 12 13 14
+DEAL::Level 2 v0.00000 0.500000 v0.250000 0.500000 v0.00000 0.750000 v0.250000 0.750000 dofs  6 7 15 16
+DEAL::Level 2 v0.250000 0.500000 v0.500000 0.500000 v0.250000 0.750000 v0.500000 0.750000 dofs  7 8 16 17
+DEAL::Level 2 v0.00000 0.750000 v0.250000 0.750000 v0.00000 1.00000 v0.250000 1.00000 dofs  15 16 18 19
+DEAL::Level 2 v0.250000 0.750000 v0.500000 0.750000 v0.250000 1.00000 v0.500000 1.00000 dofs  16 17 19 20
+DEAL::Level 2 v0.500000 0.500000 v0.750000 0.500000 v0.500000 0.750000 v0.750000 0.750000 dofs  8 13 17 21
+DEAL::Level 2 v0.750000 0.500000 v1.00000 0.500000 v0.750000 0.750000 v1.00000 0.750000 dofs  13 14 21 22
+DEAL::Level 2 v0.500000 0.750000 v0.750000 0.750000 v0.500000 1.00000 v0.750000 1.00000 dofs  17 21 20 23
+DEAL::Level 2 v0.750000 0.750000 v1.00000 0.750000 v0.750000 1.00000 v1.00000 1.00000 dofs  21 22 23 24
 DEAL::FE_Q<2>(2)
-DEAL::Level 0 v0.00 0.00 v1.00 0.00 v0.00 1.00 v1.00 1.00 dofs  0 1 2 3 4 5 6 7 8
-DEAL::Level 1 v0.00 0.00 v0.500 0.00 v0.00 0.500 v0.500 0.500 dofs  0 1 2 3 4 5 6 7 8
-DEAL::Level 1 v0.500 0.00 v1.00 0.00 v0.500 0.500 v1.00 0.500 dofs  1 9 3 10 5 11 12 13 14
-DEAL::Level 1 v0.00 0.500 v0.500 0.500 v0.00 1.00 v0.500 1.00 dofs  2 3 15 16 17 18 7 19 20
-DEAL::Level 1 v0.500 0.500 v1.00 0.500 v0.500 1.00 v1.00 1.00 dofs  3 10 16 21 18 22 13 23 24
-DEAL::Level 2 v0.00 0.00 v0.250 0.00 v0.00 0.250 v0.250 0.250 dofs  0 1 2 3 4 5 6 7 8
-DEAL::Level 2 v0.250 0.00 v0.500 0.00 v0.250 0.250 v0.500 0.250 dofs  1 9 3 10 5 11 12 13 14
-DEAL::Level 2 v0.00 0.250 v0.250 0.250 v0.00 0.500 v0.250 0.500 dofs  2 3 15 16 17 18 7 19 20
-DEAL::Level 2 v0.250 0.250 v0.500 0.250 v0.250 0.500 v0.500 0.500 dofs  3 10 16 21 18 22 13 23 24
-DEAL::Level 2 v0.500 0.00 v0.750 0.00 v0.500 0.250 v0.750 0.250 dofs  9 25 10 26 11 27 28 29 30
-DEAL::Level 2 v0.750 0.00 v1.00 0.00 v0.750 0.250 v1.00 0.250 dofs  25 31 26 32 27 33 34 35 36
-DEAL::Level 2 v0.500 0.250 v0.750 0.250 v0.500 0.500 v0.750 0.500 dofs  10 26 21 37 22 38 29 39 40
-DEAL::Level 2 v0.750 0.250 v1.00 0.250 v0.750 0.500 v1.00 0.500 dofs  26 32 37 41 38 42 35 43 44
-DEAL::Level 2 v0.00 0.500 v0.250 0.500 v0.00 0.750 v0.250 0.750 dofs  15 16 45 46 47 48 19 49 50
-DEAL::Level 2 v0.250 0.500 v0.500 0.500 v0.250 0.750 v0.500 0.750 dofs  16 21 46 51 48 52 23 53 54
-DEAL::Level 2 v0.00 0.750 v0.250 0.750 v0.00 1.00 v0.250 1.00 dofs  45 46 55 56 57 58 49 59 60
-DEAL::Level 2 v0.250 0.750 v0.500 0.750 v0.250 1.00 v0.500 1.00 dofs  46 51 56 61 58 62 53 63 64
-DEAL::Level 2 v0.500 0.500 v0.750 0.500 v0.500 0.750 v0.750 0.750 dofs  21 37 51 65 52 66 39 67 68
-DEAL::Level 2 v0.750 0.500 v1.00 0.500 v0.750 0.750 v1.00 0.750 dofs  37 41 65 69 66 70 43 71 72
-DEAL::Level 2 v0.500 0.750 v0.750 0.750 v0.500 1.00 v0.750 1.00 dofs  51 65 61 73 62 74 67 75 76
-DEAL::Level 2 v0.750 0.750 v1.00 0.750 v0.750 1.00 v1.00 1.00 dofs  65 69 73 77 74 78 71 79 80
+DEAL::Level 0 v0.00000 0.00000 v1.00000 0.00000 v0.00000 1.00000 v1.00000 1.00000 dofs  0 1 2 3 4 5 6 7 8
+DEAL::Level 1 v0.00000 0.00000 v0.500000 0.00000 v0.00000 0.500000 v0.500000 0.500000 dofs  0 1 2 3 4 5 6 7 8
+DEAL::Level 1 v0.500000 0.00000 v1.00000 0.00000 v0.500000 0.500000 v1.00000 0.500000 dofs  1 9 3 10 5 11 12 13 14
+DEAL::Level 1 v0.00000 0.500000 v0.500000 0.500000 v0.00000 1.00000 v0.500000 1.00000 dofs  2 3 15 16 17 18 7 19 20
+DEAL::Level 1 v0.500000 0.500000 v1.00000 0.500000 v0.500000 1.00000 v1.00000 1.00000 dofs  3 10 16 21 18 22 13 23 24
+DEAL::Level 2 v0.00000 0.00000 v0.250000 0.00000 v0.00000 0.250000 v0.250000 0.250000 dofs  0 1 2 3 4 5 6 7 8
+DEAL::Level 2 v0.250000 0.00000 v0.500000 0.00000 v0.250000 0.250000 v0.500000 0.250000 dofs  1 9 3 10 5 11 12 13 14
+DEAL::Level 2 v0.00000 0.250000 v0.250000 0.250000 v0.00000 0.500000 v0.250000 0.500000 dofs  2 3 15 16 17 18 7 19 20
+DEAL::Level 2 v0.250000 0.250000 v0.500000 0.250000 v0.250000 0.500000 v0.500000 0.500000 dofs  3 10 16 21 18 22 13 23 24
+DEAL::Level 2 v0.500000 0.00000 v0.750000 0.00000 v0.500000 0.250000 v0.750000 0.250000 dofs  9 25 10 26 11 27 28 29 30
+DEAL::Level 2 v0.750000 0.00000 v1.00000 0.00000 v0.750000 0.250000 v1.00000 0.250000 dofs  25 31 26 32 27 33 34 35 36
+DEAL::Level 2 v0.500000 0.250000 v0.750000 0.250000 v0.500000 0.500000 v0.750000 0.500000 dofs  10 26 21 37 22 38 29 39 40
+DEAL::Level 2 v0.750000 0.250000 v1.00000 0.250000 v0.750000 0.500000 v1.00000 0.500000 dofs  26 32 37 41 38 42 35 43 44
+DEAL::Level 2 v0.00000 0.500000 v0.250000 0.500000 v0.00000 0.750000 v0.250000 0.750000 dofs  15 16 45 46 47 48 19 49 50
+DEAL::Level 2 v0.250000 0.500000 v0.500000 0.500000 v0.250000 0.750000 v0.500000 0.750000 dofs  16 21 46 51 48 52 23 53 54
+DEAL::Level 2 v0.00000 0.750000 v0.250000 0.750000 v0.00000 1.00000 v0.250000 1.00000 dofs  45 46 55 56 57 58 49 59 60
+DEAL::Level 2 v0.250000 0.750000 v0.500000 0.750000 v0.250000 1.00000 v0.500000 1.00000 dofs  46 51 56 61 58 62 53 63 64
+DEAL::Level 2 v0.500000 0.500000 v0.750000 0.500000 v0.500000 0.750000 v0.750000 0.750000 dofs  21 37 51 65 52 66 39 67 68
+DEAL::Level 2 v0.750000 0.500000 v1.00000 0.500000 v0.750000 0.750000 v1.00000 0.750000 dofs  37 41 65 69 66 70 43 71 72
+DEAL::Level 2 v0.500000 0.750000 v0.750000 0.750000 v0.500000 1.00000 v0.750000 1.00000 dofs  51 65 61 73 62 74 67 75 76
+DEAL::Level 2 v0.750000 0.750000 v1.00000 0.750000 v0.750000 1.00000 v1.00000 1.00000 dofs  65 69 73 77 74 78 71 79 80
 DEAL::FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(2)]
-DEAL::Level 0 v0.00 0.00 v1.00 0.00 v0.00 1.00 v1.00 1.00 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-DEAL::Level 1 v0.00 0.00 v0.500 0.00 v0.00 0.500 v0.500 0.500 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-DEAL::Level 1 v0.500 0.00 v1.00 0.00 v0.500 0.500 v1.00 0.500 dofs  3 4 5 17 18 19 9 10 11 20 21 22 13 23 24 25 26
-DEAL::Level 1 v0.00 0.500 v0.500 0.500 v0.00 1.00 v0.500 1.00 dofs  6 7 8 9 10 11 27 28 29 30 31 32 33 34 15 35 36
-DEAL::Level 1 v0.500 0.500 v1.00 0.500 v0.500 1.00 v1.00 1.00 dofs  9 10 11 20 21 22 30 31 32 37 38 39 34 40 25 41 42
-DEAL::Level 2 v0.00 0.00 v0.250 0.00 v0.00 0.250 v0.250 0.250 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-DEAL::Level 2 v0.250 0.00 v0.500 0.00 v0.250 0.250 v0.500 0.250 dofs  3 4 5 17 18 19 9 10 11 20 21 22 13 23 24 25 26
-DEAL::Level 2 v0.00 0.250 v0.250 0.250 v0.00 0.500 v0.250 0.500 dofs  6 7 8 9 10 11 27 28 29 30 31 32 33 34 15 35 36
-DEAL::Level 2 v0.250 0.250 v0.500 0.250 v0.250 0.500 v0.500 0.500 dofs  9 10 11 20 21 22 30 31 32 37 38 39 34 40 25 41 42
-DEAL::Level 2 v0.500 0.00 v0.750 0.00 v0.500 0.250 v0.750 0.250 dofs  17 18 19 43 44 45 20 21 22 46 47 48 23 49 50 51 52
-DEAL::Level 2 v0.750 0.00 v1.00 0.00 v0.750 0.250 v1.00 0.250 dofs  43 44 45 53 54 55 46 47 48 56 57 58 49 59 60 61 62
-DEAL::Level 2 v0.500 0.250 v0.750 0.250 v0.500 0.500 v0.750 0.500 dofs  20 21 22 46 47 48 37 38 39 63 64 65 40 66 51 67 68
-DEAL::Level 2 v0.750 0.250 v1.00 0.250 v0.750 0.500 v1.00 0.500 dofs  46 47 48 56 57 58 63 64 65 69 70 71 66 72 61 73 74
-DEAL::Level 2 v0.00 0.500 v0.250 0.500 v0.00 0.750 v0.250 0.750 dofs  27 28 29 30 31 32 75 76 77 78 79 80 81 82 35 83 84
-DEAL::Level 2 v0.250 0.500 v0.500 0.500 v0.250 0.750 v0.500 0.750 dofs  30 31 32 37 38 39 78 79 80 85 86 87 82 88 41 89 90
-DEAL::Level 2 v0.00 0.750 v0.250 0.750 v0.00 1.00 v0.250 1.00 dofs  75 76 77 78 79 80 91 92 93 94 95 96 97 98 83 99 100
-DEAL::Level 2 v0.250 0.750 v0.500 0.750 v0.250 1.00 v0.500 1.00 dofs  78 79 80 85 86 87 94 95 96 101 102 103 98 104 89 105 106
-DEAL::Level 2 v0.500 0.500 v0.750 0.500 v0.500 0.750 v0.750 0.750 dofs  37 38 39 63 64 65 85 86 87 107 108 109 88 110 67 111 112
-DEAL::Level 2 v0.750 0.500 v1.00 0.500 v0.750 0.750 v1.00 0.750 dofs  63 64 65 69 70 71 107 108 109 113 114 115 110 116 73 117 118
-DEAL::Level 2 v0.500 0.750 v0.750 0.750 v0.500 1.00 v0.750 1.00 dofs  85 86 87 107 108 109 101 102 103 119 120 121 104 122 111 123 124
-DEAL::Level 2 v0.750 0.750 v1.00 0.750 v0.750 1.00 v1.00 1.00 dofs  107 108 109 113 114 115 119 120 121 125 126 127 122 128 117 129 130
+DEAL::Level 0 v0.00000 0.00000 v1.00000 0.00000 v0.00000 1.00000 v1.00000 1.00000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+DEAL::Level 1 v0.00000 0.00000 v0.500000 0.00000 v0.00000 0.500000 v0.500000 0.500000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+DEAL::Level 1 v0.500000 0.00000 v1.00000 0.00000 v0.500000 0.500000 v1.00000 0.500000 dofs  3 4 5 17 18 19 9 10 11 20 21 22 13 23 24 25 26
+DEAL::Level 1 v0.00000 0.500000 v0.500000 0.500000 v0.00000 1.00000 v0.500000 1.00000 dofs  6 7 8 9 10 11 27 28 29 30 31 32 33 34 15 35 36
+DEAL::Level 1 v0.500000 0.500000 v1.00000 0.500000 v0.500000 1.00000 v1.00000 1.00000 dofs  9 10 11 20 21 22 30 31 32 37 38 39 34 40 25 41 42
+DEAL::Level 2 v0.00000 0.00000 v0.250000 0.00000 v0.00000 0.250000 v0.250000 0.250000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+DEAL::Level 2 v0.250000 0.00000 v0.500000 0.00000 v0.250000 0.250000 v0.500000 0.250000 dofs  3 4 5 17 18 19 9 10 11 20 21 22 13 23 24 25 26
+DEAL::Level 2 v0.00000 0.250000 v0.250000 0.250000 v0.00000 0.500000 v0.250000 0.500000 dofs  6 7 8 9 10 11 27 28 29 30 31 32 33 34 15 35 36
+DEAL::Level 2 v0.250000 0.250000 v0.500000 0.250000 v0.250000 0.500000 v0.500000 0.500000 dofs  9 10 11 20 21 22 30 31 32 37 38 39 34 40 25 41 42
+DEAL::Level 2 v0.500000 0.00000 v0.750000 0.00000 v0.500000 0.250000 v0.750000 0.250000 dofs  17 18 19 43 44 45 20 21 22 46 47 48 23 49 50 51 52
+DEAL::Level 2 v0.750000 0.00000 v1.00000 0.00000 v0.750000 0.250000 v1.00000 0.250000 dofs  43 44 45 53 54 55 46 47 48 56 57 58 49 59 60 61 62
+DEAL::Level 2 v0.500000 0.250000 v0.750000 0.250000 v0.500000 0.500000 v0.750000 0.500000 dofs  20 21 22 46 47 48 37 38 39 63 64 65 40 66 51 67 68
+DEAL::Level 2 v0.750000 0.250000 v1.00000 0.250000 v0.750000 0.500000 v1.00000 0.500000 dofs  46 47 48 56 57 58 63 64 65 69 70 71 66 72 61 73 74
+DEAL::Level 2 v0.00000 0.500000 v0.250000 0.500000 v0.00000 0.750000 v0.250000 0.750000 dofs  27 28 29 30 31 32 75 76 77 78 79 80 81 82 35 83 84
+DEAL::Level 2 v0.250000 0.500000 v0.500000 0.500000 v0.250000 0.750000 v0.500000 0.750000 dofs  30 31 32 37 38 39 78 79 80 85 86 87 82 88 41 89 90
+DEAL::Level 2 v0.00000 0.750000 v0.250000 0.750000 v0.00000 1.00000 v0.250000 1.00000 dofs  75 76 77 78 79 80 91 92 93 94 95 96 97 98 83 99 100
+DEAL::Level 2 v0.250000 0.750000 v0.500000 0.750000 v0.250000 1.00000 v0.500000 1.00000 dofs  78 79 80 85 86 87 94 95 96 101 102 103 98 104 89 105 106
+DEAL::Level 2 v0.500000 0.500000 v0.750000 0.500000 v0.500000 0.750000 v0.750000 0.750000 dofs  37 38 39 63 64 65 85 86 87 107 108 109 88 110 67 111 112
+DEAL::Level 2 v0.750000 0.500000 v1.00000 0.500000 v0.750000 0.750000 v1.00000 0.750000 dofs  63 64 65 69 70 71 107 108 109 113 114 115 110 116 73 117 118
+DEAL::Level 2 v0.500000 0.750000 v0.750000 0.750000 v0.500000 1.00000 v0.750000 1.00000 dofs  85 86 87 107 108 109 101 102 103 119 120 121 104 122 111 123 124
+DEAL::Level 2 v0.750000 0.750000 v1.00000 0.750000 v0.750000 1.00000 v1.00000 1.00000 dofs  107 108 109 113 114 115 119 120 121 125 126 127 122 128 117 129 130
 DEAL::FE_Q<3>(1)
-DEAL::Level 0 v0.00 0.00 0.00 v1.00 0.00 0.00 v0.00 1.00 0.00 v1.00 1.00 0.00 v0.00 0.00 1.00 v1.00 0.00 1.00 v0.00 1.00 1.00 v1.00 1.00 1.00 dofs  0 1 2 3 4 5 6 7
-DEAL::Level 1 v0.00 0.00 0.00 v0.500 0.00 0.00 v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  0 1 2 3 4 5 6 7
-DEAL::Level 1 v0.500 0.00 0.00 v1.00 0.00 0.00 v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  1 8 3 9 5 10 7 11
-DEAL::Level 1 v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 1.00 0.00 v0.500 1.00 0.00 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  2 3 12 13 6 7 14 15
-DEAL::Level 1 v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 1.00 0.00 v1.00 1.00 0.00 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  3 9 13 16 7 11 15 17
-DEAL::Level 1 v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 0.00 1.00 v0.500 0.00 1.00 v0.00 0.500 1.00 v0.500 0.500 1.00 dofs  4 5 6 7 18 19 20 21
-DEAL::Level 1 v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 0.00 1.00 v1.00 0.00 1.00 v0.500 0.500 1.00 v1.00 0.500 1.00 dofs  5 10 7 11 19 22 21 23
-DEAL::Level 1 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 v0.00 0.500 1.00 v0.500 0.500 1.00 v0.00 1.00 1.00 v0.500 1.00 1.00 dofs  6 7 14 15 20 21 24 25
-DEAL::Level 1 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 v0.500 0.500 1.00 v1.00 0.500 1.00 v0.500 1.00 1.00 v1.00 1.00 1.00 dofs  7 11 15 17 21 23 25 26
-DEAL::Level 2 v0.00 0.00 0.00 v0.250 0.00 0.00 v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  0 1 2 3 4 5 6 7
-DEAL::Level 2 v0.250 0.00 0.00 v0.500 0.00 0.00 v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  1 8 3 9 5 10 7 11
-DEAL::Level 2 v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  2 3 12 13 6 7 14 15
-DEAL::Level 2 v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  3 9 13 16 7 11 15 17
-DEAL::Level 2 v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  4 5 6 7 18 19 20 21
-DEAL::Level 2 v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  5 10 7 11 19 22 21 23
-DEAL::Level 2 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  6 7 14 15 20 21 24 25
-DEAL::Level 2 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  7 11 15 17 21 23 25 26
-DEAL::Level 2 v0.500 0.00 0.00 v0.750 0.00 0.00 v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  8 27 9 28 10 29 11 30
-DEAL::Level 2 v0.750 0.00 0.00 v1.00 0.00 0.00 v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  27 31 28 32 29 33 30 34
-DEAL::Level 2 v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  9 28 16 35 11 30 17 36
-DEAL::Level 2 v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  28 32 35 37 30 34 36 38
-DEAL::Level 2 v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  10 29 11 30 22 39 23 40
-DEAL::Level 2 v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  29 33 30 34 39 41 40 42
-DEAL::Level 2 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  11 30 17 36 23 40 26 43
-DEAL::Level 2 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  30 34 36 38 40 42 43 44
-DEAL::Level 2 v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  12 13 45 46 14 15 47 48
-DEAL::Level 2 v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  13 16 46 49 15 17 48 50
-DEAL::Level 2 v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 1.00 0.00 v0.250 1.00 0.00 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  45 46 51 52 47 48 53 54
-DEAL::Level 2 v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 1.00 0.00 v0.500 1.00 0.00 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  46 49 52 55 48 50 54 56
-DEAL::Level 2 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  14 15 47 48 24 25 57 58
-DEAL::Level 2 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  15 17 48 50 25 26 58 59
-DEAL::Level 2 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  47 48 53 54 57 58 60 61
-DEAL::Level 2 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  48 50 54 56 58 59 61 62
-DEAL::Level 2 v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  16 35 49 63 17 36 50 64
-DEAL::Level 2 v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  35 37 63 65 36 38 64 66
-DEAL::Level 2 v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 1.00 0.00 v0.750 1.00 0.00 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  49 63 55 67 50 64 56 68
-DEAL::Level 2 v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 1.00 0.00 v1.00 1.00 0.00 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  63 65 67 69 64 66 68 70
-DEAL::Level 2 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  17 36 50 64 26 43 59 71
-DEAL::Level 2 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  36 38 64 66 43 44 71 72
-DEAL::Level 2 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  50 64 56 68 59 71 62 73
-DEAL::Level 2 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  64 66 68 70 71 72 73 74
-DEAL::Level 2 v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  18 19 20 21 75 76 77 78
-DEAL::Level 2 v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  19 22 21 23 76 79 78 80
-DEAL::Level 2 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  20 21 24 25 77 78 81 82
-DEAL::Level 2 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  21 23 25 26 78 80 82 83
-DEAL::Level 2 v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.00 1.00 v0.250 0.00 1.00 v0.00 0.250 1.00 v0.250 0.250 1.00 dofs  75 76 77 78 84 85 86 87
-DEAL::Level 2 v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.00 1.00 v0.500 0.00 1.00 v0.250 0.250 1.00 v0.500 0.250 1.00 dofs  76 79 78 80 85 88 87 89
-DEAL::Level 2 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.250 1.00 v0.250 0.250 1.00 v0.00 0.500 1.00 v0.250 0.500 1.00 dofs  77 78 81 82 86 87 90 91
-DEAL::Level 2 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.250 1.00 v0.500 0.250 1.00 v0.250 0.500 1.00 v0.500 0.500 1.00 dofs  78 80 82 83 87 89 91 92
-DEAL::Level 2 v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  22 39 23 40 79 93 80 94
-DEAL::Level 2 v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  39 41 40 42 93 95 94 96
-DEAL::Level 2 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  23 40 26 43 80 94 83 97
-DEAL::Level 2 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  40 42 43 44 94 96 97 98
-DEAL::Level 2 v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.00 1.00 v0.750 0.00 1.00 v0.500 0.250 1.00 v0.750 0.250 1.00 dofs  79 93 80 94 88 99 89 100
-DEAL::Level 2 v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.00 1.00 v1.00 0.00 1.00 v0.750 0.250 1.00 v1.00 0.250 1.00 dofs  93 95 94 96 99 101 100 102
-DEAL::Level 2 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.250 1.00 v0.750 0.250 1.00 v0.500 0.500 1.00 v0.750 0.500 1.00 dofs  80 94 83 97 89 100 92 103
-DEAL::Level 2 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.250 1.00 v1.00 0.250 1.00 v0.750 0.500 1.00 v1.00 0.500 1.00 dofs  94 96 97 98 100 102 103 104
-DEAL::Level 2 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  24 25 57 58 81 82 105 106
-DEAL::Level 2 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  25 26 58 59 82 83 106 107
-DEAL::Level 2 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  57 58 60 61 105 106 108 109
-DEAL::Level 2 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  58 59 61 62 106 107 109 110
-DEAL::Level 2 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 0.500 1.00 v0.250 0.500 1.00 v0.00 0.750 1.00 v0.250 0.750 1.00 dofs  81 82 105 106 90 91 111 112
-DEAL::Level 2 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 0.500 1.00 v0.500 0.500 1.00 v0.250 0.750 1.00 v0.500 0.750 1.00 dofs  82 83 106 107 91 92 112 113
-DEAL::Level 2 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 v0.00 0.750 1.00 v0.250 0.750 1.00 v0.00 1.00 1.00 v0.250 1.00 1.00 dofs  105 106 108 109 111 112 114 115
-DEAL::Level 2 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 v0.250 0.750 1.00 v0.500 0.750 1.00 v0.250 1.00 1.00 v0.500 1.00 1.00 dofs  106 107 109 110 112 113 115 116
-DEAL::Level 2 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  26 43 59 71 83 97 107 117
-DEAL::Level 2 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  43 44 71 72 97 98 117 118
-DEAL::Level 2 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  59 71 62 73 107 117 110 119
-DEAL::Level 2 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  71 72 73 74 117 118 119 120
-DEAL::Level 2 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 0.500 1.00 v0.750 0.500 1.00 v0.500 0.750 1.00 v0.750 0.750 1.00 dofs  83 97 107 117 92 103 113 121
-DEAL::Level 2 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 0.500 1.00 v1.00 0.500 1.00 v0.750 0.750 1.00 v1.00 0.750 1.00 dofs  97 98 117 118 103 104 121 122
-DEAL::Level 2 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 v0.500 0.750 1.00 v0.750 0.750 1.00 v0.500 1.00 1.00 v0.750 1.00 1.00 dofs  107 117 110 119 113 121 116 123
-DEAL::Level 2 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 v0.750 0.750 1.00 v1.00 0.750 1.00 v0.750 1.00 1.00 v1.00 1.00 1.00 dofs  117 118 119 120 121 122 123 124
+DEAL::Level 0 v0.00000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.00000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  0 1 2 3 4 5 6 7
+DEAL::Level 1 v0.00000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  0 1 2 3 4 5 6 7
+DEAL::Level 1 v0.500000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  1 8 3 9 5 10 7 11
+DEAL::Level 1 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.500000 1.00000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  2 3 12 13 6 7 14 15
+DEAL::Level 1 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  3 9 13 16 7 11 15 17
+DEAL::Level 1 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  4 5 6 7 18 19 20 21
+DEAL::Level 1 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  5 10 7 11 19 22 21 23
+DEAL::Level 1 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.00000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  6 7 14 15 20 21 24 25
+DEAL::Level 1 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.500000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  7 11 15 17 21 23 25 26
+DEAL::Level 2 v0.00000 0.00000 0.00000 v0.250000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  0 1 2 3 4 5 6 7
+DEAL::Level 2 v0.250000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  1 8 3 9 5 10 7 11
+DEAL::Level 2 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  2 3 12 13 6 7 14 15
+DEAL::Level 2 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  3 9 13 16 7 11 15 17
+DEAL::Level 2 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  4 5 6 7 18 19 20 21
+DEAL::Level 2 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  5 10 7 11 19 22 21 23
+DEAL::Level 2 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  6 7 14 15 20 21 24 25
+DEAL::Level 2 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  7 11 15 17 21 23 25 26
+DEAL::Level 2 v0.500000 0.00000 0.00000 v0.750000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  8 27 9 28 10 29 11 30
+DEAL::Level 2 v0.750000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  27 31 28 32 29 33 30 34
+DEAL::Level 2 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  9 28 16 35 11 30 17 36
+DEAL::Level 2 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  28 32 35 37 30 34 36 38
+DEAL::Level 2 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  10 29 11 30 22 39 23 40
+DEAL::Level 2 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  29 33 30 34 39 41 40 42
+DEAL::Level 2 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  11 30 17 36 23 40 26 43
+DEAL::Level 2 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  30 34 36 38 40 42 43 44
+DEAL::Level 2 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  12 13 45 46 14 15 47 48
+DEAL::Level 2 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  13 16 46 49 15 17 48 50
+DEAL::Level 2 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.250000 1.00000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  45 46 51 52 47 48 53 54
+DEAL::Level 2 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.500000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  46 49 52 55 48 50 54 56
+DEAL::Level 2 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  14 15 47 48 24 25 57 58
+DEAL::Level 2 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  15 17 48 50 25 26 58 59
+DEAL::Level 2 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  47 48 53 54 57 58 60 61
+DEAL::Level 2 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  48 50 54 56 58 59 61 62
+DEAL::Level 2 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  16 35 49 63 17 36 50 64
+DEAL::Level 2 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  35 37 63 65 36 38 64 66
+DEAL::Level 2 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.750000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  49 63 55 67 50 64 56 68
+DEAL::Level 2 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  63 65 67 69 64 66 68 70
+DEAL::Level 2 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  17 36 50 64 26 43 59 71
+DEAL::Level 2 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  36 38 64 66 43 44 71 72
+DEAL::Level 2 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  50 64 56 68 59 71 62 73
+DEAL::Level 2 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  64 66 68 70 71 72 73 74
+DEAL::Level 2 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  18 19 20 21 75 76 77 78
+DEAL::Level 2 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  19 22 21 23 76 79 78 80
+DEAL::Level 2 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  20 21 24 25 77 78 81 82
+DEAL::Level 2 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  21 23 25 26 78 80 82 83
+DEAL::Level 2 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.00000 1.00000 v0.250000 0.00000 1.00000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 dofs  75 76 77 78 84 85 86 87
+DEAL::Level 2 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 dofs  76 79 78 80 85 88 87 89
+DEAL::Level 2 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 dofs  77 78 81 82 86 87 90 91
+DEAL::Level 2 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  78 80 82 83 87 89 91 92
+DEAL::Level 2 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  22 39 23 40 79 93 80 94
+DEAL::Level 2 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  39 41 40 42 93 95 94 96
+DEAL::Level 2 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  23 40 26 43 80 94 83 97
+DEAL::Level 2 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  40 42 43 44 94 96 97 98
+DEAL::Level 2 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.750000 0.00000 1.00000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 dofs  79 93 80 94 88 99 89 100
+DEAL::Level 2 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 dofs  93 95 94 96 99 101 100 102
+DEAL::Level 2 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 dofs  80 94 83 97 89 100 92 103
+DEAL::Level 2 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  94 96 97 98 100 102 103 104
+DEAL::Level 2 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  24 25 57 58 81 82 105 106
+DEAL::Level 2 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  25 26 58 59 82 83 106 107
+DEAL::Level 2 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  57 58 60 61 105 106 108 109
+DEAL::Level 2 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  58 59 61 62 106 107 109 110
+DEAL::Level 2 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 dofs  81 82 105 106 90 91 111 112
+DEAL::Level 2 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 dofs  82 83 106 107 91 92 112 113
+DEAL::Level 2 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 v0.00000 1.00000 1.00000 v0.250000 1.00000 1.00000 dofs  105 106 108 109 111 112 114 115
+DEAL::Level 2 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 v0.250000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  106 107 109 110 112 113 115 116
+DEAL::Level 2 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  26 43 59 71 83 97 107 117
+DEAL::Level 2 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  43 44 71 72 97 98 117 118
+DEAL::Level 2 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  59 71 62 73 107 117 110 119
+DEAL::Level 2 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  71 72 73 74 117 118 119 120
+DEAL::Level 2 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 dofs  83 97 107 117 92 103 113 121
+DEAL::Level 2 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 dofs  97 98 117 118 103 104 121 122
+DEAL::Level 2 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 v0.500000 1.00000 1.00000 v0.750000 1.00000 1.00000 dofs  107 117 110 119 113 121 116 123
+DEAL::Level 2 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 v0.750000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  117 118 119 120 121 122 123 124
 DEAL::FE_Q<3>(2)
-DEAL::Level 0 v0.00 0.00 0.00 v1.00 0.00 0.00 v0.00 1.00 0.00 v1.00 1.00 0.00 v0.00 0.00 1.00 v1.00 0.00 1.00 v0.00 1.00 1.00 v1.00 1.00 1.00 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-DEAL::Level 1 v0.00 0.00 0.00 v0.500 0.00 0.00 v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-DEAL::Level 1 v0.500 0.00 0.00 v1.00 0.00 0.00 v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44
-DEAL::Level 1 v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 1.00 0.00 v0.500 1.00 0.00 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62
-DEAL::Level 1 v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 1.00 0.00 v1.00 1.00 0.00 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74
-DEAL::Level 1 v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 0.00 1.00 v0.500 0.00 1.00 v0.00 0.500 1.00 v0.500 0.500 1.00 dofs  4 5 6 7 75 76 77 78 12 13 14 15 79 80 81 82 83 84 85 86 87 88 89 90 25 91 92
-DEAL::Level 1 v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 0.00 1.00 v1.00 0.00 1.00 v0.500 0.500 1.00 v1.00 0.500 1.00 dofs  5 29 7 30 76 93 78 94 13 34 35 36 80 95 96 97 84 98 86 99 88 100 101 102 43 103 104
-DEAL::Level 1 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 v0.00 0.500 1.00 v0.500 0.500 1.00 v0.00 1.00 1.00 v0.500 1.00 1.00 dofs  6 7 47 48 77 78 105 106 52 53 15 54 107 108 82 109 85 86 110 111 112 113 90 114 61 115 116
-DEAL::Level 1 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 v0.500 0.500 1.00 v1.00 0.500 1.00 v0.500 1.00 1.00 v1.00 1.00 1.00 dofs  7 30 48 64 78 94 106 117 53 67 36 68 108 118 97 119 86 99 111 120 113 121 102 122 73 123 124
-DEAL::Level 2 v0.00 0.00 0.00 v0.250 0.00 0.00 v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-DEAL::Level 2 v0.250 0.00 0.00 v0.500 0.00 0.00 v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44
-DEAL::Level 2 v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62
-DEAL::Level 2 v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74
-DEAL::Level 2 v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  4 5 6 7 75 76 77 78 12 13 14 15 79 80 81 82 83 84 85 86 87 88 89 90 25 91 92
-DEAL::Level 2 v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  5 29 7 30 76 93 78 94 13 34 35 36 80 95 96 97 84 98 86 99 88 100 101 102 43 103 104
-DEAL::Level 2 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  6 7 47 48 77 78 105 106 52 53 15 54 107 108 82 109 85 86 110 111 112 113 90 114 61 115 116
-DEAL::Level 2 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  7 30 48 64 78 94 106 117 53 67 36 68 108 118 97 119 86 99 111 120 113 121 102 122 73 123 124
-DEAL::Level 2 v0.500 0.00 0.00 v0.750 0.00 0.00 v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  27 125 28 126 29 127 30 128 31 129 130 131 34 132 133 134 37 135 38 136 39 137 138 139 140 141 142
-DEAL::Level 2 v0.750 0.00 0.00 v1.00 0.00 0.00 v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  125 143 126 144 127 145 128 146 129 147 148 149 132 150 151 152 135 153 136 154 137 155 156 157 158 159 160
-DEAL::Level 2 v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  28 126 63 161 30 128 64 162 65 163 131 164 67 165 134 166 38 136 69 167 70 168 139 169 170 171 172
-DEAL::Level 2 v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  126 144 161 173 128 146 162 174 163 175 149 176 165 177 152 178 136 154 167 179 168 180 157 181 182 183 184
-DEAL::Level 2 v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  29 127 30 128 93 185 94 186 34 132 133 134 95 187 188 189 98 190 99 191 100 192 193 194 141 195 196
-DEAL::Level 2 v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  127 145 128 146 185 197 186 198 132 150 151 152 187 199 200 201 190 202 191 203 192 204 205 206 159 207 208
-DEAL::Level 2 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  30 128 64 162 94 186 117 209 67 165 134 166 118 210 189 211 99 191 120 212 121 213 194 214 171 215 216
-DEAL::Level 2 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  128 146 162 174 186 198 209 217 165 177 152 178 210 218 201 219 191 203 212 220 213 221 206 222 183 223 224
-DEAL::Level 2 v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  45 46 225 226 47 48 227 228 229 230 51 231 232 233 54 234 55 56 235 236 237 238 59 239 240 241 242
-DEAL::Level 2 v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  46 63 226 243 48 64 228 244 230 245 66 246 233 247 68 248 56 69 236 249 238 250 71 251 252 253 254
-DEAL::Level 2 v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 1.00 0.00 v0.250 1.00 0.00 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  225 226 255 256 227 228 257 258 259 260 231 261 262 263 234 264 235 236 265 266 267 268 239 269 270 271 272
-DEAL::Level 2 v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 1.00 0.00 v0.500 1.00 0.00 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  226 243 256 273 228 244 258 274 260 275 246 276 263 277 248 278 236 249 266 279 268 280 251 281 282 283 284
-DEAL::Level 2 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  47 48 227 228 105 106 285 286 232 233 54 234 287 288 109 289 110 111 290 291 292 293 114 294 241 295 296
-DEAL::Level 2 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  48 64 228 244 106 117 286 297 233 247 68 248 288 298 119 299 111 120 291 300 293 301 122 302 253 303 304
-DEAL::Level 2 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  227 228 257 258 285 286 305 306 262 263 234 264 307 308 289 309 290 291 310 311 312 313 294 314 271 315 316
-DEAL::Level 2 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  228 244 258 274 286 297 306 317 263 277 248 278 308 318 299 319 291 300 311 320 313 321 302 322 283 323 324
-DEAL::Level 2 v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  63 161 243 325 64 162 244 326 245 327 164 328 247 329 166 330 69 167 249 331 250 332 169 333 334 335 336
-DEAL::Level 2 v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  161 173 325 337 162 174 326 338 327 339 176 340 329 341 178 342 167 179 331 343 332 344 181 345 346 347 348
-DEAL::Level 2 v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 1.00 0.00 v0.750 1.00 0.00 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  243 325 273 349 244 326 274 350 275 351 328 352 277 353 330 354 249 331 279 355 280 356 333 357 358 359 360
-DEAL::Level 2 v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 1.00 0.00 v1.00 1.00 0.00 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  325 337 349 361 326 338 350 362 351 363 340 364 353 365 342 366 331 343 355 367 356 368 345 369 370 371 372
-DEAL::Level 2 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  64 162 244 326 117 209 297 373 247 329 166 330 298 374 211 375 120 212 300 376 301 377 214 378 335 379 380
-DEAL::Level 2 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  162 174 326 338 209 217 373 381 329 341 178 342 374 382 219 383 212 220 376 384 377 385 222 386 347 387 388
-DEAL::Level 2 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  244 326 274 350 297 373 317 389 277 353 330 354 318 390 375 391 300 376 320 392 321 393 378 394 359 395 396
-DEAL::Level 2 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  326 338 350 362 373 381 389 397 353 365 342 366 390 398 383 399 376 384 392 400 393 401 386 402 371 403 404
-DEAL::Level 2 v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  75 76 77 78 405 406 407 408 79 80 81 82 409 410 411 412 413 414 415 416 417 418 419 420 91 421 422
-DEAL::Level 2 v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  76 93 78 94 406 423 408 424 80 95 96 97 410 425 426 427 414 428 416 429 418 430 431 432 103 433 434
-DEAL::Level 2 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  77 78 105 106 407 408 435 436 107 108 82 109 437 438 412 439 415 416 440 441 442 443 420 444 115 445 446
-DEAL::Level 2 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  78 94 106 117 408 424 436 447 108 118 97 119 438 448 427 449 416 429 441 450 443 451 432 452 123 453 454
-DEAL::Level 2 v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.00 1.00 v0.250 0.00 1.00 v0.00 0.250 1.00 v0.250 0.250 1.00 dofs  405 406 407 408 455 456 457 458 409 410 411 412 459 460 461 462 463 464 465 466 467 468 469 470 421 471 472
-DEAL::Level 2 v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.00 1.00 v0.500 0.00 1.00 v0.250 0.250 1.00 v0.500 0.250 1.00 dofs  406 423 408 424 456 473 458 474 410 425 426 427 460 475 476 477 464 478 466 479 468 480 481 482 433 483 484
-DEAL::Level 2 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.250 1.00 v0.250 0.250 1.00 v0.00 0.500 1.00 v0.250 0.500 1.00 dofs  407 408 435 436 457 458 485 486 437 438 412 439 487 488 462 489 465 466 490 491 492 493 470 494 445 495 496
-DEAL::Level 2 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.250 1.00 v0.500 0.250 1.00 v0.250 0.500 1.00 v0.500 0.500 1.00 dofs  408 424 436 447 458 474 486 497 438 448 427 449 488 498 477 499 466 479 491 500 493 501 482 502 453 503 504
-DEAL::Level 2 v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  93 185 94 186 423 505 424 506 95 187 188 189 425 507 508 509 428 510 429 511 430 512 513 514 195 515 516
-DEAL::Level 2 v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  185 197 186 198 505 517 506 518 187 199 200 201 507 519 520 521 510 522 511 523 512 524 525 526 207 527 528
-DEAL::Level 2 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  94 186 117 209 424 506 447 529 118 210 189 211 448 530 509 531 429 511 450 532 451 533 514 534 215 535 536
-DEAL::Level 2 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  186 198 209 217 506 518 529 537 210 218 201 219 530 538 521 539 511 523 532 540 533 541 526 542 223 543 544
-DEAL::Level 2 v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.00 1.00 v0.750 0.00 1.00 v0.500 0.250 1.00 v0.750 0.250 1.00 dofs  423 505 424 506 473 545 474 546 425 507 508 509 475 547 548 549 478 550 479 551 480 552 553 554 515 555 556
-DEAL::Level 2 v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.00 1.00 v1.00 0.00 1.00 v0.750 0.250 1.00 v1.00 0.250 1.00 dofs  505 517 506 518 545 557 546 558 507 519 520 521 547 559 560 561 550 562 551 563 552 564 565 566 527 567 568
-DEAL::Level 2 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.250 1.00 v0.750 0.250 1.00 v0.500 0.500 1.00 v0.750 0.500 1.00 dofs  424 506 447 529 474 546 497 569 448 530 509 531 498 570 549 571 479 551 500 572 501 573 554 574 535 575 576
-DEAL::Level 2 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.250 1.00 v1.00 0.250 1.00 v0.750 0.500 1.00 v1.00 0.500 1.00 dofs  506 518 529 537 546 558 569 577 530 538 521 539 570 578 561 579 551 563 572 580 573 581 566 582 543 583 584
-DEAL::Level 2 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  105 106 285 286 435 436 585 586 287 288 109 289 587 588 439 589 440 441 590 591 592 593 444 594 295 595 596
-DEAL::Level 2 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  106 117 286 297 436 447 586 597 288 298 119 299 588 598 449 599 441 450 591 600 593 601 452 602 303 603 604
-DEAL::Level 2 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  285 286 305 306 585 586 605 606 307 308 289 309 607 608 589 609 590 591 610 611 612 613 594 614 315 615 616
-DEAL::Level 2 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  286 297 306 317 586 597 606 617 308 318 299 319 608 618 599 619 591 600 611 620 613 621 602 622 323 623 624
-DEAL::Level 2 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 0.500 1.00 v0.250 0.500 1.00 v0.00 0.750 1.00 v0.250 0.750 1.00 dofs  435 436 585 586 485 486 625 626 587 588 439 589 627 628 489 629 490 491 630 631 632 633 494 634 595 635 636
-DEAL::Level 2 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 0.500 1.00 v0.500 0.500 1.00 v0.250 0.750 1.00 v0.500 0.750 1.00 dofs  436 447 586 597 486 497 626 637 588 598 449 599 628 638 499 639 491 500 631 640 633 641 502 642 603 643 644
-DEAL::Level 2 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 v0.00 0.750 1.00 v0.250 0.750 1.00 v0.00 1.00 1.00 v0.250 1.00 1.00 dofs  585 586 605 606 625 626 645 646 607 608 589 609 647 648 629 649 630 631 650 651 652 653 634 654 615 655 656
-DEAL::Level 2 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 v0.250 0.750 1.00 v0.500 0.750 1.00 v0.250 1.00 1.00 v0.500 1.00 1.00 dofs  586 597 606 617 626 637 646 657 608 618 599 619 648 658 639 659 631 640 651 660 653 661 642 662 623 663 664
-DEAL::Level 2 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  117 209 297 373 447 529 597 665 298 374 211 375 598 666 531 667 450 532 600 668 601 669 534 670 379 671 672
-DEAL::Level 2 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  209 217 373 381 529 537 665 673 374 382 219 383 666 674 539 675 532 540 668 676 669 677 542 678 387 679 680
-DEAL::Level 2 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  297 373 317 389 597 665 617 681 318 390 375 391 618 682 667 683 600 668 620 684 621 685 670 686 395 687 688
-DEAL::Level 2 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  373 381 389 397 665 673 681 689 390 398 383 399 682 690 675 691 668 676 684 692 685 693 678 694 403 695 696
-DEAL::Level 2 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 0.500 1.00 v0.750 0.500 1.00 v0.500 0.750 1.00 v0.750 0.750 1.00 dofs  447 529 597 665 497 569 637 697 598 666 531 667 638 698 571 699 500 572 640 700 641 701 574 702 671 703 704
-DEAL::Level 2 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 0.500 1.00 v1.00 0.500 1.00 v0.750 0.750 1.00 v1.00 0.750 1.00 dofs  529 537 665 673 569 577 697 705 666 674 539 675 698 706 579 707 572 580 700 708 701 709 582 710 679 711 712
-DEAL::Level 2 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 v0.500 0.750 1.00 v0.750 0.750 1.00 v0.500 1.00 1.00 v0.750 1.00 1.00 dofs  597 665 617 681 637 697 657 713 618 682 667 683 658 714 699 715 640 700 660 716 661 717 702 718 687 719 720
-DEAL::Level 2 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 v0.750 0.750 1.00 v1.00 0.750 1.00 v0.750 1.00 1.00 v1.00 1.00 1.00 dofs  665 673 681 689 697 705 713 721 682 690 675 691 714 722 707 723 700 708 716 724 717 725 710 726 695 727 728
+DEAL::Level 0 v0.00000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.00000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+DEAL::Level 1 v0.00000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+DEAL::Level 1 v0.500000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44
+DEAL::Level 1 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.500000 1.00000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62
+DEAL::Level 1 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74
+DEAL::Level 1 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  4 5 6 7 75 76 77 78 12 13 14 15 79 80 81 82 83 84 85 86 87 88 89 90 25 91 92
+DEAL::Level 1 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  5 29 7 30 76 93 78 94 13 34 35 36 80 95 96 97 84 98 86 99 88 100 101 102 43 103 104
+DEAL::Level 1 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.00000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  6 7 47 48 77 78 105 106 52 53 15 54 107 108 82 109 85 86 110 111 112 113 90 114 61 115 116
+DEAL::Level 1 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.500000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  7 30 48 64 78 94 106 117 53 67 36 68 108 118 97 119 86 99 111 120 113 121 102 122 73 123 124
+DEAL::Level 2 v0.00000 0.00000 0.00000 v0.250000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+DEAL::Level 2 v0.250000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44
+DEAL::Level 2 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62
+DEAL::Level 2 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74
+DEAL::Level 2 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  4 5 6 7 75 76 77 78 12 13 14 15 79 80 81 82 83 84 85 86 87 88 89 90 25 91 92
+DEAL::Level 2 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  5 29 7 30 76 93 78 94 13 34 35 36 80 95 96 97 84 98 86 99 88 100 101 102 43 103 104
+DEAL::Level 2 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  6 7 47 48 77 78 105 106 52 53 15 54 107 108 82 109 85 86 110 111 112 113 90 114 61 115 116
+DEAL::Level 2 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  7 30 48 64 78 94 106 117 53 67 36 68 108 118 97 119 86 99 111 120 113 121 102 122 73 123 124
+DEAL::Level 2 v0.500000 0.00000 0.00000 v0.750000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  27 125 28 126 29 127 30 128 31 129 130 131 34 132 133 134 37 135 38 136 39 137 138 139 140 141 142
+DEAL::Level 2 v0.750000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  125 143 126 144 127 145 128 146 129 147 148 149 132 150 151 152 135 153 136 154 137 155 156 157 158 159 160
+DEAL::Level 2 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  28 126 63 161 30 128 64 162 65 163 131 164 67 165 134 166 38 136 69 167 70 168 139 169 170 171 172
+DEAL::Level 2 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  126 144 161 173 128 146 162 174 163 175 149 176 165 177 152 178 136 154 167 179 168 180 157 181 182 183 184
+DEAL::Level 2 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  29 127 30 128 93 185 94 186 34 132 133 134 95 187 188 189 98 190 99 191 100 192 193 194 141 195 196
+DEAL::Level 2 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  127 145 128 146 185 197 186 198 132 150 151 152 187 199 200 201 190 202 191 203 192 204 205 206 159 207 208
+DEAL::Level 2 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  30 128 64 162 94 186 117 209 67 165 134 166 118 210 189 211 99 191 120 212 121 213 194 214 171 215 216
+DEAL::Level 2 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  128 146 162 174 186 198 209 217 165 177 152 178 210 218 201 219 191 203 212 220 213 221 206 222 183 223 224
+DEAL::Level 2 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  45 46 225 226 47 48 227 228 229 230 51 231 232 233 54 234 55 56 235 236 237 238 59 239 240 241 242
+DEAL::Level 2 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  46 63 226 243 48 64 228 244 230 245 66 246 233 247 68 248 56 69 236 249 238 250 71 251 252 253 254
+DEAL::Level 2 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.250000 1.00000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  225 226 255 256 227 228 257 258 259 260 231 261 262 263 234 264 235 236 265 266 267 268 239 269 270 271 272
+DEAL::Level 2 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.500000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  226 243 256 273 228 244 258 274 260 275 246 276 263 277 248 278 236 249 266 279 268 280 251 281 282 283 284
+DEAL::Level 2 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  47 48 227 228 105 106 285 286 232 233 54 234 287 288 109 289 110 111 290 291 292 293 114 294 241 295 296
+DEAL::Level 2 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  48 64 228 244 106 117 286 297 233 247 68 248 288 298 119 299 111 120 291 300 293 301 122 302 253 303 304
+DEAL::Level 2 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  227 228 257 258 285 286 305 306 262 263 234 264 307 308 289 309 290 291 310 311 312 313 294 314 271 315 316
+DEAL::Level 2 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  228 244 258 274 286 297 306 317 263 277 248 278 308 318 299 319 291 300 311 320 313 321 302 322 283 323 324
+DEAL::Level 2 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  63 161 243 325 64 162 244 326 245 327 164 328 247 329 166 330 69 167 249 331 250 332 169 333 334 335 336
+DEAL::Level 2 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  161 173 325 337 162 174 326 338 327 339 176 340 329 341 178 342 167 179 331 343 332 344 181 345 346 347 348
+DEAL::Level 2 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.750000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  243 325 273 349 244 326 274 350 275 351 328 352 277 353 330 354 249 331 279 355 280 356 333 357 358 359 360
+DEAL::Level 2 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  325 337 349 361 326 338 350 362 351 363 340 364 353 365 342 366 331 343 355 367 356 368 345 369 370 371 372
+DEAL::Level 2 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  64 162 244 326 117 209 297 373 247 329 166 330 298 374 211 375 120 212 300 376 301 377 214 378 335 379 380
+DEAL::Level 2 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  162 174 326 338 209 217 373 381 329 341 178 342 374 382 219 383 212 220 376 384 377 385 222 386 347 387 388
+DEAL::Level 2 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  244 326 274 350 297 373 317 389 277 353 330 354 318 390 375 391 300 376 320 392 321 393 378 394 359 395 396
+DEAL::Level 2 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  326 338 350 362 373 381 389 397 353 365 342 366 390 398 383 399 376 384 392 400 393 401 386 402 371 403 404
+DEAL::Level 2 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  75 76 77 78 405 406 407 408 79 80 81 82 409 410 411 412 413 414 415 416 417 418 419 420 91 421 422
+DEAL::Level 2 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  76 93 78 94 406 423 408 424 80 95 96 97 410 425 426 427 414 428 416 429 418 430 431 432 103 433 434
+DEAL::Level 2 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  77 78 105 106 407 408 435 436 107 108 82 109 437 438 412 439 415 416 440 441 442 443 420 444 115 445 446
+DEAL::Level 2 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  78 94 106 117 408 424 436 447 108 118 97 119 438 448 427 449 416 429 441 450 443 451 432 452 123 453 454
+DEAL::Level 2 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.00000 1.00000 v0.250000 0.00000 1.00000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 dofs  405 406 407 408 455 456 457 458 409 410 411 412 459 460 461 462 463 464 465 466 467 468 469 470 421 471 472
+DEAL::Level 2 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 dofs  406 423 408 424 456 473 458 474 410 425 426 427 460 475 476 477 464 478 466 479 468 480 481 482 433 483 484
+DEAL::Level 2 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 dofs  407 408 435 436 457 458 485 486 437 438 412 439 487 488 462 489 465 466 490 491 492 493 470 494 445 495 496
+DEAL::Level 2 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  408 424 436 447 458 474 486 497 438 448 427 449 488 498 477 499 466 479 491 500 493 501 482 502 453 503 504
+DEAL::Level 2 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  93 185 94 186 423 505 424 506 95 187 188 189 425 507 508 509 428 510 429 511 430 512 513 514 195 515 516
+DEAL::Level 2 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  185 197 186 198 505 517 506 518 187 199 200 201 507 519 520 521 510 522 511 523 512 524 525 526 207 527 528
+DEAL::Level 2 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  94 186 117 209 424 506 447 529 118 210 189 211 448 530 509 531 429 511 450 532 451 533 514 534 215 535 536
+DEAL::Level 2 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  186 198 209 217 506 518 529 537 210 218 201 219 530 538 521 539 511 523 532 540 533 541 526 542 223 543 544
+DEAL::Level 2 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.750000 0.00000 1.00000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 dofs  423 505 424 506 473 545 474 546 425 507 508 509 475 547 548 549 478 550 479 551 480 552 553 554 515 555 556
+DEAL::Level 2 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 dofs  505 517 506 518 545 557 546 558 507 519 520 521 547 559 560 561 550 562 551 563 552 564 565 566 527 567 568
+DEAL::Level 2 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 dofs  424 506 447 529 474 546 497 569 448 530 509 531 498 570 549 571 479 551 500 572 501 573 554 574 535 575 576
+DEAL::Level 2 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  506 518 529 537 546 558 569 577 530 538 521 539 570 578 561 579 551 563 572 580 573 581 566 582 543 583 584
+DEAL::Level 2 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  105 106 285 286 435 436 585 586 287 288 109 289 587 588 439 589 440 441 590 591 592 593 444 594 295 595 596
+DEAL::Level 2 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  106 117 286 297 436 447 586 597 288 298 119 299 588 598 449 599 441 450 591 600 593 601 452 602 303 603 604
+DEAL::Level 2 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  285 286 305 306 585 586 605 606 307 308 289 309 607 608 589 609 590 591 610 611 612 613 594 614 315 615 616
+DEAL::Level 2 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  286 297 306 317 586 597 606 617 308 318 299 319 608 618 599 619 591 600 611 620 613 621 602 622 323 623 624
+DEAL::Level 2 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 dofs  435 436 585 586 485 486 625 626 587 588 439 589 627 628 489 629 490 491 630 631 632 633 494 634 595 635 636
+DEAL::Level 2 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 dofs  436 447 586 597 486 497 626 637 588 598 449 599 628 638 499 639 491 500 631 640 633 641 502 642 603 643 644
+DEAL::Level 2 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 v0.00000 1.00000 1.00000 v0.250000 1.00000 1.00000 dofs  585 586 605 606 625 626 645 646 607 608 589 609 647 648 629 649 630 631 650 651 652 653 634 654 615 655 656
+DEAL::Level 2 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 v0.250000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  586 597 606 617 626 637 646 657 608 618 599 619 648 658 639 659 631 640 651 660 653 661 642 662 623 663 664
+DEAL::Level 2 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  117 209 297 373 447 529 597 665 298 374 211 375 598 666 531 667 450 532 600 668 601 669 534 670 379 671 672
+DEAL::Level 2 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  209 217 373 381 529 537 665 673 374 382 219 383 666 674 539 675 532 540 668 676 669 677 542 678 387 679 680
+DEAL::Level 2 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  297 373 317 389 597 665 617 681 318 390 375 391 618 682 667 683 600 668 620 684 621 685 670 686 395 687 688
+DEAL::Level 2 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  373 381 389 397 665 673 681 689 390 398 383 399 682 690 675 691 668 676 684 692 685 693 678 694 403 695 696
+DEAL::Level 2 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 dofs  447 529 597 665 497 569 637 697 598 666 531 667 638 698 571 699 500 572 640 700 641 701 574 702 671 703 704
+DEAL::Level 2 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 dofs  529 537 665 673 569 577 697 705 666 674 539 675 698 706 579 707 572 580 700 708 701 709 582 710 679 711 712
+DEAL::Level 2 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 v0.500000 1.00000 1.00000 v0.750000 1.00000 1.00000 dofs  597 665 617 681 637 697 657 713 618 682 667 683 658 714 699 715 640 700 660 716 661 717 702 718 687 719 720
+DEAL::Level 2 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 v0.750000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  665 673 681 689 697 705 713 721 682 690 675 691 714 722 707 723 700 708 716 724 717 725 710 726 695 727 728
 DEAL::FESystem<3>[FE_Q<3>(1)^2-FE_Q<3>(2)]
-DEAL::Level 0 v0.00 0.00 0.00 v1.00 0.00 0.00 v0.00 1.00 0.00 v1.00 1.00 0.00 v0.00 0.00 1.00 v1.00 0.00 1.00 v0.00 1.00 1.00 v1.00 1.00 1.00 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
-DEAL::Level 1 v0.00 0.00 0.00 v0.500 0.00 0.00 v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
-DEAL::Level 1 v0.500 0.00 0.00 v1.00 0.00 0.00 v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  3 4 5 43 44 45 9 10 11 46 47 48 15 16 17 49 50 51 21 22 23 52 53 54 25 55 56 57 29 58 59 60 33 61 35 62 37 63 64 65 66 67 68
-DEAL::Level 1 v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 1.00 0.00 v0.500 1.00 0.00 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  6 7 8 9 10 11 69 70 71 72 73 74 18 19 20 21 22 23 75 76 77 78 79 80 81 82 27 83 84 85 31 86 34 35 87 88 89 90 39 91 92 93 94
-DEAL::Level 1 v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 1.00 0.00 v1.00 1.00 0.00 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  9 10 11 46 47 48 72 73 74 95 96 97 21 22 23 52 53 54 78 79 80 98 99 100 82 101 57 102 85 103 60 104 35 62 88 105 90 106 65 107 108 109 110
-DEAL::Level 1 v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 0.00 1.00 v0.500 0.00 1.00 v0.00 0.500 1.00 v0.500 0.500 1.00 dofs  12 13 14 15 16 17 18 19 20 21 22 23 111 112 113 114 115 116 117 118 119 120 121 122 28 29 30 31 123 124 125 126 127 128 129 130 131 132 133 134 41 135 136
-DEAL::Level 1 v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 0.00 1.00 v1.00 0.00 1.00 v0.500 0.500 1.00 v1.00 0.500 1.00 dofs  15 16 17 49 50 51 21 22 23 52 53 54 114 115 116 137 138 139 120 121 122 140 141 142 29 58 59 60 124 143 144 145 128 146 130 147 132 148 149 150 67 151 152
-DEAL::Level 1 v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 v0.00 0.500 1.00 v0.500 0.500 1.00 v0.00 1.00 1.00 v0.500 1.00 1.00 dofs  18 19 20 21 22 23 75 76 77 78 79 80 117 118 119 120 121 122 153 154 155 156 157 158 84 85 31 86 159 160 126 161 129 130 162 163 164 165 134 166 93 167 168
-DEAL::Level 1 v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 v0.500 0.500 1.00 v1.00 0.500 1.00 v0.500 1.00 1.00 v1.00 1.00 1.00 dofs  21 22 23 52 53 54 78 79 80 98 99 100 120 121 122 140 141 142 156 157 158 169 170 171 85 103 60 104 160 172 145 173 130 147 163 174 165 175 150 176 109 177 178
-DEAL::Level 2 v0.00 0.00 0.00 v0.250 0.00 0.00 v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
-DEAL::Level 2 v0.250 0.00 0.00 v0.500 0.00 0.00 v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  3 4 5 43 44 45 9 10 11 46 47 48 15 16 17 49 50 51 21 22 23 52 53 54 25 55 56 57 29 58 59 60 33 61 35 62 37 63 64 65 66 67 68
-DEAL::Level 2 v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  6 7 8 9 10 11 69 70 71 72 73 74 18 19 20 21 22 23 75 76 77 78 79 80 81 82 27 83 84 85 31 86 34 35 87 88 89 90 39 91 92 93 94
-DEAL::Level 2 v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  9 10 11 46 47 48 72 73 74 95 96 97 21 22 23 52 53 54 78 79 80 98 99 100 82 101 57 102 85 103 60 104 35 62 88 105 90 106 65 107 108 109 110
-DEAL::Level 2 v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  12 13 14 15 16 17 18 19 20 21 22 23 111 112 113 114 115 116 117 118 119 120 121 122 28 29 30 31 123 124 125 126 127 128 129 130 131 132 133 134 41 135 136
-DEAL::Level 2 v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  15 16 17 49 50 51 21 22 23 52 53 54 114 115 116 137 138 139 120 121 122 140 141 142 29 58 59 60 124 143 144 145 128 146 130 147 132 148 149 150 67 151 152
-DEAL::Level 2 v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  18 19 20 21 22 23 75 76 77 78 79 80 117 118 119 120 121 122 153 154 155 156 157 158 84 85 31 86 159 160 126 161 129 130 162 163 164 165 134 166 93 167 168
-DEAL::Level 2 v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  21 22 23 52 53 54 78 79 80 98 99 100 120 121 122 140 141 142 156 157 158 169 170 171 85 103 60 104 160 172 145 173 130 147 163 174 165 175 150 176 109 177 178
-DEAL::Level 2 v0.500 0.00 0.00 v0.750 0.00 0.00 v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  43 44 45 179 180 181 46 47 48 182 183 184 49 50 51 185 186 187 52 53 54 188 189 190 55 191 192 193 58 194 195 196 61 197 62 198 63 199 200 201 202 203 204
-DEAL::Level 2 v0.750 0.00 0.00 v1.00 0.00 0.00 v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  179 180 181 205 206 207 182 183 184 208 209 210 185 186 187 211 212 213 188 189 190 214 215 216 191 217 218 219 194 220 221 222 197 223 198 224 199 225 226 227 228 229 230
-DEAL::Level 2 v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  46 47 48 182 183 184 95 96 97 231 232 233 52 53 54 188 189 190 98 99 100 234 235 236 101 237 193 238 103 239 196 240 62 198 105 241 106 242 201 243 244 245 246
-DEAL::Level 2 v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  182 183 184 208 209 210 231 232 233 247 248 249 188 189 190 214 215 216 234 235 236 250 251 252 237 253 219 254 239 255 222 256 198 224 241 257 242 258 227 259 260 261 262
-DEAL::Level 2 v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  49 50 51 185 186 187 52 53 54 188 189 190 137 138 139 263 264 265 140 141 142 266 267 268 58 194 195 196 143 269 270 271 146 272 147 273 148 274 275 276 203 277 278
-DEAL::Level 2 v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  185 186 187 211 212 213 188 189 190 214 215 216 263 264 265 279 280 281 266 267 268 282 283 284 194 220 221 222 269 285 286 287 272 288 273 289 274 290 291 292 229 293 294
-DEAL::Level 2 v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  52 53 54 188 189 190 98 99 100 234 235 236 140 141 142 266 267 268 169 170 171 295 296 297 103 239 196 240 172 298 271 299 147 273 174 300 175 301 276 302 245 303 304
-DEAL::Level 2 v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  188 189 190 214 215 216 234 235 236 250 251 252 266 267 268 282 283 284 295 296 297 305 306 307 239 255 222 256 298 308 287 309 273 289 300 310 301 311 292 312 261 313 314
-DEAL::Level 2 v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  69 70 71 72 73 74 315 316 317 318 319 320 75 76 77 78 79 80 321 322 323 324 325 326 327 328 83 329 330 331 86 332 87 88 333 334 335 336 91 337 338 339 340
-DEAL::Level 2 v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  72 73 74 95 96 97 318 319 320 341 342 343 78 79 80 98 99 100 324 325 326 344 345 346 328 347 102 348 331 349 104 350 88 105 334 351 336 352 107 353 354 355 356
-DEAL::Level 2 v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 1.00 0.00 v0.250 1.00 0.00 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  315 316 317 318 319 320 357 358 359 360 361 362 321 322 323 324 325 326 363 364 365 366 367 368 369 370 329 371 372 373 332 374 333 334 375 376 377 378 337 379 380 381 382
-DEAL::Level 2 v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 1.00 0.00 v0.500 1.00 0.00 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  318 319 320 341 342 343 360 361 362 383 384 385 324 325 326 344 345 346 366 367 368 386 387 388 370 389 348 390 373 391 350 392 334 351 376 393 378 394 353 395 396 397 398
-DEAL::Level 2 v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  75 76 77 78 79 80 321 322 323 324 325 326 153 154 155 156 157 158 399 400 401 402 403 404 330 331 86 332 405 406 161 407 162 163 408 409 410 411 166 412 339 413 414
-DEAL::Level 2 v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  78 79 80 98 99 100 324 325 326 344 345 346 156 157 158 169 170 171 402 403 404 415 416 417 331 349 104 350 406 418 173 419 163 174 409 420 411 421 176 422 355 423 424
-DEAL::Level 2 v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  321 322 323 324 325 326 363 364 365 366 367 368 399 400 401 402 403 404 425 426 427 428 429 430 372 373 332 374 431 432 407 433 408 409 434 435 436 437 412 438 381 439 440
-DEAL::Level 2 v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  324 325 326 344 345 346 366 367 368 386 387 388 402 403 404 415 416 417 428 429 430 441 442 443 373 391 350 392 432 444 419 445 409 420 435 446 437 447 422 448 397 449 450
-DEAL::Level 2 v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  95 96 97 231 232 233 341 342 343 451 452 453 98 99 100 234 235 236 344 345 346 454 455 456 347 457 238 458 349 459 240 460 105 241 351 461 352 462 243 463 464 465 466
-DEAL::Level 2 v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  231 232 233 247 248 249 451 452 453 467 468 469 234 235 236 250 251 252 454 455 456 470 471 472 457 473 254 474 459 475 256 476 241 257 461 477 462 478 259 479 480 481 482
-DEAL::Level 2 v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 1.00 0.00 v0.750 1.00 0.00 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  341 342 343 451 452 453 383 384 385 483 484 485 344 345 346 454 455 456 386 387 388 486 487 488 389 489 458 490 391 491 460 492 351 461 393 493 394 494 463 495 496 497 498
-DEAL::Level 2 v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 1.00 0.00 v1.00 1.00 0.00 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  451 452 453 467 468 469 483 484 485 499 500 501 454 455 456 470 471 472 486 487 488 502 503 504 489 505 474 506 491 507 476 508 461 477 493 509 494 510 479 511 512 513 514
-DEAL::Level 2 v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  98 99 100 234 235 236 344 345 346 454 455 456 169 170 171 295 296 297 415 416 417 515 516 517 349 459 240 460 418 518 299 519 174 300 420 520 421 521 302 522 465 523 524
-DEAL::Level 2 v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  234 235 236 250 251 252 454 455 456 470 471 472 295 296 297 305 306 307 515 516 517 525 526 527 459 475 256 476 518 528 309 529 300 310 520 530 521 531 312 532 481 533 534
-DEAL::Level 2 v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  344 345 346 454 455 456 386 387 388 486 487 488 415 416 417 515 516 517 441 442 443 535 536 537 391 491 460 492 444 538 519 539 420 520 446 540 447 541 522 542 497 543 544
-DEAL::Level 2 v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  454 455 456 470 471 472 486 487 488 502 503 504 515 516 517 525 526 527 535 536 537 545 546 547 491 507 476 508 538 548 529 549 520 530 540 550 541 551 532 552 513 553 554
-DEAL::Level 2 v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  111 112 113 114 115 116 117 118 119 120 121 122 555 556 557 558 559 560 561 562 563 564 565 566 123 124 125 126 567 568 569 570 571 572 573 574 575 576 577 578 135 579 580
-DEAL::Level 2 v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  114 115 116 137 138 139 120 121 122 140 141 142 558 559 560 581 582 583 564 565 566 584 585 586 124 143 144 145 568 587 588 589 572 590 574 591 576 592 593 594 151 595 596
-DEAL::Level 2 v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  117 118 119 120 121 122 153 154 155 156 157 158 561 562 563 564 565 566 597 598 599 600 601 602 159 160 126 161 603 604 570 605 573 574 606 607 608 609 578 610 167 611 612
-DEAL::Level 2 v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  120 121 122 140 141 142 156 157 158 169 170 171 564 565 566 584 585 586 600 601 602 613 614 615 160 172 145 173 604 616 589 617 574 591 607 618 609 619 594 620 177 621 622
-DEAL::Level 2 v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.00 1.00 v0.250 0.00 1.00 v0.00 0.250 1.00 v0.250 0.250 1.00 dofs  555 556 557 558 559 560 561 562 563 564 565 566 623 624 625 626 627 628 629 630 631 632 633 634 567 568 569 570 635 636 637 638 639 640 641 642 643 644 645 646 579 647 648
-DEAL::Level 2 v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.00 1.00 v0.500 0.00 1.00 v0.250 0.250 1.00 v0.500 0.250 1.00 dofs  558 559 560 581 582 583 564 565 566 584 585 586 626 627 628 649 650 651 632 633 634 652 653 654 568 587 588 589 636 655 656 657 640 658 642 659 644 660 661 662 595 663 664
-DEAL::Level 2 v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.250 1.00 v0.250 0.250 1.00 v0.00 0.500 1.00 v0.250 0.500 1.00 dofs  561 562 563 564 565 566 597 598 599 600 601 602 629 630 631 632 633 634 665 666 667 668 669 670 603 604 570 605 671 672 638 673 641 642 674 675 676 677 646 678 611 679 680
-DEAL::Level 2 v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.250 1.00 v0.500 0.250 1.00 v0.250 0.500 1.00 v0.500 0.500 1.00 dofs  564 565 566 584 585 586 600 601 602 613 614 615 632 633 634 652 653 654 668 669 670 681 682 683 604 616 589 617 672 684 657 685 642 659 675 686 677 687 662 688 621 689 690
-DEAL::Level 2 v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  137 138 139 263 264 265 140 141 142 266 267 268 581 582 583 691 692 693 584 585 586 694 695 696 143 269 270 271 587 697 698 699 590 700 591 701 592 702 703 704 277 705 706
-DEAL::Level 2 v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  263 264 265 279 280 281 266 267 268 282 283 284 691 692 693 707 708 709 694 695 696 710 711 712 269 285 286 287 697 713 714 715 700 716 701 717 702 718 719 720 293 721 722
-DEAL::Level 2 v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  140 141 142 266 267 268 169 170 171 295 296 297 584 585 586 694 695 696 613 614 615 723 724 725 172 298 271 299 616 726 699 727 591 701 618 728 619 729 704 730 303 731 732
-DEAL::Level 2 v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  266 267 268 282 283 284 295 296 297 305 306 307 694 695 696 710 711 712 723 724 725 733 734 735 298 308 287 309 726 736 715 737 701 717 728 738 729 739 720 740 313 741 742
-DEAL::Level 2 v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.00 1.00 v0.750 0.00 1.00 v0.500 0.250 1.00 v0.750 0.250 1.00 dofs  581 582 583 691 692 693 584 585 586 694 695 696 649 650 651 743 744 745 652 653 654 746 747 748 587 697 698 699 655 749 750 751 658 752 659 753 660 754 755 756 705 757 758
-DEAL::Level 2 v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.00 1.00 v1.00 0.00 1.00 v0.750 0.250 1.00 v1.00 0.250 1.00 dofs  691 692 693 707 708 709 694 695 696 710 711 712 743 744 745 759 760 761 746 747 748 762 763 764 697 713 714 715 749 765 766 767 752 768 753 769 754 770 771 772 721 773 774
-DEAL::Level 2 v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.250 1.00 v0.750 0.250 1.00 v0.500 0.500 1.00 v0.750 0.500 1.00 dofs  584 585 586 694 695 696 613 614 615 723 724 725 652 653 654 746 747 748 681 682 683 775 776 777 616 726 699 727 684 778 751 779 659 753 686 780 687 781 756 782 731 783 784
-DEAL::Level 2 v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.250 1.00 v1.00 0.250 1.00 v0.750 0.500 1.00 v1.00 0.500 1.00 dofs  694 695 696 710 711 712 723 724 725 733 734 735 746 747 748 762 763 764 775 776 777 785 786 787 726 736 715 737 778 788 767 789 753 769 780 790 781 791 772 792 741 793 794
-DEAL::Level 2 v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  153 154 155 156 157 158 399 400 401 402 403 404 597 598 599 600 601 602 795 796 797 798 799 800 405 406 161 407 801 802 605 803 606 607 804 805 806 807 610 808 413 809 810
-DEAL::Level 2 v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  156 157 158 169 170 171 402 403 404 415 416 417 600 601 602 613 614 615 798 799 800 811 812 813 406 418 173 419 802 814 617 815 607 618 805 816 807 817 620 818 423 819 820
-DEAL::Level 2 v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  399 400 401 402 403 404 425 426 427 428 429 430 795 796 797 798 799 800 821 822 823 824 825 826 431 432 407 433 827 828 803 829 804 805 830 831 832 833 808 834 439 835 836
-DEAL::Level 2 v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  402 403 404 415 416 417 428 429 430 441 442 443 798 799 800 811 812 813 824 825 826 837 838 839 432 444 419 445 828 840 815 841 805 816 831 842 833 843 818 844 449 845 846
-DEAL::Level 2 v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 0.500 1.00 v0.250 0.500 1.00 v0.00 0.750 1.00 v0.250 0.750 1.00 dofs  597 598 599 600 601 602 795 796 797 798 799 800 665 666 667 668 669 670 847 848 849 850 851 852 801 802 605 803 853 854 673 855 674 675 856 857 858 859 678 860 809 861 862
-DEAL::Level 2 v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 0.500 1.00 v0.500 0.500 1.00 v0.250 0.750 1.00 v0.500 0.750 1.00 dofs  600 601 602 613 614 615 798 799 800 811 812 813 668 669 670 681 682 683 850 851 852 863 864 865 802 814 617 815 854 866 685 867 675 686 857 868 859 869 688 870 819 871 872
-DEAL::Level 2 v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 v0.00 0.750 1.00 v0.250 0.750 1.00 v0.00 1.00 1.00 v0.250 1.00 1.00 dofs  795 796 797 798 799 800 821 822 823 824 825 826 847 848 849 850 851 852 873 874 875 876 877 878 827 828 803 829 879 880 855 881 856 857 882 883 884 885 860 886 835 887 888
-DEAL::Level 2 v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 v0.250 0.750 1.00 v0.500 0.750 1.00 v0.250 1.00 1.00 v0.500 1.00 1.00 dofs  798 799 800 811 812 813 824 825 826 837 838 839 850 851 852 863 864 865 876 877 878 889 890 891 828 840 815 841 880 892 867 893 857 868 883 894 885 895 870 896 845 897 898
-DEAL::Level 2 v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  169 170 171 295 296 297 415 416 417 515 516 517 613 614 615 723 724 725 811 812 813 899 900 901 418 518 299 519 814 902 727 903 618 728 816 904 817 905 730 906 523 907 908
-DEAL::Level 2 v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  295 296 297 305 306 307 515 516 517 525 526 527 723 724 725 733 734 735 899 900 901 909 910 911 518 528 309 529 902 912 737 913 728 738 904 914 905 915 740 916 533 917 918
-DEAL::Level 2 v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  415 416 417 515 516 517 441 442 443 535 536 537 811 812 813 899 900 901 837 838 839 919 920 921 444 538 519 539 840 922 903 923 816 904 842 924 843 925 906 926 543 927 928
-DEAL::Level 2 v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  515 516 517 525 526 527 535 536 537 545 546 547 899 900 901 909 910 911 919 920 921 929 930 931 538 548 529 549 922 932 913 933 904 914 924 934 925 935 916 936 553 937 938
-DEAL::Level 2 v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 0.500 1.00 v0.750 0.500 1.00 v0.500 0.750 1.00 v0.750 0.750 1.00 dofs  613 614 615 723 724 725 811 812 813 899 900 901 681 682 683 775 776 777 863 864 865 939 940 941 814 902 727 903 866 942 779 943 686 780 868 944 869 945 782 946 907 947 948
-DEAL::Level 2 v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 0.500 1.00 v1.00 0.500 1.00 v0.750 0.750 1.00 v1.00 0.750 1.00 dofs  723 724 725 733 734 735 899 900 901 909 910 911 775 776 777 785 786 787 939 940 941 949 950 951 902 912 737 913 942 952 789 953 780 790 944 954 945 955 792 956 917 957 958
-DEAL::Level 2 v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 v0.500 0.750 1.00 v0.750 0.750 1.00 v0.500 1.00 1.00 v0.750 1.00 1.00 dofs  811 812 813 899 900 901 837 838 839 919 920 921 863 864 865 939 940 941 889 890 891 959 960 961 840 922 903 923 892 962 943 963 868 944 894 964 895 965 946 966 927 967 968
-DEAL::Level 2 v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 v0.750 0.750 1.00 v1.00 0.750 1.00 v0.750 1.00 1.00 v1.00 1.00 1.00 dofs  899 900 901 909 910 911 919 920 921 929 930 931 939 940 941 949 950 951 959 960 961 969 970 971 922 932 913 933 962 972 953 973 944 954 964 974 965 975 956 976 937 977 978
+DEAL::Level 0 v0.00000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.00000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
+DEAL::Level 1 v0.00000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
+DEAL::Level 1 v0.500000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  3 4 5 43 44 45 9 10 11 46 47 48 15 16 17 49 50 51 21 22 23 52 53 54 25 55 56 57 29 58 59 60 33 61 35 62 37 63 64 65 66 67 68
+DEAL::Level 1 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.500000 1.00000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  6 7 8 9 10 11 69 70 71 72 73 74 18 19 20 21 22 23 75 76 77 78 79 80 81 82 27 83 84 85 31 86 34 35 87 88 89 90 39 91 92 93 94
+DEAL::Level 1 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  9 10 11 46 47 48 72 73 74 95 96 97 21 22 23 52 53 54 78 79 80 98 99 100 82 101 57 102 85 103 60 104 35 62 88 105 90 106 65 107 108 109 110
+DEAL::Level 1 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 111 112 113 114 115 116 117 118 119 120 121 122 28 29 30 31 123 124 125 126 127 128 129 130 131 132 133 134 41 135 136
+DEAL::Level 1 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  15 16 17 49 50 51 21 22 23 52 53 54 114 115 116 137 138 139 120 121 122 140 141 142 29 58 59 60 124 143 144 145 128 146 130 147 132 148 149 150 67 151 152
+DEAL::Level 1 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.00000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  18 19 20 21 22 23 75 76 77 78 79 80 117 118 119 120 121 122 153 154 155 156 157 158 84 85 31 86 159 160 126 161 129 130 162 163 164 165 134 166 93 167 168
+DEAL::Level 1 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.500000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  21 22 23 52 53 54 78 79 80 98 99 100 120 121 122 140 141 142 156 157 158 169 170 171 85 103 60 104 160 172 145 173 130 147 163 174 165 175 150 176 109 177 178
+DEAL::Level 2 v0.00000 0.00000 0.00000 v0.250000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
+DEAL::Level 2 v0.250000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  3 4 5 43 44 45 9 10 11 46 47 48 15 16 17 49 50 51 21 22 23 52 53 54 25 55 56 57 29 58 59 60 33 61 35 62 37 63 64 65 66 67 68
+DEAL::Level 2 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  6 7 8 9 10 11 69 70 71 72 73 74 18 19 20 21 22 23 75 76 77 78 79 80 81 82 27 83 84 85 31 86 34 35 87 88 89 90 39 91 92 93 94
+DEAL::Level 2 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  9 10 11 46 47 48 72 73 74 95 96 97 21 22 23 52 53 54 78 79 80 98 99 100 82 101 57 102 85 103 60 104 35 62 88 105 90 106 65 107 108 109 110
+DEAL::Level 2 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 111 112 113 114 115 116 117 118 119 120 121 122 28 29 30 31 123 124 125 126 127 128 129 130 131 132 133 134 41 135 136
+DEAL::Level 2 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  15 16 17 49 50 51 21 22 23 52 53 54 114 115 116 137 138 139 120 121 122 140 141 142 29 58 59 60 124 143 144 145 128 146 130 147 132 148 149 150 67 151 152
+DEAL::Level 2 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  18 19 20 21 22 23 75 76 77 78 79 80 117 118 119 120 121 122 153 154 155 156 157 158 84 85 31 86 159 160 126 161 129 130 162 163 164 165 134 166 93 167 168
+DEAL::Level 2 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  21 22 23 52 53 54 78 79 80 98 99 100 120 121 122 140 141 142 156 157 158 169 170 171 85 103 60 104 160 172 145 173 130 147 163 174 165 175 150 176 109 177 178
+DEAL::Level 2 v0.500000 0.00000 0.00000 v0.750000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  43 44 45 179 180 181 46 47 48 182 183 184 49 50 51 185 186 187 52 53 54 188 189 190 55 191 192 193 58 194 195 196 61 197 62 198 63 199 200 201 202 203 204
+DEAL::Level 2 v0.750000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  179 180 181 205 206 207 182 183 184 208 209 210 185 186 187 211 212 213 188 189 190 214 215 216 191 217 218 219 194 220 221 222 197 223 198 224 199 225 226 227 228 229 230
+DEAL::Level 2 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  46 47 48 182 183 184 95 96 97 231 232 233 52 53 54 188 189 190 98 99 100 234 235 236 101 237 193 238 103 239 196 240 62 198 105 241 106 242 201 243 244 245 246
+DEAL::Level 2 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  182 183 184 208 209 210 231 232 233 247 248 249 188 189 190 214 215 216 234 235 236 250 251 252 237 253 219 254 239 255 222 256 198 224 241 257 242 258 227 259 260 261 262
+DEAL::Level 2 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  49 50 51 185 186 187 52 53 54 188 189 190 137 138 139 263 264 265 140 141 142 266 267 268 58 194 195 196 143 269 270 271 146 272 147 273 148 274 275 276 203 277 278
+DEAL::Level 2 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  185 186 187 211 212 213 188 189 190 214 215 216 263 264 265 279 280 281 266 267 268 282 283 284 194 220 221 222 269 285 286 287 272 288 273 289 274 290 291 292 229 293 294
+DEAL::Level 2 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  52 53 54 188 189 190 98 99 100 234 235 236 140 141 142 266 267 268 169 170 171 295 296 297 103 239 196 240 172 298 271 299 147 273 174 300 175 301 276 302 245 303 304
+DEAL::Level 2 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  188 189 190 214 215 216 234 235 236 250 251 252 266 267 268 282 283 284 295 296 297 305 306 307 239 255 222 256 298 308 287 309 273 289 300 310 301 311 292 312 261 313 314
+DEAL::Level 2 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  69 70 71 72 73 74 315 316 317 318 319 320 75 76 77 78 79 80 321 322 323 324 325 326 327 328 83 329 330 331 86 332 87 88 333 334 335 336 91 337 338 339 340
+DEAL::Level 2 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  72 73 74 95 96 97 318 319 320 341 342 343 78 79 80 98 99 100 324 325 326 344 345 346 328 347 102 348 331 349 104 350 88 105 334 351 336 352 107 353 354 355 356
+DEAL::Level 2 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.250000 1.00000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  315 316 317 318 319 320 357 358 359 360 361 362 321 322 323 324 325 326 363 364 365 366 367 368 369 370 329 371 372 373 332 374 333 334 375 376 377 378 337 379 380 381 382
+DEAL::Level 2 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.500000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  318 319 320 341 342 343 360 361 362 383 384 385 324 325 326 344 345 346 366 367 368 386 387 388 370 389 348 390 373 391 350 392 334 351 376 393 378 394 353 395 396 397 398
+DEAL::Level 2 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  75 76 77 78 79 80 321 322 323 324 325 326 153 154 155 156 157 158 399 400 401 402 403 404 330 331 86 332 405 406 161 407 162 163 408 409 410 411 166 412 339 413 414
+DEAL::Level 2 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  78 79 80 98 99 100 324 325 326 344 345 346 156 157 158 169 170 171 402 403 404 415 416 417 331 349 104 350 406 418 173 419 163 174 409 420 411 421 176 422 355 423 424
+DEAL::Level 2 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  321 322 323 324 325 326 363 364 365 366 367 368 399 400 401 402 403 404 425 426 427 428 429 430 372 373 332 374 431 432 407 433 408 409 434 435 436 437 412 438 381 439 440
+DEAL::Level 2 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  324 325 326 344 345 346 366 367 368 386 387 388 402 403 404 415 416 417 428 429 430 441 442 443 373 391 350 392 432 444 419 445 409 420 435 446 437 447 422 448 397 449 450
+DEAL::Level 2 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  95 96 97 231 232 233 341 342 343 451 452 453 98 99 100 234 235 236 344 345 346 454 455 456 347 457 238 458 349 459 240 460 105 241 351 461 352 462 243 463 464 465 466
+DEAL::Level 2 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  231 232 233 247 248 249 451 452 453 467 468 469 234 235 236 250 251 252 454 455 456 470 471 472 457 473 254 474 459 475 256 476 241 257 461 477 462 478 259 479 480 481 482
+DEAL::Level 2 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.750000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  341 342 343 451 452 453 383 384 385 483 484 485 344 345 346 454 455 456 386 387 388 486 487 488 389 489 458 490 391 491 460 492 351 461 393 493 394 494 463 495 496 497 498
+DEAL::Level 2 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 1.00000 0.00000 v1.00000 1.00000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  451 452 453 467 468 469 483 484 485 499 500 501 454 455 456 470 471 472 486 487 488 502 503 504 489 505 474 506 491 507 476 508 461 477 493 509 494 510 479 511 512 513 514
+DEAL::Level 2 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  98 99 100 234 235 236 344 345 346 454 455 456 169 170 171 295 296 297 415 416 417 515 516 517 349 459 240 460 418 518 299 519 174 300 420 520 421 521 302 522 465 523 524
+DEAL::Level 2 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  234 235 236 250 251 252 454 455 456 470 471 472 295 296 297 305 306 307 515 516 517 525 526 527 459 475 256 476 518 528 309 529 300 310 520 530 521 531 312 532 481 533 534
+DEAL::Level 2 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  344 345 346 454 455 456 386 387 388 486 487 488 415 416 417 515 516 517 441 442 443 535 536 537 391 491 460 492 444 538 519 539 420 520 446 540 447 541 522 542 497 543 544
+DEAL::Level 2 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  454 455 456 470 471 472 486 487 488 502 503 504 515 516 517 525 526 527 535 536 537 545 546 547 491 507 476 508 538 548 529 549 520 530 540 550 541 551 532 552 513 553 554
+DEAL::Level 2 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  111 112 113 114 115 116 117 118 119 120 121 122 555 556 557 558 559 560 561 562 563 564 565 566 123 124 125 126 567 568 569 570 571 572 573 574 575 576 577 578 135 579 580
+DEAL::Level 2 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  114 115 116 137 138 139 120 121 122 140 141 142 558 559 560 581 582 583 564 565 566 584 585 586 124 143 144 145 568 587 588 589 572 590 574 591 576 592 593 594 151 595 596
+DEAL::Level 2 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  117 118 119 120 121 122 153 154 155 156 157 158 561 562 563 564 565 566 597 598 599 600 601 602 159 160 126 161 603 604 570 605 573 574 606 607 608 609 578 610 167 611 612
+DEAL::Level 2 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  120 121 122 140 141 142 156 157 158 169 170 171 564 565 566 584 585 586 600 601 602 613 614 615 160 172 145 173 604 616 589 617 574 591 607 618 609 619 594 620 177 621 622
+DEAL::Level 2 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.00000 1.00000 v0.250000 0.00000 1.00000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 dofs  555 556 557 558 559 560 561 562 563 564 565 566 623 624 625 626 627 628 629 630 631 632 633 634 567 568 569 570 635 636 637 638 639 640 641 642 643 644 645 646 579 647 648
+DEAL::Level 2 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 dofs  558 559 560 581 582 583 564 565 566 584 585 586 626 627 628 649 650 651 632 633 634 652 653 654 568 587 588 589 636 655 656 657 640 658 642 659 644 660 661 662 595 663 664
+DEAL::Level 2 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 dofs  561 562 563 564 565 566 597 598 599 600 601 602 629 630 631 632 633 634 665 666 667 668 669 670 603 604 570 605 671 672 638 673 641 642 674 675 676 677 646 678 611 679 680
+DEAL::Level 2 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  564 565 566 584 585 586 600 601 602 613 614 615 632 633 634 652 653 654 668 669 670 681 682 683 604 616 589 617 672 684 657 685 642 659 675 686 677 687 662 688 621 689 690
+DEAL::Level 2 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  137 138 139 263 264 265 140 141 142 266 267 268 581 582 583 691 692 693 584 585 586 694 695 696 143 269 270 271 587 697 698 699 590 700 591 701 592 702 703 704 277 705 706
+DEAL::Level 2 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  263 264 265 279 280 281 266 267 268 282 283 284 691 692 693 707 708 709 694 695 696 710 711 712 269 285 286 287 697 713 714 715 700 716 701 717 702 718 719 720 293 721 722
+DEAL::Level 2 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  140 141 142 266 267 268 169 170 171 295 296 297 584 585 586 694 695 696 613 614 615 723 724 725 172 298 271 299 616 726 699 727 591 701 618 728 619 729 704 730 303 731 732
+DEAL::Level 2 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  266 267 268 282 283 284 295 296 297 305 306 307 694 695 696 710 711 712 723 724 725 733 734 735 298 308 287 309 726 736 715 737 701 717 728 738 729 739 720 740 313 741 742
+DEAL::Level 2 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.750000 0.00000 1.00000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 dofs  581 582 583 691 692 693 584 585 586 694 695 696 649 650 651 743 744 745 652 653 654 746 747 748 587 697 698 699 655 749 750 751 658 752 659 753 660 754 755 756 705 757 758
+DEAL::Level 2 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 dofs  691 692 693 707 708 709 694 695 696 710 711 712 743 744 745 759 760 761 746 747 748 762 763 764 697 713 714 715 749 765 766 767 752 768 753 769 754 770 771 772 721 773 774
+DEAL::Level 2 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 dofs  584 585 586 694 695 696 613 614 615 723 724 725 652 653 654 746 747 748 681 682 683 775 776 777 616 726 699 727 684 778 751 779 659 753 686 780 687 781 756 782 731 783 784
+DEAL::Level 2 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  694 695 696 710 711 712 723 724 725 733 734 735 746 747 748 762 763 764 775 776 777 785 786 787 726 736 715 737 778 788 767 789 753 769 780 790 781 791 772 792 741 793 794
+DEAL::Level 2 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  153 154 155 156 157 158 399 400 401 402 403 404 597 598 599 600 601 602 795 796 797 798 799 800 405 406 161 407 801 802 605 803 606 607 804 805 806 807 610 808 413 809 810
+DEAL::Level 2 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  156 157 158 169 170 171 402 403 404 415 416 417 600 601 602 613 614 615 798 799 800 811 812 813 406 418 173 419 802 814 617 815 607 618 805 816 807 817 620 818 423 819 820
+DEAL::Level 2 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  399 400 401 402 403 404 425 426 427 428 429 430 795 796 797 798 799 800 821 822 823 824 825 826 431 432 407 433 827 828 803 829 804 805 830 831 832 833 808 834 439 835 836
+DEAL::Level 2 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  402 403 404 415 416 417 428 429 430 441 442 443 798 799 800 811 812 813 824 825 826 837 838 839 432 444 419 445 828 840 815 841 805 816 831 842 833 843 818 844 449 845 846
+DEAL::Level 2 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 dofs  597 598 599 600 601 602 795 796 797 798 799 800 665 666 667 668 669 670 847 848 849 850 851 852 801 802 605 803 853 854 673 855 674 675 856 857 858 859 678 860 809 861 862
+DEAL::Level 2 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 dofs  600 601 602 613 614 615 798 799 800 811 812 813 668 669 670 681 682 683 850 851 852 863 864 865 802 814 617 815 854 866 685 867 675 686 857 868 859 869 688 870 819 871 872
+DEAL::Level 2 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 v0.00000 1.00000 1.00000 v0.250000 1.00000 1.00000 dofs  795 796 797 798 799 800 821 822 823 824 825 826 847 848 849 850 851 852 873 874 875 876 877 878 827 828 803 829 879 880 855 881 856 857 882 883 884 885 860 886 835 887 888
+DEAL::Level 2 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 v0.250000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  798 799 800 811 812 813 824 825 826 837 838 839 850 851 852 863 864 865 876 877 878 889 890 891 828 840 815 841 880 892 867 893 857 868 883 894 885 895 870 896 845 897 898
+DEAL::Level 2 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  169 170 171 295 296 297 415 416 417 515 516 517 613 614 615 723 724 725 811 812 813 899 900 901 418 518 299 519 814 902 727 903 618 728 816 904 817 905 730 906 523 907 908
+DEAL::Level 2 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  295 296 297 305 306 307 515 516 517 525 526 527 723 724 725 733 734 735 899 900 901 909 910 911 518 528 309 529 902 912 737 913 728 738 904 914 905 915 740 916 533 917 918
+DEAL::Level 2 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  415 416 417 515 516 517 441 442 443 535 536 537 811 812 813 899 900 901 837 838 839 919 920 921 444 538 519 539 840 922 903 923 816 904 842 924 843 925 906 926 543 927 928
+DEAL::Level 2 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  515 516 517 525 526 527 535 536 537 545 546 547 899 900 901 909 910 911 919 920 921 929 930 931 538 548 529 549 922 932 913 933 904 914 924 934 925 935 916 936 553 937 938
+DEAL::Level 2 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 dofs  613 614 615 723 724 725 811 812 813 899 900 901 681 682 683 775 776 777 863 864 865 939 940 941 814 902 727 903 866 942 779 943 686 780 868 944 869 945 782 946 907 947 948
+DEAL::Level 2 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 dofs  723 724 725 733 734 735 899 900 901 909 910 911 775 776 777 785 786 787 939 940 941 949 950 951 902 912 737 913 942 952 789 953 780 790 944 954 945 955 792 956 917 957 958
+DEAL::Level 2 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 v0.500000 1.00000 1.00000 v0.750000 1.00000 1.00000 dofs  811 812 813 899 900 901 837 838 839 919 920 921 863 864 865 939 940 941 889 890 891 959 960 961 840 922 903 923 892 962 943 963 868 944 894 964 895 965 946 966 927 967 968
+DEAL::Level 2 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 v0.750000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  899 900 901 909 910 911 919 920 921 929 930 931 939 940 941 949 950 951 959 960 961 969 970 971 922 932 913 933 962 972 953 973 944 954 964 974 965 975 956 976 937 977 978
index 6ba99e1336410035ba67a8bf6e9074d070ea3c63..274ffda69985c4b00641fcfbac2c512f7c5222b9 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2006 by the deal.II authors
+//    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
@@ -102,12 +102,7 @@ void check()
 
 int main()
 {
-  std::ofstream logfile("dof_02/output");
-  deallog << std::setprecision(3);
-  deallog.attach(logfile);
-  deallog.depth_console(0);
-  deallog.threshold_double(1.e-10);
-
+  initlog(__FILE__);
   check<2> ();
   check<3> ();
 }
index ed87bde4b0a06a662056f2eefe719da7be06ce67..9d58e827f1f08929584e3ee1530ff5da3ec7a5a4 100644 (file)
 
 DEAL::FE_Q<2>(1)
 DEAL::Level 0
-DEAL:: v0.00 0.00 v0.00 1.00 dofs  0 2
-DEAL:: v1.00 0.00 v1.00 1.00 dofs  1 3
-DEAL:: v0.00 0.00 v1.00 0.00 dofs  0 1
-DEAL:: v0.00 1.00 v1.00 1.00 dofs  2 3
+DEAL:: v0.00000 0.00000 v0.00000 1.00000 dofs  0 2
+DEAL:: v1.00000 0.00000 v1.00000 1.00000 dofs  1 3
+DEAL:: v0.00000 0.00000 v1.00000 0.00000 dofs  0 1
+DEAL:: v0.00000 1.00000 v1.00000 1.00000 dofs  2 3
 DEAL::Level 1
-DEAL:: v0.00 0.00 v0.00 0.500 dofs  0 2
-DEAL:: v0.500 0.00 v0.500 0.500 dofs  1 3
-DEAL:: v0.00 0.00 v0.500 0.00 dofs  0 1
-DEAL:: v0.00 0.500 v0.500 0.500 dofs  2 3
+DEAL:: v0.00000 0.00000 v0.00000 0.500000 dofs  0 2
+DEAL:: v0.500000 0.00000 v0.500000 0.500000 dofs  1 3
+DEAL:: v0.00000 0.00000 v0.500000 0.00000 dofs  0 1
+DEAL:: v0.00000 0.500000 v0.500000 0.500000 dofs  2 3
 DEAL::Level 1
-DEAL:: v0.500 0.00 v0.500 0.500 dofs  1 3
-DEAL:: v1.00 0.00 v1.00 0.500 dofs  4 5
-DEAL:: v0.500 0.00 v1.00 0.00 dofs  1 4
-DEAL:: v0.500 0.500 v1.00 0.500 dofs  3 5
+DEAL:: v0.500000 0.00000 v0.500000 0.500000 dofs  1 3
+DEAL:: v1.00000 0.00000 v1.00000 0.500000 dofs  4 5
+DEAL:: v0.500000 0.00000 v1.00000 0.00000 dofs  1 4
+DEAL:: v0.500000 0.500000 v1.00000 0.500000 dofs  3 5
 DEAL::Level 1
-DEAL:: v0.00 0.500 v0.00 1.00 dofs  2 6
-DEAL:: v0.500 0.500 v0.500 1.00 dofs  3 7
-DEAL:: v0.00 0.500 v0.500 0.500 dofs  2 3
-DEAL:: v0.00 1.00 v0.500 1.00 dofs  6 7
+DEAL:: v0.00000 0.500000 v0.00000 1.00000 dofs  2 6
+DEAL:: v0.500000 0.500000 v0.500000 1.00000 dofs  3 7
+DEAL:: v0.00000 0.500000 v0.500000 0.500000 dofs  2 3
+DEAL:: v0.00000 1.00000 v0.500000 1.00000 dofs  6 7
 DEAL::Level 1
-DEAL:: v0.500 0.500 v0.500 1.00 dofs  3 7
-DEAL:: v1.00 0.500 v1.00 1.00 dofs  5 8
-DEAL:: v0.500 0.500 v1.00 0.500 dofs  3 5
-DEAL:: v0.500 1.00 v1.00 1.00 dofs  7 8
-DEAL::Level 2
-DEAL:: v0.00 0.00 v0.00 0.250 dofs  0 2
-DEAL:: v0.250 0.00 v0.250 0.250 dofs  1 3
-DEAL:: v0.00 0.00 v0.250 0.00 dofs  0 1
-DEAL:: v0.00 0.250 v0.250 0.250 dofs  2 3
-DEAL::Level 2
-DEAL:: v0.250 0.00 v0.250 0.250 dofs  1 3
-DEAL:: v0.500 0.00 v0.500 0.250 dofs  4 5
-DEAL:: v0.250 0.00 v0.500 0.00 dofs  1 4
-DEAL:: v0.250 0.250 v0.500 0.250 dofs  3 5
-DEAL::Level 2
-DEAL:: v0.00 0.250 v0.00 0.500 dofs  2 6
-DEAL:: v0.250 0.250 v0.250 0.500 dofs  3 7
-DEAL:: v0.00 0.250 v0.250 0.250 dofs  2 3
-DEAL:: v0.00 0.500 v0.250 0.500 dofs  6 7
-DEAL::Level 2
-DEAL:: v0.250 0.250 v0.250 0.500 dofs  3 7
-DEAL:: v0.500 0.250 v0.500 0.500 dofs  5 8
-DEAL:: v0.250 0.250 v0.500 0.250 dofs  3 5
-DEAL:: v0.250 0.500 v0.500 0.500 dofs  7 8
-DEAL::Level 2
-DEAL:: v0.500 0.00 v0.500 0.250 dofs  4 5
-DEAL:: v0.750 0.00 v0.750 0.250 dofs  9 10
-DEAL:: v0.500 0.00 v0.750 0.00 dofs  4 9
-DEAL:: v0.500 0.250 v0.750 0.250 dofs  5 10
-DEAL::Level 2
-DEAL:: v0.750 0.00 v0.750 0.250 dofs  9 10
-DEAL:: v1.00 0.00 v1.00 0.250 dofs  11 12
-DEAL:: v0.750 0.00 v1.00 0.00 dofs  9 11
-DEAL:: v0.750 0.250 v1.00 0.250 dofs  10 12
-DEAL::Level 2
-DEAL:: v0.500 0.250 v0.500 0.500 dofs  5 8
-DEAL:: v0.750 0.250 v0.750 0.500 dofs  10 13
-DEAL:: v0.500 0.250 v0.750 0.250 dofs  5 10
-DEAL:: v0.500 0.500 v0.750 0.500 dofs  8 13
-DEAL::Level 2
-DEAL:: v0.750 0.250 v0.750 0.500 dofs  10 13
-DEAL:: v1.00 0.250 v1.00 0.500 dofs  12 14
-DEAL:: v0.750 0.250 v1.00 0.250 dofs  10 12
-DEAL:: v0.750 0.500 v1.00 0.500 dofs  13 14
-DEAL::Level 2
-DEAL:: v0.00 0.500 v0.00 0.750 dofs  6 15
-DEAL:: v0.250 0.500 v0.250 0.750 dofs  7 16
-DEAL:: v0.00 0.500 v0.250 0.500 dofs  6 7
-DEAL:: v0.00 0.750 v0.250 0.750 dofs  15 16
-DEAL::Level 2
-DEAL:: v0.250 0.500 v0.250 0.750 dofs  7 16
-DEAL:: v0.500 0.500 v0.500 0.750 dofs  8 17
-DEAL:: v0.250 0.500 v0.500 0.500 dofs  7 8
-DEAL:: v0.250 0.750 v0.500 0.750 dofs  16 17
-DEAL::Level 2
-DEAL:: v0.00 0.750 v0.00 1.00 dofs  15 18
-DEAL:: v0.250 0.750 v0.250 1.00 dofs  16 19
-DEAL:: v0.00 0.750 v0.250 0.750 dofs  15 16
-DEAL:: v0.00 1.00 v0.250 1.00 dofs  18 19
-DEAL::Level 2
-DEAL:: v0.250 0.750 v0.250 1.00 dofs  16 19
-DEAL:: v0.500 0.750 v0.500 1.00 dofs  17 20
-DEAL:: v0.250 0.750 v0.500 0.750 dofs  16 17
-DEAL:: v0.250 1.00 v0.500 1.00 dofs  19 20
-DEAL::Level 2
-DEAL:: v0.500 0.500 v0.500 0.750 dofs  8 17
-DEAL:: v0.750 0.500 v0.750 0.750 dofs  13 21
-DEAL:: v0.500 0.500 v0.750 0.500 dofs  8 13
-DEAL:: v0.500 0.750 v0.750 0.750 dofs  17 21
-DEAL::Level 2
-DEAL:: v0.750 0.500 v0.750 0.750 dofs  13 21
-DEAL:: v1.00 0.500 v1.00 0.750 dofs  14 22
-DEAL:: v0.750 0.500 v1.00 0.500 dofs  13 14
-DEAL:: v0.750 0.750 v1.00 0.750 dofs  21 22
-DEAL::Level 2
-DEAL:: v0.500 0.750 v0.500 1.00 dofs  17 20
-DEAL:: v0.750 0.750 v0.750 1.00 dofs  21 23
-DEAL:: v0.500 0.750 v0.750 0.750 dofs  17 21
-DEAL:: v0.500 1.00 v0.750 1.00 dofs  20 23
-DEAL::Level 2
-DEAL:: v0.750 0.750 v0.750 1.00 dofs  21 23
-DEAL:: v1.00 0.750 v1.00 1.00 dofs  22 24
-DEAL:: v0.750 0.750 v1.00 0.750 dofs  21 22
-DEAL:: v0.750 1.00 v1.00 1.00 dofs  23 24
+DEAL:: v0.500000 0.500000 v0.500000 1.00000 dofs  3 7
+DEAL:: v1.00000 0.500000 v1.00000 1.00000 dofs  5 8
+DEAL:: v0.500000 0.500000 v1.00000 0.500000 dofs  3 5
+DEAL:: v0.500000 1.00000 v1.00000 1.00000 dofs  7 8
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 v0.00000 0.250000 dofs  0 2
+DEAL:: v0.250000 0.00000 v0.250000 0.250000 dofs  1 3
+DEAL:: v0.00000 0.00000 v0.250000 0.00000 dofs  0 1
+DEAL:: v0.00000 0.250000 v0.250000 0.250000 dofs  2 3
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 v0.250000 0.250000 dofs  1 3
+DEAL:: v0.500000 0.00000 v0.500000 0.250000 dofs  4 5
+DEAL:: v0.250000 0.00000 v0.500000 0.00000 dofs  1 4
+DEAL:: v0.250000 0.250000 v0.500000 0.250000 dofs  3 5
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 v0.00000 0.500000 dofs  2 6
+DEAL:: v0.250000 0.250000 v0.250000 0.500000 dofs  3 7
+DEAL:: v0.00000 0.250000 v0.250000 0.250000 dofs  2 3
+DEAL:: v0.00000 0.500000 v0.250000 0.500000 dofs  6 7
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 v0.250000 0.500000 dofs  3 7
+DEAL:: v0.500000 0.250000 v0.500000 0.500000 dofs  5 8
+DEAL:: v0.250000 0.250000 v0.500000 0.250000 dofs  3 5
+DEAL:: v0.250000 0.500000 v0.500000 0.500000 dofs  7 8
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 v0.500000 0.250000 dofs  4 5
+DEAL:: v0.750000 0.00000 v0.750000 0.250000 dofs  9 10
+DEAL:: v0.500000 0.00000 v0.750000 0.00000 dofs  4 9
+DEAL:: v0.500000 0.250000 v0.750000 0.250000 dofs  5 10
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 v0.750000 0.250000 dofs  9 10
+DEAL:: v1.00000 0.00000 v1.00000 0.250000 dofs  11 12
+DEAL:: v0.750000 0.00000 v1.00000 0.00000 dofs  9 11
+DEAL:: v0.750000 0.250000 v1.00000 0.250000 dofs  10 12
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 v0.500000 0.500000 dofs  5 8
+DEAL:: v0.750000 0.250000 v0.750000 0.500000 dofs  10 13
+DEAL:: v0.500000 0.250000 v0.750000 0.250000 dofs  5 10
+DEAL:: v0.500000 0.500000 v0.750000 0.500000 dofs  8 13
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 v0.750000 0.500000 dofs  10 13
+DEAL:: v1.00000 0.250000 v1.00000 0.500000 dofs  12 14
+DEAL:: v0.750000 0.250000 v1.00000 0.250000 dofs  10 12
+DEAL:: v0.750000 0.500000 v1.00000 0.500000 dofs  13 14
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 v0.00000 0.750000 dofs  6 15
+DEAL:: v0.250000 0.500000 v0.250000 0.750000 dofs  7 16
+DEAL:: v0.00000 0.500000 v0.250000 0.500000 dofs  6 7
+DEAL:: v0.00000 0.750000 v0.250000 0.750000 dofs  15 16
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 v0.250000 0.750000 dofs  7 16
+DEAL:: v0.500000 0.500000 v0.500000 0.750000 dofs  8 17
+DEAL:: v0.250000 0.500000 v0.500000 0.500000 dofs  7 8
+DEAL:: v0.250000 0.750000 v0.500000 0.750000 dofs  16 17
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 v0.00000 1.00000 dofs  15 18
+DEAL:: v0.250000 0.750000 v0.250000 1.00000 dofs  16 19
+DEAL:: v0.00000 0.750000 v0.250000 0.750000 dofs  15 16
+DEAL:: v0.00000 1.00000 v0.250000 1.00000 dofs  18 19
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 v0.250000 1.00000 dofs  16 19
+DEAL:: v0.500000 0.750000 v0.500000 1.00000 dofs  17 20
+DEAL:: v0.250000 0.750000 v0.500000 0.750000 dofs  16 17
+DEAL:: v0.250000 1.00000 v0.500000 1.00000 dofs  19 20
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 v0.500000 0.750000 dofs  8 17
+DEAL:: v0.750000 0.500000 v0.750000 0.750000 dofs  13 21
+DEAL:: v0.500000 0.500000 v0.750000 0.500000 dofs  8 13
+DEAL:: v0.500000 0.750000 v0.750000 0.750000 dofs  17 21
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 v0.750000 0.750000 dofs  13 21
+DEAL:: v1.00000 0.500000 v1.00000 0.750000 dofs  14 22
+DEAL:: v0.750000 0.500000 v1.00000 0.500000 dofs  13 14
+DEAL:: v0.750000 0.750000 v1.00000 0.750000 dofs  21 22
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 v0.500000 1.00000 dofs  17 20
+DEAL:: v0.750000 0.750000 v0.750000 1.00000 dofs  21 23
+DEAL:: v0.500000 0.750000 v0.750000 0.750000 dofs  17 21
+DEAL:: v0.500000 1.00000 v0.750000 1.00000 dofs  20 23
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 v0.750000 1.00000 dofs  21 23
+DEAL:: v1.00000 0.750000 v1.00000 1.00000 dofs  22 24
+DEAL:: v0.750000 0.750000 v1.00000 0.750000 dofs  21 22
+DEAL:: v0.750000 1.00000 v1.00000 1.00000 dofs  23 24
 DEAL::FE_Q<2>(2)
 DEAL::Level 0
-DEAL:: v0.00 0.00 v0.00 1.00 dofs  0 2 4
-DEAL:: v1.00 0.00 v1.00 1.00 dofs  1 3 5
-DEAL:: v0.00 0.00 v1.00 0.00 dofs  0 1 6
-DEAL:: v0.00 1.00 v1.00 1.00 dofs  2 3 7
+DEAL:: v0.00000 0.00000 v0.00000 1.00000 dofs  0 2 4
+DEAL:: v1.00000 0.00000 v1.00000 1.00000 dofs  1 3 5
+DEAL:: v0.00000 0.00000 v1.00000 0.00000 dofs  0 1 6
+DEAL:: v0.00000 1.00000 v1.00000 1.00000 dofs  2 3 7
 DEAL::Level 1
-DEAL:: v0.00 0.00 v0.00 0.500 dofs  0 2 4
-DEAL:: v0.500 0.00 v0.500 0.500 dofs  1 3 5
-DEAL:: v0.00 0.00 v0.500 0.00 dofs  0 1 6
-DEAL:: v0.00 0.500 v0.500 0.500 dofs  2 3 7
+DEAL:: v0.00000 0.00000 v0.00000 0.500000 dofs  0 2 4
+DEAL:: v0.500000 0.00000 v0.500000 0.500000 dofs  1 3 5
+DEAL:: v0.00000 0.00000 v0.500000 0.00000 dofs  0 1 6
+DEAL:: v0.00000 0.500000 v0.500000 0.500000 dofs  2 3 7
 DEAL::Level 1
-DEAL:: v0.500 0.00 v0.500 0.500 dofs  1 3 5
-DEAL:: v1.00 0.00 v1.00 0.500 dofs  9 10 11
-DEAL:: v0.500 0.00 v1.00 0.00 dofs  1 9 12
-DEAL:: v0.500 0.500 v1.00 0.500 dofs  3 10 13
+DEAL:: v0.500000 0.00000 v0.500000 0.500000 dofs  1 3 5
+DEAL:: v1.00000 0.00000 v1.00000 0.500000 dofs  9 10 11
+DEAL:: v0.500000 0.00000 v1.00000 0.00000 dofs  1 9 12
+DEAL:: v0.500000 0.500000 v1.00000 0.500000 dofs  3 10 13
 DEAL::Level 1
-DEAL:: v0.00 0.500 v0.00 1.00 dofs  2 15 17
-DEAL:: v0.500 0.500 v0.500 1.00 dofs  3 16 18
-DEAL:: v0.00 0.500 v0.500 0.500 dofs  2 3 7
-DEAL:: v0.00 1.00 v0.500 1.00 dofs  15 16 19
+DEAL:: v0.00000 0.500000 v0.00000 1.00000 dofs  2 15 17
+DEAL:: v0.500000 0.500000 v0.500000 1.00000 dofs  3 16 18
+DEAL:: v0.00000 0.500000 v0.500000 0.500000 dofs  2 3 7
+DEAL:: v0.00000 1.00000 v0.500000 1.00000 dofs  15 16 19
 DEAL::Level 1
-DEAL:: v0.500 0.500 v0.500 1.00 dofs  3 16 18
-DEAL:: v1.00 0.500 v1.00 1.00 dofs  10 21 22
-DEAL:: v0.500 0.500 v1.00 0.500 dofs  3 10 13
-DEAL:: v0.500 1.00 v1.00 1.00 dofs  16 21 23
-DEAL::Level 2
-DEAL:: v0.00 0.00 v0.00 0.250 dofs  0 2 4
-DEAL:: v0.250 0.00 v0.250 0.250 dofs  1 3 5
-DEAL:: v0.00 0.00 v0.250 0.00 dofs  0 1 6
-DEAL:: v0.00 0.250 v0.250 0.250 dofs  2 3 7
-DEAL::Level 2
-DEAL:: v0.250 0.00 v0.250 0.250 dofs  1 3 5
-DEAL:: v0.500 0.00 v0.500 0.250 dofs  9 10 11
-DEAL:: v0.250 0.00 v0.500 0.00 dofs  1 9 12
-DEAL:: v0.250 0.250 v0.500 0.250 dofs  3 10 13
-DEAL::Level 2
-DEAL:: v0.00 0.250 v0.00 0.500 dofs  2 15 17
-DEAL:: v0.250 0.250 v0.250 0.500 dofs  3 16 18
-DEAL:: v0.00 0.250 v0.250 0.250 dofs  2 3 7
-DEAL:: v0.00 0.500 v0.250 0.500 dofs  15 16 19
-DEAL::Level 2
-DEAL:: v0.250 0.250 v0.250 0.500 dofs  3 16 18
-DEAL:: v0.500 0.250 v0.500 0.500 dofs  10 21 22
-DEAL:: v0.250 0.250 v0.500 0.250 dofs  3 10 13
-DEAL:: v0.250 0.500 v0.500 0.500 dofs  16 21 23
-DEAL::Level 2
-DEAL:: v0.500 0.00 v0.500 0.250 dofs  9 10 11
-DEAL:: v0.750 0.00 v0.750 0.250 dofs  25 26 27
-DEAL:: v0.500 0.00 v0.750 0.00 dofs  9 25 28
-DEAL:: v0.500 0.250 v0.750 0.250 dofs  10 26 29
-DEAL::Level 2
-DEAL:: v0.750 0.00 v0.750 0.250 dofs  25 26 27
-DEAL:: v1.00 0.00 v1.00 0.250 dofs  31 32 33
-DEAL:: v0.750 0.00 v1.00 0.00 dofs  25 31 34
-DEAL:: v0.750 0.250 v1.00 0.250 dofs  26 32 35
-DEAL::Level 2
-DEAL:: v0.500 0.250 v0.500 0.500 dofs  10 21 22
-DEAL:: v0.750 0.250 v0.750 0.500 dofs  26 37 38
-DEAL:: v0.500 0.250 v0.750 0.250 dofs  10 26 29
-DEAL:: v0.500 0.500 v0.750 0.500 dofs  21 37 39
-DEAL::Level 2
-DEAL:: v0.750 0.250 v0.750 0.500 dofs  26 37 38
-DEAL:: v1.00 0.250 v1.00 0.500 dofs  32 41 42
-DEAL:: v0.750 0.250 v1.00 0.250 dofs  26 32 35
-DEAL:: v0.750 0.500 v1.00 0.500 dofs  37 41 43
-DEAL::Level 2
-DEAL:: v0.00 0.500 v0.00 0.750 dofs  15 45 47
-DEAL:: v0.250 0.500 v0.250 0.750 dofs  16 46 48
-DEAL:: v0.00 0.500 v0.250 0.500 dofs  15 16 19
-DEAL:: v0.00 0.750 v0.250 0.750 dofs  45 46 49
-DEAL::Level 2
-DEAL:: v0.250 0.500 v0.250 0.750 dofs  16 46 48
-DEAL:: v0.500 0.500 v0.500 0.750 dofs  21 51 52
-DEAL:: v0.250 0.500 v0.500 0.500 dofs  16 21 23
-DEAL:: v0.250 0.750 v0.500 0.750 dofs  46 51 53
-DEAL::Level 2
-DEAL:: v0.00 0.750 v0.00 1.00 dofs  45 55 57
-DEAL:: v0.250 0.750 v0.250 1.00 dofs  46 56 58
-DEAL:: v0.00 0.750 v0.250 0.750 dofs  45 46 49
-DEAL:: v0.00 1.00 v0.250 1.00 dofs  55 56 59
-DEAL::Level 2
-DEAL:: v0.250 0.750 v0.250 1.00 dofs  46 56 58
-DEAL:: v0.500 0.750 v0.500 1.00 dofs  51 61 62
-DEAL:: v0.250 0.750 v0.500 0.750 dofs  46 51 53
-DEAL:: v0.250 1.00 v0.500 1.00 dofs  56 61 63
-DEAL::Level 2
-DEAL:: v0.500 0.500 v0.500 0.750 dofs  21 51 52
-DEAL:: v0.750 0.500 v0.750 0.750 dofs  37 65 66
-DEAL:: v0.500 0.500 v0.750 0.500 dofs  21 37 39
-DEAL:: v0.500 0.750 v0.750 0.750 dofs  51 65 67
-DEAL::Level 2
-DEAL:: v0.750 0.500 v0.750 0.750 dofs  37 65 66
-DEAL:: v1.00 0.500 v1.00 0.750 dofs  41 69 70
-DEAL:: v0.750 0.500 v1.00 0.500 dofs  37 41 43
-DEAL:: v0.750 0.750 v1.00 0.750 dofs  65 69 71
-DEAL::Level 2
-DEAL:: v0.500 0.750 v0.500 1.00 dofs  51 61 62
-DEAL:: v0.750 0.750 v0.750 1.00 dofs  65 73 74
-DEAL:: v0.500 0.750 v0.750 0.750 dofs  51 65 67
-DEAL:: v0.500 1.00 v0.750 1.00 dofs  61 73 75
-DEAL::Level 2
-DEAL:: v0.750 0.750 v0.750 1.00 dofs  65 73 74
-DEAL:: v1.00 0.750 v1.00 1.00 dofs  69 77 78
-DEAL:: v0.750 0.750 v1.00 0.750 dofs  65 69 71
-DEAL:: v0.750 1.00 v1.00 1.00 dofs  73 77 79
+DEAL:: v0.500000 0.500000 v0.500000 1.00000 dofs  3 16 18
+DEAL:: v1.00000 0.500000 v1.00000 1.00000 dofs  10 21 22
+DEAL:: v0.500000 0.500000 v1.00000 0.500000 dofs  3 10 13
+DEAL:: v0.500000 1.00000 v1.00000 1.00000 dofs  16 21 23
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 v0.00000 0.250000 dofs  0 2 4
+DEAL:: v0.250000 0.00000 v0.250000 0.250000 dofs  1 3 5
+DEAL:: v0.00000 0.00000 v0.250000 0.00000 dofs  0 1 6
+DEAL:: v0.00000 0.250000 v0.250000 0.250000 dofs  2 3 7
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 v0.250000 0.250000 dofs  1 3 5
+DEAL:: v0.500000 0.00000 v0.500000 0.250000 dofs  9 10 11
+DEAL:: v0.250000 0.00000 v0.500000 0.00000 dofs  1 9 12
+DEAL:: v0.250000 0.250000 v0.500000 0.250000 dofs  3 10 13
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 v0.00000 0.500000 dofs  2 15 17
+DEAL:: v0.250000 0.250000 v0.250000 0.500000 dofs  3 16 18
+DEAL:: v0.00000 0.250000 v0.250000 0.250000 dofs  2 3 7
+DEAL:: v0.00000 0.500000 v0.250000 0.500000 dofs  15 16 19
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 v0.250000 0.500000 dofs  3 16 18
+DEAL:: v0.500000 0.250000 v0.500000 0.500000 dofs  10 21 22
+DEAL:: v0.250000 0.250000 v0.500000 0.250000 dofs  3 10 13
+DEAL:: v0.250000 0.500000 v0.500000 0.500000 dofs  16 21 23
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 v0.500000 0.250000 dofs  9 10 11
+DEAL:: v0.750000 0.00000 v0.750000 0.250000 dofs  25 26 27
+DEAL:: v0.500000 0.00000 v0.750000 0.00000 dofs  9 25 28
+DEAL:: v0.500000 0.250000 v0.750000 0.250000 dofs  10 26 29
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 v0.750000 0.250000 dofs  25 26 27
+DEAL:: v1.00000 0.00000 v1.00000 0.250000 dofs  31 32 33
+DEAL:: v0.750000 0.00000 v1.00000 0.00000 dofs  25 31 34
+DEAL:: v0.750000 0.250000 v1.00000 0.250000 dofs  26 32 35
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 v0.500000 0.500000 dofs  10 21 22
+DEAL:: v0.750000 0.250000 v0.750000 0.500000 dofs  26 37 38
+DEAL:: v0.500000 0.250000 v0.750000 0.250000 dofs  10 26 29
+DEAL:: v0.500000 0.500000 v0.750000 0.500000 dofs  21 37 39
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 v0.750000 0.500000 dofs  26 37 38
+DEAL:: v1.00000 0.250000 v1.00000 0.500000 dofs  32 41 42
+DEAL:: v0.750000 0.250000 v1.00000 0.250000 dofs  26 32 35
+DEAL:: v0.750000 0.500000 v1.00000 0.500000 dofs  37 41 43
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 v0.00000 0.750000 dofs  15 45 47
+DEAL:: v0.250000 0.500000 v0.250000 0.750000 dofs  16 46 48
+DEAL:: v0.00000 0.500000 v0.250000 0.500000 dofs  15 16 19
+DEAL:: v0.00000 0.750000 v0.250000 0.750000 dofs  45 46 49
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 v0.250000 0.750000 dofs  16 46 48
+DEAL:: v0.500000 0.500000 v0.500000 0.750000 dofs  21 51 52
+DEAL:: v0.250000 0.500000 v0.500000 0.500000 dofs  16 21 23
+DEAL:: v0.250000 0.750000 v0.500000 0.750000 dofs  46 51 53
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 v0.00000 1.00000 dofs  45 55 57
+DEAL:: v0.250000 0.750000 v0.250000 1.00000 dofs  46 56 58
+DEAL:: v0.00000 0.750000 v0.250000 0.750000 dofs  45 46 49
+DEAL:: v0.00000 1.00000 v0.250000 1.00000 dofs  55 56 59
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 v0.250000 1.00000 dofs  46 56 58
+DEAL:: v0.500000 0.750000 v0.500000 1.00000 dofs  51 61 62
+DEAL:: v0.250000 0.750000 v0.500000 0.750000 dofs  46 51 53
+DEAL:: v0.250000 1.00000 v0.500000 1.00000 dofs  56 61 63
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 v0.500000 0.750000 dofs  21 51 52
+DEAL:: v0.750000 0.500000 v0.750000 0.750000 dofs  37 65 66
+DEAL:: v0.500000 0.500000 v0.750000 0.500000 dofs  21 37 39
+DEAL:: v0.500000 0.750000 v0.750000 0.750000 dofs  51 65 67
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 v0.750000 0.750000 dofs  37 65 66
+DEAL:: v1.00000 0.500000 v1.00000 0.750000 dofs  41 69 70
+DEAL:: v0.750000 0.500000 v1.00000 0.500000 dofs  37 41 43
+DEAL:: v0.750000 0.750000 v1.00000 0.750000 dofs  65 69 71
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 v0.500000 1.00000 dofs  51 61 62
+DEAL:: v0.750000 0.750000 v0.750000 1.00000 dofs  65 73 74
+DEAL:: v0.500000 0.750000 v0.750000 0.750000 dofs  51 65 67
+DEAL:: v0.500000 1.00000 v0.750000 1.00000 dofs  61 73 75
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 v0.750000 1.00000 dofs  65 73 74
+DEAL:: v1.00000 0.750000 v1.00000 1.00000 dofs  69 77 78
+DEAL:: v0.750000 0.750000 v1.00000 0.750000 dofs  65 69 71
+DEAL:: v0.750000 1.00000 v1.00000 1.00000 dofs  73 77 79
 DEAL::FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(2)]
 DEAL::Level 0
-DEAL:: v0.00 0.00 v0.00 1.00 dofs  0 1 2 6 7 8 12
-DEAL:: v1.00 0.00 v1.00 1.00 dofs  3 4 5 9 10 11 13
-DEAL:: v0.00 0.00 v1.00 0.00 dofs  0 1 2 3 4 5 14
-DEAL:: v0.00 1.00 v1.00 1.00 dofs  6 7 8 9 10 11 15
+DEAL:: v0.00000 0.00000 v0.00000 1.00000 dofs  0 1 2 6 7 8 12
+DEAL:: v1.00000 0.00000 v1.00000 1.00000 dofs  3 4 5 9 10 11 13
+DEAL:: v0.00000 0.00000 v1.00000 0.00000 dofs  0 1 2 3 4 5 14
+DEAL:: v0.00000 1.00000 v1.00000 1.00000 dofs  6 7 8 9 10 11 15
 DEAL::Level 1
-DEAL:: v0.00 0.00 v0.00 0.500 dofs  0 1 2 6 7 8 12
-DEAL:: v0.500 0.00 v0.500 0.500 dofs  3 4 5 9 10 11 13
-DEAL:: v0.00 0.00 v0.500 0.00 dofs  0 1 2 3 4 5 14
-DEAL:: v0.00 0.500 v0.500 0.500 dofs  6 7 8 9 10 11 15
+DEAL:: v0.00000 0.00000 v0.00000 0.500000 dofs  0 1 2 6 7 8 12
+DEAL:: v0.500000 0.00000 v0.500000 0.500000 dofs  3 4 5 9 10 11 13
+DEAL:: v0.00000 0.00000 v0.500000 0.00000 dofs  0 1 2 3 4 5 14
+DEAL:: v0.00000 0.500000 v0.500000 0.500000 dofs  6 7 8 9 10 11 15
 DEAL::Level 1
-DEAL:: v0.500 0.00 v0.500 0.500 dofs  3 4 5 9 10 11 13
-DEAL:: v1.00 0.00 v1.00 0.500 dofs  17 18 19 20 21 22 23
-DEAL:: v0.500 0.00 v1.00 0.00 dofs  3 4 5 17 18 19 24
-DEAL:: v0.500 0.500 v1.00 0.500 dofs  9 10 11 20 21 22 25
+DEAL:: v0.500000 0.00000 v0.500000 0.500000 dofs  3 4 5 9 10 11 13
+DEAL:: v1.00000 0.00000 v1.00000 0.500000 dofs  17 18 19 20 21 22 23
+DEAL:: v0.500000 0.00000 v1.00000 0.00000 dofs  3 4 5 17 18 19 24
+DEAL:: v0.500000 0.500000 v1.00000 0.500000 dofs  9 10 11 20 21 22 25
 DEAL::Level 1
-DEAL:: v0.00 0.500 v0.00 1.00 dofs  6 7 8 27 28 29 33
-DEAL:: v0.500 0.500 v0.500 1.00 dofs  9 10 11 30 31 32 34
-DEAL:: v0.00 0.500 v0.500 0.500 dofs  6 7 8 9 10 11 15
-DEAL:: v0.00 1.00 v0.500 1.00 dofs  27 28 29 30 31 32 35
+DEAL:: v0.00000 0.500000 v0.00000 1.00000 dofs  6 7 8 27 28 29 33
+DEAL:: v0.500000 0.500000 v0.500000 1.00000 dofs  9 10 11 30 31 32 34
+DEAL:: v0.00000 0.500000 v0.500000 0.500000 dofs  6 7 8 9 10 11 15
+DEAL:: v0.00000 1.00000 v0.500000 1.00000 dofs  27 28 29 30 31 32 35
 DEAL::Level 1
-DEAL:: v0.500 0.500 v0.500 1.00 dofs  9 10 11 30 31 32 34
-DEAL:: v1.00 0.500 v1.00 1.00 dofs  20 21 22 37 38 39 40
-DEAL:: v0.500 0.500 v1.00 0.500 dofs  9 10 11 20 21 22 25
-DEAL:: v0.500 1.00 v1.00 1.00 dofs  30 31 32 37 38 39 41
-DEAL::Level 2
-DEAL:: v0.00 0.00 v0.00 0.250 dofs  0 1 2 6 7 8 12
-DEAL:: v0.250 0.00 v0.250 0.250 dofs  3 4 5 9 10 11 13
-DEAL:: v0.00 0.00 v0.250 0.00 dofs  0 1 2 3 4 5 14
-DEAL:: v0.00 0.250 v0.250 0.250 dofs  6 7 8 9 10 11 15
-DEAL::Level 2
-DEAL:: v0.250 0.00 v0.250 0.250 dofs  3 4 5 9 10 11 13
-DEAL:: v0.500 0.00 v0.500 0.250 dofs  17 18 19 20 21 22 23
-DEAL:: v0.250 0.00 v0.500 0.00 dofs  3 4 5 17 18 19 24
-DEAL:: v0.250 0.250 v0.500 0.250 dofs  9 10 11 20 21 22 25
-DEAL::Level 2
-DEAL:: v0.00 0.250 v0.00 0.500 dofs  6 7 8 27 28 29 33
-DEAL:: v0.250 0.250 v0.250 0.500 dofs  9 10 11 30 31 32 34
-DEAL:: v0.00 0.250 v0.250 0.250 dofs  6 7 8 9 10 11 15
-DEAL:: v0.00 0.500 v0.250 0.500 dofs  27 28 29 30 31 32 35
-DEAL::Level 2
-DEAL:: v0.250 0.250 v0.250 0.500 dofs  9 10 11 30 31 32 34
-DEAL:: v0.500 0.250 v0.500 0.500 dofs  20 21 22 37 38 39 40
-DEAL:: v0.250 0.250 v0.500 0.250 dofs  9 10 11 20 21 22 25
-DEAL:: v0.250 0.500 v0.500 0.500 dofs  30 31 32 37 38 39 41
-DEAL::Level 2
-DEAL:: v0.500 0.00 v0.500 0.250 dofs  17 18 19 20 21 22 23
-DEAL:: v0.750 0.00 v0.750 0.250 dofs  43 44 45 46 47 48 49
-DEAL:: v0.500 0.00 v0.750 0.00 dofs  17 18 19 43 44 45 50
-DEAL:: v0.500 0.250 v0.750 0.250 dofs  20 21 22 46 47 48 51
-DEAL::Level 2
-DEAL:: v0.750 0.00 v0.750 0.250 dofs  43 44 45 46 47 48 49
-DEAL:: v1.00 0.00 v1.00 0.250 dofs  53 54 55 56 57 58 59
-DEAL:: v0.750 0.00 v1.00 0.00 dofs  43 44 45 53 54 55 60
-DEAL:: v0.750 0.250 v1.00 0.250 dofs  46 47 48 56 57 58 61
-DEAL::Level 2
-DEAL:: v0.500 0.250 v0.500 0.500 dofs  20 21 22 37 38 39 40
-DEAL:: v0.750 0.250 v0.750 0.500 dofs  46 47 48 63 64 65 66
-DEAL:: v0.500 0.250 v0.750 0.250 dofs  20 21 22 46 47 48 51
-DEAL:: v0.500 0.500 v0.750 0.500 dofs  37 38 39 63 64 65 67
-DEAL::Level 2
-DEAL:: v0.750 0.250 v0.750 0.500 dofs  46 47 48 63 64 65 66
-DEAL:: v1.00 0.250 v1.00 0.500 dofs  56 57 58 69 70 71 72
-DEAL:: v0.750 0.250 v1.00 0.250 dofs  46 47 48 56 57 58 61
-DEAL:: v0.750 0.500 v1.00 0.500 dofs  63 64 65 69 70 71 73
-DEAL::Level 2
-DEAL:: v0.00 0.500 v0.00 0.750 dofs  27 28 29 75 76 77 81
-DEAL:: v0.250 0.500 v0.250 0.750 dofs  30 31 32 78 79 80 82
-DEAL:: v0.00 0.500 v0.250 0.500 dofs  27 28 29 30 31 32 35
-DEAL:: v0.00 0.750 v0.250 0.750 dofs  75 76 77 78 79 80 83
-DEAL::Level 2
-DEAL:: v0.250 0.500 v0.250 0.750 dofs  30 31 32 78 79 80 82
-DEAL:: v0.500 0.500 v0.500 0.750 dofs  37 38 39 85 86 87 88
-DEAL:: v0.250 0.500 v0.500 0.500 dofs  30 31 32 37 38 39 41
-DEAL:: v0.250 0.750 v0.500 0.750 dofs  78 79 80 85 86 87 89
-DEAL::Level 2
-DEAL:: v0.00 0.750 v0.00 1.00 dofs  75 76 77 91 92 93 97
-DEAL:: v0.250 0.750 v0.250 1.00 dofs  78 79 80 94 95 96 98
-DEAL:: v0.00 0.750 v0.250 0.750 dofs  75 76 77 78 79 80 83
-DEAL:: v0.00 1.00 v0.250 1.00 dofs  91 92 93 94 95 96 99
-DEAL::Level 2
-DEAL:: v0.250 0.750 v0.250 1.00 dofs  78 79 80 94 95 96 98
-DEAL:: v0.500 0.750 v0.500 1.00 dofs  85 86 87 101 102 103 104
-DEAL:: v0.250 0.750 v0.500 0.750 dofs  78 79 80 85 86 87 89
-DEAL:: v0.250 1.00 v0.500 1.00 dofs  94 95 96 101 102 103 105
-DEAL::Level 2
-DEAL:: v0.500 0.500 v0.500 0.750 dofs  37 38 39 85 86 87 88
-DEAL:: v0.750 0.500 v0.750 0.750 dofs  63 64 65 107 108 109 110
-DEAL:: v0.500 0.500 v0.750 0.500 dofs  37 38 39 63 64 65 67
-DEAL:: v0.500 0.750 v0.750 0.750 dofs  85 86 87 107 108 109 111
-DEAL::Level 2
-DEAL:: v0.750 0.500 v0.750 0.750 dofs  63 64 65 107 108 109 110
-DEAL:: v1.00 0.500 v1.00 0.750 dofs  69 70 71 113 114 115 116
-DEAL:: v0.750 0.500 v1.00 0.500 dofs  63 64 65 69 70 71 73
-DEAL:: v0.750 0.750 v1.00 0.750 dofs  107 108 109 113 114 115 117
-DEAL::Level 2
-DEAL:: v0.500 0.750 v0.500 1.00 dofs  85 86 87 101 102 103 104
-DEAL:: v0.750 0.750 v0.750 1.00 dofs  107 108 109 119 120 121 122
-DEAL:: v0.500 0.750 v0.750 0.750 dofs  85 86 87 107 108 109 111
-DEAL:: v0.500 1.00 v0.750 1.00 dofs  101 102 103 119 120 121 123
-DEAL::Level 2
-DEAL:: v0.750 0.750 v0.750 1.00 dofs  107 108 109 119 120 121 122
-DEAL:: v1.00 0.750 v1.00 1.00 dofs  113 114 115 125 126 127 128
-DEAL:: v0.750 0.750 v1.00 0.750 dofs  107 108 109 113 114 115 117
-DEAL:: v0.750 1.00 v1.00 1.00 dofs  119 120 121 125 126 127 129
+DEAL:: v0.500000 0.500000 v0.500000 1.00000 dofs  9 10 11 30 31 32 34
+DEAL:: v1.00000 0.500000 v1.00000 1.00000 dofs  20 21 22 37 38 39 40
+DEAL:: v0.500000 0.500000 v1.00000 0.500000 dofs  9 10 11 20 21 22 25
+DEAL:: v0.500000 1.00000 v1.00000 1.00000 dofs  30 31 32 37 38 39 41
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 v0.00000 0.250000 dofs  0 1 2 6 7 8 12
+DEAL:: v0.250000 0.00000 v0.250000 0.250000 dofs  3 4 5 9 10 11 13
+DEAL:: v0.00000 0.00000 v0.250000 0.00000 dofs  0 1 2 3 4 5 14
+DEAL:: v0.00000 0.250000 v0.250000 0.250000 dofs  6 7 8 9 10 11 15
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 v0.250000 0.250000 dofs  3 4 5 9 10 11 13
+DEAL:: v0.500000 0.00000 v0.500000 0.250000 dofs  17 18 19 20 21 22 23
+DEAL:: v0.250000 0.00000 v0.500000 0.00000 dofs  3 4 5 17 18 19 24
+DEAL:: v0.250000 0.250000 v0.500000 0.250000 dofs  9 10 11 20 21 22 25
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 v0.00000 0.500000 dofs  6 7 8 27 28 29 33
+DEAL:: v0.250000 0.250000 v0.250000 0.500000 dofs  9 10 11 30 31 32 34
+DEAL:: v0.00000 0.250000 v0.250000 0.250000 dofs  6 7 8 9 10 11 15
+DEAL:: v0.00000 0.500000 v0.250000 0.500000 dofs  27 28 29 30 31 32 35
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 v0.250000 0.500000 dofs  9 10 11 30 31 32 34
+DEAL:: v0.500000 0.250000 v0.500000 0.500000 dofs  20 21 22 37 38 39 40
+DEAL:: v0.250000 0.250000 v0.500000 0.250000 dofs  9 10 11 20 21 22 25
+DEAL:: v0.250000 0.500000 v0.500000 0.500000 dofs  30 31 32 37 38 39 41
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 v0.500000 0.250000 dofs  17 18 19 20 21 22 23
+DEAL:: v0.750000 0.00000 v0.750000 0.250000 dofs  43 44 45 46 47 48 49
+DEAL:: v0.500000 0.00000 v0.750000 0.00000 dofs  17 18 19 43 44 45 50
+DEAL:: v0.500000 0.250000 v0.750000 0.250000 dofs  20 21 22 46 47 48 51
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 v0.750000 0.250000 dofs  43 44 45 46 47 48 49
+DEAL:: v1.00000 0.00000 v1.00000 0.250000 dofs  53 54 55 56 57 58 59
+DEAL:: v0.750000 0.00000 v1.00000 0.00000 dofs  43 44 45 53 54 55 60
+DEAL:: v0.750000 0.250000 v1.00000 0.250000 dofs  46 47 48 56 57 58 61
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 v0.500000 0.500000 dofs  20 21 22 37 38 39 40
+DEAL:: v0.750000 0.250000 v0.750000 0.500000 dofs  46 47 48 63 64 65 66
+DEAL:: v0.500000 0.250000 v0.750000 0.250000 dofs  20 21 22 46 47 48 51
+DEAL:: v0.500000 0.500000 v0.750000 0.500000 dofs  37 38 39 63 64 65 67
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 v0.750000 0.500000 dofs  46 47 48 63 64 65 66
+DEAL:: v1.00000 0.250000 v1.00000 0.500000 dofs  56 57 58 69 70 71 72
+DEAL:: v0.750000 0.250000 v1.00000 0.250000 dofs  46 47 48 56 57 58 61
+DEAL:: v0.750000 0.500000 v1.00000 0.500000 dofs  63 64 65 69 70 71 73
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 v0.00000 0.750000 dofs  27 28 29 75 76 77 81
+DEAL:: v0.250000 0.500000 v0.250000 0.750000 dofs  30 31 32 78 79 80 82
+DEAL:: v0.00000 0.500000 v0.250000 0.500000 dofs  27 28 29 30 31 32 35
+DEAL:: v0.00000 0.750000 v0.250000 0.750000 dofs  75 76 77 78 79 80 83
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 v0.250000 0.750000 dofs  30 31 32 78 79 80 82
+DEAL:: v0.500000 0.500000 v0.500000 0.750000 dofs  37 38 39 85 86 87 88
+DEAL:: v0.250000 0.500000 v0.500000 0.500000 dofs  30 31 32 37 38 39 41
+DEAL:: v0.250000 0.750000 v0.500000 0.750000 dofs  78 79 80 85 86 87 89
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 v0.00000 1.00000 dofs  75 76 77 91 92 93 97
+DEAL:: v0.250000 0.750000 v0.250000 1.00000 dofs  78 79 80 94 95 96 98
+DEAL:: v0.00000 0.750000 v0.250000 0.750000 dofs  75 76 77 78 79 80 83
+DEAL:: v0.00000 1.00000 v0.250000 1.00000 dofs  91 92 93 94 95 96 99
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 v0.250000 1.00000 dofs  78 79 80 94 95 96 98
+DEAL:: v0.500000 0.750000 v0.500000 1.00000 dofs  85 86 87 101 102 103 104
+DEAL:: v0.250000 0.750000 v0.500000 0.750000 dofs  78 79 80 85 86 87 89
+DEAL:: v0.250000 1.00000 v0.500000 1.00000 dofs  94 95 96 101 102 103 105
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 v0.500000 0.750000 dofs  37 38 39 85 86 87 88
+DEAL:: v0.750000 0.500000 v0.750000 0.750000 dofs  63 64 65 107 108 109 110
+DEAL:: v0.500000 0.500000 v0.750000 0.500000 dofs  37 38 39 63 64 65 67
+DEAL:: v0.500000 0.750000 v0.750000 0.750000 dofs  85 86 87 107 108 109 111
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 v0.750000 0.750000 dofs  63 64 65 107 108 109 110
+DEAL:: v1.00000 0.500000 v1.00000 0.750000 dofs  69 70 71 113 114 115 116
+DEAL:: v0.750000 0.500000 v1.00000 0.500000 dofs  63 64 65 69 70 71 73
+DEAL:: v0.750000 0.750000 v1.00000 0.750000 dofs  107 108 109 113 114 115 117
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 v0.500000 1.00000 dofs  85 86 87 101 102 103 104
+DEAL:: v0.750000 0.750000 v0.750000 1.00000 dofs  107 108 109 119 120 121 122
+DEAL:: v0.500000 0.750000 v0.750000 0.750000 dofs  85 86 87 107 108 109 111
+DEAL:: v0.500000 1.00000 v0.750000 1.00000 dofs  101 102 103 119 120 121 123
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 v0.750000 1.00000 dofs  107 108 109 119 120 121 122
+DEAL:: v1.00000 0.750000 v1.00000 1.00000 dofs  113 114 115 125 126 127 128
+DEAL:: v0.750000 0.750000 v1.00000 0.750000 dofs  107 108 109 113 114 115 117
+DEAL:: v0.750000 1.00000 v1.00000 1.00000 dofs  119 120 121 125 126 127 129
 DEAL::FE_Q<3>(1)
 DEAL::Level 0
-DEAL:: v0.00 0.00 0.00 v0.00 1.00 0.00 v0.00 0.00 1.00 v0.00 1.00 1.00 dofs  0 2 4 6
-DEAL:: v1.00 0.00 0.00 v1.00 1.00 0.00 v1.00 0.00 1.00 v1.00 1.00 1.00 dofs  1 3 5 7
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 1.00 v1.00 0.00 0.00 v1.00 0.00 1.00 dofs  0 4 1 5
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 1.00 v1.00 1.00 0.00 v1.00 1.00 1.00 dofs  2 6 3 7
-DEAL:: v0.00 0.00 0.00 v1.00 0.00 0.00 v0.00 1.00 0.00 v1.00 1.00 0.00 dofs  0 1 2 3
-DEAL:: v0.00 0.00 1.00 v1.00 0.00 1.00 v0.00 1.00 1.00 v1.00 1.00 1.00 dofs  4 5 6 7
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 dofs  0 2 4 6
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.00000 1.00000 v1.00000 1.00000 1.00000 dofs  1 3 5 7
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 1.00000 v1.00000 0.00000 0.00000 v1.00000 0.00000 1.00000 dofs  0 4 1 5
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 0.00000 v1.00000 1.00000 1.00000 dofs  2 6 3 7
+DEAL:: v0.00000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  0 1 2 3
+DEAL:: v0.00000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  4 5 6 7
 DEAL::Level 1
-DEAL:: v0.00 0.00 0.00 v0.00 0.500 0.00 v0.00 0.00 0.500 v0.00 0.500 0.500 dofs  0 2 4 6
-DEAL:: v0.500 0.00 0.00 v0.500 0.500 0.00 v0.500 0.00 0.500 v0.500 0.500 0.500 dofs  1 3 5 7
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 0.500 v0.500 0.00 0.00 v0.500 0.00 0.500 dofs  0 4 1 5
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.500 v0.500 0.500 0.00 v0.500 0.500 0.500 dofs  2 6 3 7
-DEAL:: v0.00 0.00 0.00 v0.500 0.00 0.00 v0.00 0.500 0.00 v0.500 0.500 0.00 dofs  0 1 2 3
-DEAL:: v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  4 5 6 7
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.00000 0.00000 0.500000 v0.00000 0.500000 0.500000 dofs  0 2 4 6
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 dofs  1 3 5 7
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.00000 v0.500000 0.00000 0.500000 dofs  0 4 1 5
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 dofs  2 6 3 7
+DEAL:: v0.00000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 dofs  0 1 2 3
+DEAL:: v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  4 5 6 7
 DEAL::Level 1
-DEAL:: v0.500 0.00 0.00 v0.500 0.500 0.00 v0.500 0.00 0.500 v0.500 0.500 0.500 dofs  1 3 5 7
-DEAL:: v1.00 0.00 0.00 v1.00 0.500 0.00 v1.00 0.00 0.500 v1.00 0.500 0.500 dofs  8 9 10 11
-DEAL:: v0.500 0.00 0.00 v0.500 0.00 0.500 v1.00 0.00 0.00 v1.00 0.00 0.500 dofs  1 5 8 10
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.500 v1.00 0.500 0.00 v1.00 0.500 0.500 dofs  3 7 9 11
-DEAL:: v0.500 0.00 0.00 v1.00 0.00 0.00 v0.500 0.500 0.00 v1.00 0.500 0.00 dofs  1 8 3 9
-DEAL:: v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  5 10 7 11
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 dofs  1 3 5 7
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 0.500000 0.00000 v1.00000 0.00000 0.500000 v1.00000 0.500000 0.500000 dofs  8 9 10 11
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.00000 v1.00000 0.00000 0.500000 dofs  1 5 8 10
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.500000 dofs  3 7 9 11
+DEAL:: v0.500000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 dofs  1 8 3 9
+DEAL:: v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  5 10 7 11
 DEAL::Level 1
-DEAL:: v0.00 0.500 0.00 v0.00 1.00 0.00 v0.00 0.500 0.500 v0.00 1.00 0.500 dofs  2 12 6 14
-DEAL:: v0.500 0.500 0.00 v0.500 1.00 0.00 v0.500 0.500 0.500 v0.500 1.00 0.500 dofs  3 13 7 15
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.500 v0.500 0.500 0.00 v0.500 0.500 0.500 dofs  2 6 3 7
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 0.500 v0.500 1.00 0.00 v0.500 1.00 0.500 dofs  12 14 13 15
-DEAL:: v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 1.00 0.00 v0.500 1.00 0.00 dofs  2 3 12 13
-DEAL:: v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  6 7 14 15
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.500000 0.500000 v0.00000 1.00000 0.500000 dofs  2 12 6 14
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 dofs  3 13 7 15
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 dofs  2 6 3 7
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.00000 v0.500000 1.00000 0.500000 dofs  12 14 13 15
+DEAL:: v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.500000 1.00000 0.00000 dofs  2 3 12 13
+DEAL:: v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  6 7 14 15
 DEAL::Level 1
-DEAL:: v0.500 0.500 0.00 v0.500 1.00 0.00 v0.500 0.500 0.500 v0.500 1.00 0.500 dofs  3 13 7 15
-DEAL:: v1.00 0.500 0.00 v1.00 1.00 0.00 v1.00 0.500 0.500 v1.00 1.00 0.500 dofs  9 16 11 17
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.500 v1.00 0.500 0.00 v1.00 0.500 0.500 dofs  3 7 9 11
-DEAL:: v0.500 1.00 0.00 v0.500 1.00 0.500 v1.00 1.00 0.00 v1.00 1.00 0.500 dofs  13 15 16 17
-DEAL:: v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 1.00 0.00 v1.00 1.00 0.00 dofs  3 9 13 16
-DEAL:: v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  7 11 15 17
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 dofs  3 13 7 15
+DEAL:: v1.00000 0.500000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.500000 0.500000 v1.00000 1.00000 0.500000 dofs  9 16 11 17
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.500000 dofs  3 7 9 11
+DEAL:: v0.500000 1.00000 0.00000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.00000 v1.00000 1.00000 0.500000 dofs  13 15 16 17
+DEAL:: v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  3 9 13 16
+DEAL:: v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  7 11 15 17
 DEAL::Level 1
-DEAL:: v0.00 0.00 0.500 v0.00 0.500 0.500 v0.00 0.00 1.00 v0.00 0.500 1.00 dofs  4 6 18 20
-DEAL:: v0.500 0.00 0.500 v0.500 0.500 0.500 v0.500 0.00 1.00 v0.500 0.500 1.00 dofs  5 7 19 21
-DEAL:: v0.00 0.00 0.500 v0.00 0.00 1.00 v0.500 0.00 0.500 v0.500 0.00 1.00 dofs  4 18 5 19
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 1.00 v0.500 0.500 0.500 v0.500 0.500 1.00 dofs  6 20 7 21
-DEAL:: v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  4 5 6 7
-DEAL:: v0.00 0.00 1.00 v0.500 0.00 1.00 v0.00 0.500 1.00 v0.500 0.500 1.00 dofs  18 19 20 21
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.00000 0.00000 1.00000 v0.00000 0.500000 1.00000 dofs  4 6 18 20
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.00000 1.00000 v0.500000 0.500000 1.00000 dofs  5 7 19 21
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.00000 1.00000 v0.500000 0.00000 0.500000 v0.500000 0.00000 1.00000 dofs  4 18 5 19
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 dofs  6 20 7 21
+DEAL:: v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  4 5 6 7
+DEAL:: v0.00000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  18 19 20 21
 DEAL::Level 1
-DEAL:: v0.500 0.00 0.500 v0.500 0.500 0.500 v0.500 0.00 1.00 v0.500 0.500 1.00 dofs  5 7 19 21
-DEAL:: v1.00 0.00 0.500 v1.00 0.500 0.500 v1.00 0.00 1.00 v1.00 0.500 1.00 dofs  10 11 22 23
-DEAL:: v0.500 0.00 0.500 v0.500 0.00 1.00 v1.00 0.00 0.500 v1.00 0.00 1.00 dofs  5 19 10 22
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 1.00 v1.00 0.500 0.500 v1.00 0.500 1.00 dofs  7 21 11 23
-DEAL:: v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  5 10 7 11
-DEAL:: v0.500 0.00 1.00 v1.00 0.00 1.00 v0.500 0.500 1.00 v1.00 0.500 1.00 dofs  19 22 21 23
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.00000 1.00000 v0.500000 0.500000 1.00000 dofs  5 7 19 21
+DEAL:: v1.00000 0.00000 0.500000 v1.00000 0.500000 0.500000 v1.00000 0.00000 1.00000 v1.00000 0.500000 1.00000 dofs  10 11 22 23
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.00000 1.00000 v1.00000 0.00000 0.500000 v1.00000 0.00000 1.00000 dofs  5 19 10 22
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 0.500000 v1.00000 0.500000 1.00000 dofs  7 21 11 23
+DEAL:: v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  5 10 7 11
+DEAL:: v0.500000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  19 22 21 23
 DEAL::Level 1
-DEAL:: v0.00 0.500 0.500 v0.00 1.00 0.500 v0.00 0.500 1.00 v0.00 1.00 1.00 dofs  6 14 20 24
-DEAL:: v0.500 0.500 0.500 v0.500 1.00 0.500 v0.500 0.500 1.00 v0.500 1.00 1.00 dofs  7 15 21 25
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 1.00 v0.500 0.500 0.500 v0.500 0.500 1.00 dofs  6 20 7 21
-DEAL:: v0.00 1.00 0.500 v0.00 1.00 1.00 v0.500 1.00 0.500 v0.500 1.00 1.00 dofs  14 24 15 25
-DEAL:: v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  6 7 14 15
-DEAL:: v0.00 0.500 1.00 v0.500 0.500 1.00 v0.00 1.00 1.00 v0.500 1.00 1.00 dofs  20 21 24 25
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.00000 0.500000 1.00000 v0.00000 1.00000 1.00000 dofs  6 14 20 24
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.500000 1.00000 v0.500000 1.00000 1.00000 dofs  7 15 21 25
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 dofs  6 20 7 21
+DEAL:: v0.00000 1.00000 0.500000 v0.00000 1.00000 1.00000 v0.500000 1.00000 0.500000 v0.500000 1.00000 1.00000 dofs  14 24 15 25
+DEAL:: v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  6 7 14 15
+DEAL:: v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.00000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  20 21 24 25
 DEAL::Level 1
-DEAL:: v0.500 0.500 0.500 v0.500 1.00 0.500 v0.500 0.500 1.00 v0.500 1.00 1.00 dofs  7 15 21 25
-DEAL:: v1.00 0.500 0.500 v1.00 1.00 0.500 v1.00 0.500 1.00 v1.00 1.00 1.00 dofs  11 17 23 26
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 1.00 v1.00 0.500 0.500 v1.00 0.500 1.00 dofs  7 21 11 23
-DEAL:: v0.500 1.00 0.500 v0.500 1.00 1.00 v1.00 1.00 0.500 v1.00 1.00 1.00 dofs  15 25 17 26
-DEAL:: v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  7 11 15 17
-DEAL:: v0.500 0.500 1.00 v1.00 0.500 1.00 v0.500 1.00 1.00 v1.00 1.00 1.00 dofs  21 23 25 26
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.00 v0.00 0.250 0.00 v0.00 0.00 0.250 v0.00 0.250 0.250 dofs  0 2 4 6
-DEAL:: v0.250 0.00 0.00 v0.250 0.250 0.00 v0.250 0.00 0.250 v0.250 0.250 0.250 dofs  1 3 5 7
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 0.250 v0.250 0.00 0.00 v0.250 0.00 0.250 dofs  0 4 1 5
-DEAL:: v0.00 0.250 0.00 v0.00 0.250 0.250 v0.250 0.250 0.00 v0.250 0.250 0.250 dofs  2 6 3 7
-DEAL:: v0.00 0.00 0.00 v0.250 0.00 0.00 v0.00 0.250 0.00 v0.250 0.250 0.00 dofs  0 1 2 3
-DEAL:: v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  4 5 6 7
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.00 v0.250 0.250 0.00 v0.250 0.00 0.250 v0.250 0.250 0.250 dofs  1 3 5 7
-DEAL:: v0.500 0.00 0.00 v0.500 0.250 0.00 v0.500 0.00 0.250 v0.500 0.250 0.250 dofs  8 9 10 11
-DEAL:: v0.250 0.00 0.00 v0.250 0.00 0.250 v0.500 0.00 0.00 v0.500 0.00 0.250 dofs  1 5 8 10
-DEAL:: v0.250 0.250 0.00 v0.250 0.250 0.250 v0.500 0.250 0.00 v0.500 0.250 0.250 dofs  3 7 9 11
-DEAL:: v0.250 0.00 0.00 v0.500 0.00 0.00 v0.250 0.250 0.00 v0.500 0.250 0.00 dofs  1 8 3 9
-DEAL:: v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  5 10 7 11
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.00 v0.00 0.500 0.00 v0.00 0.250 0.250 v0.00 0.500 0.250 dofs  2 12 6 14
-DEAL:: v0.250 0.250 0.00 v0.250 0.500 0.00 v0.250 0.250 0.250 v0.250 0.500 0.250 dofs  3 13 7 15
-DEAL:: v0.00 0.250 0.00 v0.00 0.250 0.250 v0.250 0.250 0.00 v0.250 0.250 0.250 dofs  2 6 3 7
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.250 v0.250 0.500 0.00 v0.250 0.500 0.250 dofs  12 14 13 15
-DEAL:: v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.500 0.00 v0.250 0.500 0.00 dofs  2 3 12 13
-DEAL:: v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  6 7 14 15
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.00 v0.250 0.500 0.00 v0.250 0.250 0.250 v0.250 0.500 0.250 dofs  3 13 7 15
-DEAL:: v0.500 0.250 0.00 v0.500 0.500 0.00 v0.500 0.250 0.250 v0.500 0.500 0.250 dofs  9 16 11 17
-DEAL:: v0.250 0.250 0.00 v0.250 0.250 0.250 v0.500 0.250 0.00 v0.500 0.250 0.250 dofs  3 7 9 11
-DEAL:: v0.250 0.500 0.00 v0.250 0.500 0.250 v0.500 0.500 0.00 v0.500 0.500 0.250 dofs  13 15 16 17
-DEAL:: v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.500 0.00 v0.500 0.500 0.00 dofs  3 9 13 16
-DEAL:: v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  7 11 15 17
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.250 v0.00 0.250 0.250 v0.00 0.00 0.500 v0.00 0.250 0.500 dofs  4 6 18 20
-DEAL:: v0.250 0.00 0.250 v0.250 0.250 0.250 v0.250 0.00 0.500 v0.250 0.250 0.500 dofs  5 7 19 21
-DEAL:: v0.00 0.00 0.250 v0.00 0.00 0.500 v0.250 0.00 0.250 v0.250 0.00 0.500 dofs  4 18 5 19
-DEAL:: v0.00 0.250 0.250 v0.00 0.250 0.500 v0.250 0.250 0.250 v0.250 0.250 0.500 dofs  6 20 7 21
-DEAL:: v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  4 5 6 7
-DEAL:: v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  18 19 20 21
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.250 v0.250 0.250 0.250 v0.250 0.00 0.500 v0.250 0.250 0.500 dofs  5 7 19 21
-DEAL:: v0.500 0.00 0.250 v0.500 0.250 0.250 v0.500 0.00 0.500 v0.500 0.250 0.500 dofs  10 11 22 23
-DEAL:: v0.250 0.00 0.250 v0.250 0.00 0.500 v0.500 0.00 0.250 v0.500 0.00 0.500 dofs  5 19 10 22
-DEAL:: v0.250 0.250 0.250 v0.250 0.250 0.500 v0.500 0.250 0.250 v0.500 0.250 0.500 dofs  7 21 11 23
-DEAL:: v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  5 10 7 11
-DEAL:: v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  19 22 21 23
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.250 v0.00 0.500 0.250 v0.00 0.250 0.500 v0.00 0.500 0.500 dofs  6 14 20 24
-DEAL:: v0.250 0.250 0.250 v0.250 0.500 0.250 v0.250 0.250 0.500 v0.250 0.500 0.500 dofs  7 15 21 25
-DEAL:: v0.00 0.250 0.250 v0.00 0.250 0.500 v0.250 0.250 0.250 v0.250 0.250 0.500 dofs  6 20 7 21
-DEAL:: v0.00 0.500 0.250 v0.00 0.500 0.500 v0.250 0.500 0.250 v0.250 0.500 0.500 dofs  14 24 15 25
-DEAL:: v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  6 7 14 15
-DEAL:: v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  20 21 24 25
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.250 v0.250 0.500 0.250 v0.250 0.250 0.500 v0.250 0.500 0.500 dofs  7 15 21 25
-DEAL:: v0.500 0.250 0.250 v0.500 0.500 0.250 v0.500 0.250 0.500 v0.500 0.500 0.500 dofs  11 17 23 26
-DEAL:: v0.250 0.250 0.250 v0.250 0.250 0.500 v0.500 0.250 0.250 v0.500 0.250 0.500 dofs  7 21 11 23
-DEAL:: v0.250 0.500 0.250 v0.250 0.500 0.500 v0.500 0.500 0.250 v0.500 0.500 0.500 dofs  15 25 17 26
-DEAL:: v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  7 11 15 17
-DEAL:: v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  21 23 25 26
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.00 v0.500 0.250 0.00 v0.500 0.00 0.250 v0.500 0.250 0.250 dofs  8 9 10 11
-DEAL:: v0.750 0.00 0.00 v0.750 0.250 0.00 v0.750 0.00 0.250 v0.750 0.250 0.250 dofs  27 28 29 30
-DEAL:: v0.500 0.00 0.00 v0.500 0.00 0.250 v0.750 0.00 0.00 v0.750 0.00 0.250 dofs  8 10 27 29
-DEAL:: v0.500 0.250 0.00 v0.500 0.250 0.250 v0.750 0.250 0.00 v0.750 0.250 0.250 dofs  9 11 28 30
-DEAL:: v0.500 0.00 0.00 v0.750 0.00 0.00 v0.500 0.250 0.00 v0.750 0.250 0.00 dofs  8 27 9 28
-DEAL:: v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  10 29 11 30
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.00 v0.750 0.250 0.00 v0.750 0.00 0.250 v0.750 0.250 0.250 dofs  27 28 29 30
-DEAL:: v1.00 0.00 0.00 v1.00 0.250 0.00 v1.00 0.00 0.250 v1.00 0.250 0.250 dofs  31 32 33 34
-DEAL:: v0.750 0.00 0.00 v0.750 0.00 0.250 v1.00 0.00 0.00 v1.00 0.00 0.250 dofs  27 29 31 33
-DEAL:: v0.750 0.250 0.00 v0.750 0.250 0.250 v1.00 0.250 0.00 v1.00 0.250 0.250 dofs  28 30 32 34
-DEAL:: v0.750 0.00 0.00 v1.00 0.00 0.00 v0.750 0.250 0.00 v1.00 0.250 0.00 dofs  27 31 28 32
-DEAL:: v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  29 33 30 34
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.00 v0.500 0.500 0.00 v0.500 0.250 0.250 v0.500 0.500 0.250 dofs  9 16 11 17
-DEAL:: v0.750 0.250 0.00 v0.750 0.500 0.00 v0.750 0.250 0.250 v0.750 0.500 0.250 dofs  28 35 30 36
-DEAL:: v0.500 0.250 0.00 v0.500 0.250 0.250 v0.750 0.250 0.00 v0.750 0.250 0.250 dofs  9 11 28 30
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.250 v0.750 0.500 0.00 v0.750 0.500 0.250 dofs  16 17 35 36
-DEAL:: v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.500 0.00 v0.750 0.500 0.00 dofs  9 28 16 35
-DEAL:: v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  11 30 17 36
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.00 v0.750 0.500 0.00 v0.750 0.250 0.250 v0.750 0.500 0.250 dofs  28 35 30 36
-DEAL:: v1.00 0.250 0.00 v1.00 0.500 0.00 v1.00 0.250 0.250 v1.00 0.500 0.250 dofs  32 37 34 38
-DEAL:: v0.750 0.250 0.00 v0.750 0.250 0.250 v1.00 0.250 0.00 v1.00 0.250 0.250 dofs  28 30 32 34
-DEAL:: v0.750 0.500 0.00 v0.750 0.500 0.250 v1.00 0.500 0.00 v1.00 0.500 0.250 dofs  35 36 37 38
-DEAL:: v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.500 0.00 v1.00 0.500 0.00 dofs  28 32 35 37
-DEAL:: v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  30 34 36 38
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.250 v0.500 0.250 0.250 v0.500 0.00 0.500 v0.500 0.250 0.500 dofs  10 11 22 23
-DEAL:: v0.750 0.00 0.250 v0.750 0.250 0.250 v0.750 0.00 0.500 v0.750 0.250 0.500 dofs  29 30 39 40
-DEAL:: v0.500 0.00 0.250 v0.500 0.00 0.500 v0.750 0.00 0.250 v0.750 0.00 0.500 dofs  10 22 29 39
-DEAL:: v0.500 0.250 0.250 v0.500 0.250 0.500 v0.750 0.250 0.250 v0.750 0.250 0.500 dofs  11 23 30 40
-DEAL:: v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  10 29 11 30
-DEAL:: v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  22 39 23 40
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.250 v0.750 0.250 0.250 v0.750 0.00 0.500 v0.750 0.250 0.500 dofs  29 30 39 40
-DEAL:: v1.00 0.00 0.250 v1.00 0.250 0.250 v1.00 0.00 0.500 v1.00 0.250 0.500 dofs  33 34 41 42
-DEAL:: v0.750 0.00 0.250 v0.750 0.00 0.500 v1.00 0.00 0.250 v1.00 0.00 0.500 dofs  29 39 33 41
-DEAL:: v0.750 0.250 0.250 v0.750 0.250 0.500 v1.00 0.250 0.250 v1.00 0.250 0.500 dofs  30 40 34 42
-DEAL:: v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  29 33 30 34
-DEAL:: v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  39 41 40 42
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.250 v0.500 0.500 0.250 v0.500 0.250 0.500 v0.500 0.500 0.500 dofs  11 17 23 26
-DEAL:: v0.750 0.250 0.250 v0.750 0.500 0.250 v0.750 0.250 0.500 v0.750 0.500 0.500 dofs  30 36 40 43
-DEAL:: v0.500 0.250 0.250 v0.500 0.250 0.500 v0.750 0.250 0.250 v0.750 0.250 0.500 dofs  11 23 30 40
-DEAL:: v0.500 0.500 0.250 v0.500 0.500 0.500 v0.750 0.500 0.250 v0.750 0.500 0.500 dofs  17 26 36 43
-DEAL:: v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  11 30 17 36
-DEAL:: v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  23 40 26 43
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.250 v0.750 0.500 0.250 v0.750 0.250 0.500 v0.750 0.500 0.500 dofs  30 36 40 43
-DEAL:: v1.00 0.250 0.250 v1.00 0.500 0.250 v1.00 0.250 0.500 v1.00 0.500 0.500 dofs  34 38 42 44
-DEAL:: v0.750 0.250 0.250 v0.750 0.250 0.500 v1.00 0.250 0.250 v1.00 0.250 0.500 dofs  30 40 34 42
-DEAL:: v0.750 0.500 0.250 v0.750 0.500 0.500 v1.00 0.500 0.250 v1.00 0.500 0.500 dofs  36 43 38 44
-DEAL:: v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  30 34 36 38
-DEAL:: v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  40 42 43 44
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.00 v0.00 0.750 0.00 v0.00 0.500 0.250 v0.00 0.750 0.250 dofs  12 45 14 47
-DEAL:: v0.250 0.500 0.00 v0.250 0.750 0.00 v0.250 0.500 0.250 v0.250 0.750 0.250 dofs  13 46 15 48
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.250 v0.250 0.500 0.00 v0.250 0.500 0.250 dofs  12 14 13 15
-DEAL:: v0.00 0.750 0.00 v0.00 0.750 0.250 v0.250 0.750 0.00 v0.250 0.750 0.250 dofs  45 47 46 48
-DEAL:: v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.750 0.00 v0.250 0.750 0.00 dofs  12 13 45 46
-DEAL:: v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  14 15 47 48
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.00 v0.250 0.750 0.00 v0.250 0.500 0.250 v0.250 0.750 0.250 dofs  13 46 15 48
-DEAL:: v0.500 0.500 0.00 v0.500 0.750 0.00 v0.500 0.500 0.250 v0.500 0.750 0.250 dofs  16 49 17 50
-DEAL:: v0.250 0.500 0.00 v0.250 0.500 0.250 v0.500 0.500 0.00 v0.500 0.500 0.250 dofs  13 15 16 17
-DEAL:: v0.250 0.750 0.00 v0.250 0.750 0.250 v0.500 0.750 0.00 v0.500 0.750 0.250 dofs  46 48 49 50
-DEAL:: v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.750 0.00 v0.500 0.750 0.00 dofs  13 16 46 49
-DEAL:: v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  15 17 48 50
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.00 v0.00 1.00 0.00 v0.00 0.750 0.250 v0.00 1.00 0.250 dofs  45 51 47 53
-DEAL:: v0.250 0.750 0.00 v0.250 1.00 0.00 v0.250 0.750 0.250 v0.250 1.00 0.250 dofs  46 52 48 54
-DEAL:: v0.00 0.750 0.00 v0.00 0.750 0.250 v0.250 0.750 0.00 v0.250 0.750 0.250 dofs  45 47 46 48
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 0.250 v0.250 1.00 0.00 v0.250 1.00 0.250 dofs  51 53 52 54
-DEAL:: v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 1.00 0.00 v0.250 1.00 0.00 dofs  45 46 51 52
-DEAL:: v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  47 48 53 54
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.00 v0.250 1.00 0.00 v0.250 0.750 0.250 v0.250 1.00 0.250 dofs  46 52 48 54
-DEAL:: v0.500 0.750 0.00 v0.500 1.00 0.00 v0.500 0.750 0.250 v0.500 1.00 0.250 dofs  49 55 50 56
-DEAL:: v0.250 0.750 0.00 v0.250 0.750 0.250 v0.500 0.750 0.00 v0.500 0.750 0.250 dofs  46 48 49 50
-DEAL:: v0.250 1.00 0.00 v0.250 1.00 0.250 v0.500 1.00 0.00 v0.500 1.00 0.250 dofs  52 54 55 56
-DEAL:: v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 1.00 0.00 v0.500 1.00 0.00 dofs  46 49 52 55
-DEAL:: v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  48 50 54 56
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.250 v0.00 0.750 0.250 v0.00 0.500 0.500 v0.00 0.750 0.500 dofs  14 47 24 57
-DEAL:: v0.250 0.500 0.250 v0.250 0.750 0.250 v0.250 0.500 0.500 v0.250 0.750 0.500 dofs  15 48 25 58
-DEAL:: v0.00 0.500 0.250 v0.00 0.500 0.500 v0.250 0.500 0.250 v0.250 0.500 0.500 dofs  14 24 15 25
-DEAL:: v0.00 0.750 0.250 v0.00 0.750 0.500 v0.250 0.750 0.250 v0.250 0.750 0.500 dofs  47 57 48 58
-DEAL:: v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  14 15 47 48
-DEAL:: v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  24 25 57 58
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.250 v0.250 0.750 0.250 v0.250 0.500 0.500 v0.250 0.750 0.500 dofs  15 48 25 58
-DEAL:: v0.500 0.500 0.250 v0.500 0.750 0.250 v0.500 0.500 0.500 v0.500 0.750 0.500 dofs  17 50 26 59
-DEAL:: v0.250 0.500 0.250 v0.250 0.500 0.500 v0.500 0.500 0.250 v0.500 0.500 0.500 dofs  15 25 17 26
-DEAL:: v0.250 0.750 0.250 v0.250 0.750 0.500 v0.500 0.750 0.250 v0.500 0.750 0.500 dofs  48 58 50 59
-DEAL:: v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  15 17 48 50
-DEAL:: v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  25 26 58 59
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.250 v0.00 1.00 0.250 v0.00 0.750 0.500 v0.00 1.00 0.500 dofs  47 53 57 60
-DEAL:: v0.250 0.750 0.250 v0.250 1.00 0.250 v0.250 0.750 0.500 v0.250 1.00 0.500 dofs  48 54 58 61
-DEAL:: v0.00 0.750 0.250 v0.00 0.750 0.500 v0.250 0.750 0.250 v0.250 0.750 0.500 dofs  47 57 48 58
-DEAL:: v0.00 1.00 0.250 v0.00 1.00 0.500 v0.250 1.00 0.250 v0.250 1.00 0.500 dofs  53 60 54 61
-DEAL:: v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  47 48 53 54
-DEAL:: v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  57 58 60 61
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.250 v0.250 1.00 0.250 v0.250 0.750 0.500 v0.250 1.00 0.500 dofs  48 54 58 61
-DEAL:: v0.500 0.750 0.250 v0.500 1.00 0.250 v0.500 0.750 0.500 v0.500 1.00 0.500 dofs  50 56 59 62
-DEAL:: v0.250 0.750 0.250 v0.250 0.750 0.500 v0.500 0.750 0.250 v0.500 0.750 0.500 dofs  48 58 50 59
-DEAL:: v0.250 1.00 0.250 v0.250 1.00 0.500 v0.500 1.00 0.250 v0.500 1.00 0.500 dofs  54 61 56 62
-DEAL:: v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  48 50 54 56
-DEAL:: v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  58 59 61 62
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.00 v0.500 0.750 0.00 v0.500 0.500 0.250 v0.500 0.750 0.250 dofs  16 49 17 50
-DEAL:: v0.750 0.500 0.00 v0.750 0.750 0.00 v0.750 0.500 0.250 v0.750 0.750 0.250 dofs  35 63 36 64
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.250 v0.750 0.500 0.00 v0.750 0.500 0.250 dofs  16 17 35 36
-DEAL:: v0.500 0.750 0.00 v0.500 0.750 0.250 v0.750 0.750 0.00 v0.750 0.750 0.250 dofs  49 50 63 64
-DEAL:: v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.750 0.00 v0.750 0.750 0.00 dofs  16 35 49 63
-DEAL:: v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  17 36 50 64
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.00 v0.750 0.750 0.00 v0.750 0.500 0.250 v0.750 0.750 0.250 dofs  35 63 36 64
-DEAL:: v1.00 0.500 0.00 v1.00 0.750 0.00 v1.00 0.500 0.250 v1.00 0.750 0.250 dofs  37 65 38 66
-DEAL:: v0.750 0.500 0.00 v0.750 0.500 0.250 v1.00 0.500 0.00 v1.00 0.500 0.250 dofs  35 36 37 38
-DEAL:: v0.750 0.750 0.00 v0.750 0.750 0.250 v1.00 0.750 0.00 v1.00 0.750 0.250 dofs  63 64 65 66
-DEAL:: v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.750 0.00 v1.00 0.750 0.00 dofs  35 37 63 65
-DEAL:: v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  36 38 64 66
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.00 v0.500 1.00 0.00 v0.500 0.750 0.250 v0.500 1.00 0.250 dofs  49 55 50 56
-DEAL:: v0.750 0.750 0.00 v0.750 1.00 0.00 v0.750 0.750 0.250 v0.750 1.00 0.250 dofs  63 67 64 68
-DEAL:: v0.500 0.750 0.00 v0.500 0.750 0.250 v0.750 0.750 0.00 v0.750 0.750 0.250 dofs  49 50 63 64
-DEAL:: v0.500 1.00 0.00 v0.500 1.00 0.250 v0.750 1.00 0.00 v0.750 1.00 0.250 dofs  55 56 67 68
-DEAL:: v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 1.00 0.00 v0.750 1.00 0.00 dofs  49 63 55 67
-DEAL:: v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  50 64 56 68
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.00 v0.750 1.00 0.00 v0.750 0.750 0.250 v0.750 1.00 0.250 dofs  63 67 64 68
-DEAL:: v1.00 0.750 0.00 v1.00 1.00 0.00 v1.00 0.750 0.250 v1.00 1.00 0.250 dofs  65 69 66 70
-DEAL:: v0.750 0.750 0.00 v0.750 0.750 0.250 v1.00 0.750 0.00 v1.00 0.750 0.250 dofs  63 64 65 66
-DEAL:: v0.750 1.00 0.00 v0.750 1.00 0.250 v1.00 1.00 0.00 v1.00 1.00 0.250 dofs  67 68 69 70
-DEAL:: v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 1.00 0.00 v1.00 1.00 0.00 dofs  63 65 67 69
-DEAL:: v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  64 66 68 70
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.250 v0.500 0.750 0.250 v0.500 0.500 0.500 v0.500 0.750 0.500 dofs  17 50 26 59
-DEAL:: v0.750 0.500 0.250 v0.750 0.750 0.250 v0.750 0.500 0.500 v0.750 0.750 0.500 dofs  36 64 43 71
-DEAL:: v0.500 0.500 0.250 v0.500 0.500 0.500 v0.750 0.500 0.250 v0.750 0.500 0.500 dofs  17 26 36 43
-DEAL:: v0.500 0.750 0.250 v0.500 0.750 0.500 v0.750 0.750 0.250 v0.750 0.750 0.500 dofs  50 59 64 71
-DEAL:: v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  17 36 50 64
-DEAL:: v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  26 43 59 71
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.250 v0.750 0.750 0.250 v0.750 0.500 0.500 v0.750 0.750 0.500 dofs  36 64 43 71
-DEAL:: v1.00 0.500 0.250 v1.00 0.750 0.250 v1.00 0.500 0.500 v1.00 0.750 0.500 dofs  38 66 44 72
-DEAL:: v0.750 0.500 0.250 v0.750 0.500 0.500 v1.00 0.500 0.250 v1.00 0.500 0.500 dofs  36 43 38 44
-DEAL:: v0.750 0.750 0.250 v0.750 0.750 0.500 v1.00 0.750 0.250 v1.00 0.750 0.500 dofs  64 71 66 72
-DEAL:: v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  36 38 64 66
-DEAL:: v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  43 44 71 72
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.250 v0.500 1.00 0.250 v0.500 0.750 0.500 v0.500 1.00 0.500 dofs  50 56 59 62
-DEAL:: v0.750 0.750 0.250 v0.750 1.00 0.250 v0.750 0.750 0.500 v0.750 1.00 0.500 dofs  64 68 71 73
-DEAL:: v0.500 0.750 0.250 v0.500 0.750 0.500 v0.750 0.750 0.250 v0.750 0.750 0.500 dofs  50 59 64 71
-DEAL:: v0.500 1.00 0.250 v0.500 1.00 0.500 v0.750 1.00 0.250 v0.750 1.00 0.500 dofs  56 62 68 73
-DEAL:: v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  50 64 56 68
-DEAL:: v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  59 71 62 73
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.250 v0.750 1.00 0.250 v0.750 0.750 0.500 v0.750 1.00 0.500 dofs  64 68 71 73
-DEAL:: v1.00 0.750 0.250 v1.00 1.00 0.250 v1.00 0.750 0.500 v1.00 1.00 0.500 dofs  66 70 72 74
-DEAL:: v0.750 0.750 0.250 v0.750 0.750 0.500 v1.00 0.750 0.250 v1.00 0.750 0.500 dofs  64 71 66 72
-DEAL:: v0.750 1.00 0.250 v0.750 1.00 0.500 v1.00 1.00 0.250 v1.00 1.00 0.500 dofs  68 73 70 74
-DEAL:: v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  64 66 68 70
-DEAL:: v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  71 72 73 74
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.500 v0.00 0.250 0.500 v0.00 0.00 0.750 v0.00 0.250 0.750 dofs  18 20 75 77
-DEAL:: v0.250 0.00 0.500 v0.250 0.250 0.500 v0.250 0.00 0.750 v0.250 0.250 0.750 dofs  19 21 76 78
-DEAL:: v0.00 0.00 0.500 v0.00 0.00 0.750 v0.250 0.00 0.500 v0.250 0.00 0.750 dofs  18 75 19 76
-DEAL:: v0.00 0.250 0.500 v0.00 0.250 0.750 v0.250 0.250 0.500 v0.250 0.250 0.750 dofs  20 77 21 78
-DEAL:: v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  18 19 20 21
-DEAL:: v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  75 76 77 78
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.500 v0.250 0.250 0.500 v0.250 0.00 0.750 v0.250 0.250 0.750 dofs  19 21 76 78
-DEAL:: v0.500 0.00 0.500 v0.500 0.250 0.500 v0.500 0.00 0.750 v0.500 0.250 0.750 dofs  22 23 79 80
-DEAL:: v0.250 0.00 0.500 v0.250 0.00 0.750 v0.500 0.00 0.500 v0.500 0.00 0.750 dofs  19 76 22 79
-DEAL:: v0.250 0.250 0.500 v0.250 0.250 0.750 v0.500 0.250 0.500 v0.500 0.250 0.750 dofs  21 78 23 80
-DEAL:: v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  19 22 21 23
-DEAL:: v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  76 79 78 80
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.500 v0.00 0.500 0.500 v0.00 0.250 0.750 v0.00 0.500 0.750 dofs  20 24 77 81
-DEAL:: v0.250 0.250 0.500 v0.250 0.500 0.500 v0.250 0.250 0.750 v0.250 0.500 0.750 dofs  21 25 78 82
-DEAL:: v0.00 0.250 0.500 v0.00 0.250 0.750 v0.250 0.250 0.500 v0.250 0.250 0.750 dofs  20 77 21 78
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 0.750 v0.250 0.500 0.500 v0.250 0.500 0.750 dofs  24 81 25 82
-DEAL:: v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  20 21 24 25
-DEAL:: v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  77 78 81 82
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.500 v0.250 0.500 0.500 v0.250 0.250 0.750 v0.250 0.500 0.750 dofs  21 25 78 82
-DEAL:: v0.500 0.250 0.500 v0.500 0.500 0.500 v0.500 0.250 0.750 v0.500 0.500 0.750 dofs  23 26 80 83
-DEAL:: v0.250 0.250 0.500 v0.250 0.250 0.750 v0.500 0.250 0.500 v0.500 0.250 0.750 dofs  21 78 23 80
-DEAL:: v0.250 0.500 0.500 v0.250 0.500 0.750 v0.500 0.500 0.500 v0.500 0.500 0.750 dofs  25 82 26 83
-DEAL:: v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  21 23 25 26
-DEAL:: v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  78 80 82 83
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.750 v0.00 0.250 0.750 v0.00 0.00 1.00 v0.00 0.250 1.00 dofs  75 77 84 86
-DEAL:: v0.250 0.00 0.750 v0.250 0.250 0.750 v0.250 0.00 1.00 v0.250 0.250 1.00 dofs  76 78 85 87
-DEAL:: v0.00 0.00 0.750 v0.00 0.00 1.00 v0.250 0.00 0.750 v0.250 0.00 1.00 dofs  75 84 76 85
-DEAL:: v0.00 0.250 0.750 v0.00 0.250 1.00 v0.250 0.250 0.750 v0.250 0.250 1.00 dofs  77 86 78 87
-DEAL:: v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  75 76 77 78
-DEAL:: v0.00 0.00 1.00 v0.250 0.00 1.00 v0.00 0.250 1.00 v0.250 0.250 1.00 dofs  84 85 86 87
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.750 v0.250 0.250 0.750 v0.250 0.00 1.00 v0.250 0.250 1.00 dofs  76 78 85 87
-DEAL:: v0.500 0.00 0.750 v0.500 0.250 0.750 v0.500 0.00 1.00 v0.500 0.250 1.00 dofs  79 80 88 89
-DEAL:: v0.250 0.00 0.750 v0.250 0.00 1.00 v0.500 0.00 0.750 v0.500 0.00 1.00 dofs  76 85 79 88
-DEAL:: v0.250 0.250 0.750 v0.250 0.250 1.00 v0.500 0.250 0.750 v0.500 0.250 1.00 dofs  78 87 80 89
-DEAL:: v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  76 79 78 80
-DEAL:: v0.250 0.00 1.00 v0.500 0.00 1.00 v0.250 0.250 1.00 v0.500 0.250 1.00 dofs  85 88 87 89
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.750 v0.00 0.500 0.750 v0.00 0.250 1.00 v0.00 0.500 1.00 dofs  77 81 86 90
-DEAL:: v0.250 0.250 0.750 v0.250 0.500 0.750 v0.250 0.250 1.00 v0.250 0.500 1.00 dofs  78 82 87 91
-DEAL:: v0.00 0.250 0.750 v0.00 0.250 1.00 v0.250 0.250 0.750 v0.250 0.250 1.00 dofs  77 86 78 87
-DEAL:: v0.00 0.500 0.750 v0.00 0.500 1.00 v0.250 0.500 0.750 v0.250 0.500 1.00 dofs  81 90 82 91
-DEAL:: v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  77 78 81 82
-DEAL:: v0.00 0.250 1.00 v0.250 0.250 1.00 v0.00 0.500 1.00 v0.250 0.500 1.00 dofs  86 87 90 91
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.750 v0.250 0.500 0.750 v0.250 0.250 1.00 v0.250 0.500 1.00 dofs  78 82 87 91
-DEAL:: v0.500 0.250 0.750 v0.500 0.500 0.750 v0.500 0.250 1.00 v0.500 0.500 1.00 dofs  80 83 89 92
-DEAL:: v0.250 0.250 0.750 v0.250 0.250 1.00 v0.500 0.250 0.750 v0.500 0.250 1.00 dofs  78 87 80 89
-DEAL:: v0.250 0.500 0.750 v0.250 0.500 1.00 v0.500 0.500 0.750 v0.500 0.500 1.00 dofs  82 91 83 92
-DEAL:: v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  78 80 82 83
-DEAL:: v0.250 0.250 1.00 v0.500 0.250 1.00 v0.250 0.500 1.00 v0.500 0.500 1.00 dofs  87 89 91 92
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.500 v0.500 0.250 0.500 v0.500 0.00 0.750 v0.500 0.250 0.750 dofs  22 23 79 80
-DEAL:: v0.750 0.00 0.500 v0.750 0.250 0.500 v0.750 0.00 0.750 v0.750 0.250 0.750 dofs  39 40 93 94
-DEAL:: v0.500 0.00 0.500 v0.500 0.00 0.750 v0.750 0.00 0.500 v0.750 0.00 0.750 dofs  22 79 39 93
-DEAL:: v0.500 0.250 0.500 v0.500 0.250 0.750 v0.750 0.250 0.500 v0.750 0.250 0.750 dofs  23 80 40 94
-DEAL:: v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  22 39 23 40
-DEAL:: v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  79 93 80 94
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.500 v0.750 0.250 0.500 v0.750 0.00 0.750 v0.750 0.250 0.750 dofs  39 40 93 94
-DEAL:: v1.00 0.00 0.500 v1.00 0.250 0.500 v1.00 0.00 0.750 v1.00 0.250 0.750 dofs  41 42 95 96
-DEAL:: v0.750 0.00 0.500 v0.750 0.00 0.750 v1.00 0.00 0.500 v1.00 0.00 0.750 dofs  39 93 41 95
-DEAL:: v0.750 0.250 0.500 v0.750 0.250 0.750 v1.00 0.250 0.500 v1.00 0.250 0.750 dofs  40 94 42 96
-DEAL:: v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  39 41 40 42
-DEAL:: v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  93 95 94 96
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.500 v0.500 0.500 0.500 v0.500 0.250 0.750 v0.500 0.500 0.750 dofs  23 26 80 83
-DEAL:: v0.750 0.250 0.500 v0.750 0.500 0.500 v0.750 0.250 0.750 v0.750 0.500 0.750 dofs  40 43 94 97
-DEAL:: v0.500 0.250 0.500 v0.500 0.250 0.750 v0.750 0.250 0.500 v0.750 0.250 0.750 dofs  23 80 40 94
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 0.750 v0.750 0.500 0.500 v0.750 0.500 0.750 dofs  26 83 43 97
-DEAL:: v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  23 40 26 43
-DEAL:: v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  80 94 83 97
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.500 v0.750 0.500 0.500 v0.750 0.250 0.750 v0.750 0.500 0.750 dofs  40 43 94 97
-DEAL:: v1.00 0.250 0.500 v1.00 0.500 0.500 v1.00 0.250 0.750 v1.00 0.500 0.750 dofs  42 44 96 98
-DEAL:: v0.750 0.250 0.500 v0.750 0.250 0.750 v1.00 0.250 0.500 v1.00 0.250 0.750 dofs  40 94 42 96
-DEAL:: v0.750 0.500 0.500 v0.750 0.500 0.750 v1.00 0.500 0.500 v1.00 0.500 0.750 dofs  43 97 44 98
-DEAL:: v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  40 42 43 44
-DEAL:: v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  94 96 97 98
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.750 v0.500 0.250 0.750 v0.500 0.00 1.00 v0.500 0.250 1.00 dofs  79 80 88 89
-DEAL:: v0.750 0.00 0.750 v0.750 0.250 0.750 v0.750 0.00 1.00 v0.750 0.250 1.00 dofs  93 94 99 100
-DEAL:: v0.500 0.00 0.750 v0.500 0.00 1.00 v0.750 0.00 0.750 v0.750 0.00 1.00 dofs  79 88 93 99
-DEAL:: v0.500 0.250 0.750 v0.500 0.250 1.00 v0.750 0.250 0.750 v0.750 0.250 1.00 dofs  80 89 94 100
-DEAL:: v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  79 93 80 94
-DEAL:: v0.500 0.00 1.00 v0.750 0.00 1.00 v0.500 0.250 1.00 v0.750 0.250 1.00 dofs  88 99 89 100
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.750 v0.750 0.250 0.750 v0.750 0.00 1.00 v0.750 0.250 1.00 dofs  93 94 99 100
-DEAL:: v1.00 0.00 0.750 v1.00 0.250 0.750 v1.00 0.00 1.00 v1.00 0.250 1.00 dofs  95 96 101 102
-DEAL:: v0.750 0.00 0.750 v0.750 0.00 1.00 v1.00 0.00 0.750 v1.00 0.00 1.00 dofs  93 99 95 101
-DEAL:: v0.750 0.250 0.750 v0.750 0.250 1.00 v1.00 0.250 0.750 v1.00 0.250 1.00 dofs  94 100 96 102
-DEAL:: v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  93 95 94 96
-DEAL:: v0.750 0.00 1.00 v1.00 0.00 1.00 v0.750 0.250 1.00 v1.00 0.250 1.00 dofs  99 101 100 102
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.750 v0.500 0.500 0.750 v0.500 0.250 1.00 v0.500 0.500 1.00 dofs  80 83 89 92
-DEAL:: v0.750 0.250 0.750 v0.750 0.500 0.750 v0.750 0.250 1.00 v0.750 0.500 1.00 dofs  94 97 100 103
-DEAL:: v0.500 0.250 0.750 v0.500 0.250 1.00 v0.750 0.250 0.750 v0.750 0.250 1.00 dofs  80 89 94 100
-DEAL:: v0.500 0.500 0.750 v0.500 0.500 1.00 v0.750 0.500 0.750 v0.750 0.500 1.00 dofs  83 92 97 103
-DEAL:: v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  80 94 83 97
-DEAL:: v0.500 0.250 1.00 v0.750 0.250 1.00 v0.500 0.500 1.00 v0.750 0.500 1.00 dofs  89 100 92 103
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.750 v0.750 0.500 0.750 v0.750 0.250 1.00 v0.750 0.500 1.00 dofs  94 97 100 103
-DEAL:: v1.00 0.250 0.750 v1.00 0.500 0.750 v1.00 0.250 1.00 v1.00 0.500 1.00 dofs  96 98 102 104
-DEAL:: v0.750 0.250 0.750 v0.750 0.250 1.00 v1.00 0.250 0.750 v1.00 0.250 1.00 dofs  94 100 96 102
-DEAL:: v0.750 0.500 0.750 v0.750 0.500 1.00 v1.00 0.500 0.750 v1.00 0.500 1.00 dofs  97 103 98 104
-DEAL:: v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  94 96 97 98
-DEAL:: v0.750 0.250 1.00 v1.00 0.250 1.00 v0.750 0.500 1.00 v1.00 0.500 1.00 dofs  100 102 103 104
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.500 v0.00 0.750 0.500 v0.00 0.500 0.750 v0.00 0.750 0.750 dofs  24 57 81 105
-DEAL:: v0.250 0.500 0.500 v0.250 0.750 0.500 v0.250 0.500 0.750 v0.250 0.750 0.750 dofs  25 58 82 106
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 0.750 v0.250 0.500 0.500 v0.250 0.500 0.750 dofs  24 81 25 82
-DEAL:: v0.00 0.750 0.500 v0.00 0.750 0.750 v0.250 0.750 0.500 v0.250 0.750 0.750 dofs  57 105 58 106
-DEAL:: v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  24 25 57 58
-DEAL:: v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  81 82 105 106
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.500 v0.250 0.750 0.500 v0.250 0.500 0.750 v0.250 0.750 0.750 dofs  25 58 82 106
-DEAL:: v0.500 0.500 0.500 v0.500 0.750 0.500 v0.500 0.500 0.750 v0.500 0.750 0.750 dofs  26 59 83 107
-DEAL:: v0.250 0.500 0.500 v0.250 0.500 0.750 v0.500 0.500 0.500 v0.500 0.500 0.750 dofs  25 82 26 83
-DEAL:: v0.250 0.750 0.500 v0.250 0.750 0.750 v0.500 0.750 0.500 v0.500 0.750 0.750 dofs  58 106 59 107
-DEAL:: v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  25 26 58 59
-DEAL:: v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  82 83 106 107
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.500 v0.00 1.00 0.500 v0.00 0.750 0.750 v0.00 1.00 0.750 dofs  57 60 105 108
-DEAL:: v0.250 0.750 0.500 v0.250 1.00 0.500 v0.250 0.750 0.750 v0.250 1.00 0.750 dofs  58 61 106 109
-DEAL:: v0.00 0.750 0.500 v0.00 0.750 0.750 v0.250 0.750 0.500 v0.250 0.750 0.750 dofs  57 105 58 106
-DEAL:: v0.00 1.00 0.500 v0.00 1.00 0.750 v0.250 1.00 0.500 v0.250 1.00 0.750 dofs  60 108 61 109
-DEAL:: v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  57 58 60 61
-DEAL:: v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  105 106 108 109
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.500 v0.250 1.00 0.500 v0.250 0.750 0.750 v0.250 1.00 0.750 dofs  58 61 106 109
-DEAL:: v0.500 0.750 0.500 v0.500 1.00 0.500 v0.500 0.750 0.750 v0.500 1.00 0.750 dofs  59 62 107 110
-DEAL:: v0.250 0.750 0.500 v0.250 0.750 0.750 v0.500 0.750 0.500 v0.500 0.750 0.750 dofs  58 106 59 107
-DEAL:: v0.250 1.00 0.500 v0.250 1.00 0.750 v0.500 1.00 0.500 v0.500 1.00 0.750 dofs  61 109 62 110
-DEAL:: v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  58 59 61 62
-DEAL:: v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  106 107 109 110
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.750 v0.00 0.750 0.750 v0.00 0.500 1.00 v0.00 0.750 1.00 dofs  81 105 90 111
-DEAL:: v0.250 0.500 0.750 v0.250 0.750 0.750 v0.250 0.500 1.00 v0.250 0.750 1.00 dofs  82 106 91 112
-DEAL:: v0.00 0.500 0.750 v0.00 0.500 1.00 v0.250 0.500 0.750 v0.250 0.500 1.00 dofs  81 90 82 91
-DEAL:: v0.00 0.750 0.750 v0.00 0.750 1.00 v0.250 0.750 0.750 v0.250 0.750 1.00 dofs  105 111 106 112
-DEAL:: v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  81 82 105 106
-DEAL:: v0.00 0.500 1.00 v0.250 0.500 1.00 v0.00 0.750 1.00 v0.250 0.750 1.00 dofs  90 91 111 112
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.750 v0.250 0.750 0.750 v0.250 0.500 1.00 v0.250 0.750 1.00 dofs  82 106 91 112
-DEAL:: v0.500 0.500 0.750 v0.500 0.750 0.750 v0.500 0.500 1.00 v0.500 0.750 1.00 dofs  83 107 92 113
-DEAL:: v0.250 0.500 0.750 v0.250 0.500 1.00 v0.500 0.500 0.750 v0.500 0.500 1.00 dofs  82 91 83 92
-DEAL:: v0.250 0.750 0.750 v0.250 0.750 1.00 v0.500 0.750 0.750 v0.500 0.750 1.00 dofs  106 112 107 113
-DEAL:: v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  82 83 106 107
-DEAL:: v0.250 0.500 1.00 v0.500 0.500 1.00 v0.250 0.750 1.00 v0.500 0.750 1.00 dofs  91 92 112 113
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.750 v0.00 1.00 0.750 v0.00 0.750 1.00 v0.00 1.00 1.00 dofs  105 108 111 114
-DEAL:: v0.250 0.750 0.750 v0.250 1.00 0.750 v0.250 0.750 1.00 v0.250 1.00 1.00 dofs  106 109 112 115
-DEAL:: v0.00 0.750 0.750 v0.00 0.750 1.00 v0.250 0.750 0.750 v0.250 0.750 1.00 dofs  105 111 106 112
-DEAL:: v0.00 1.00 0.750 v0.00 1.00 1.00 v0.250 1.00 0.750 v0.250 1.00 1.00 dofs  108 114 109 115
-DEAL:: v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  105 106 108 109
-DEAL:: v0.00 0.750 1.00 v0.250 0.750 1.00 v0.00 1.00 1.00 v0.250 1.00 1.00 dofs  111 112 114 115
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.750 v0.250 1.00 0.750 v0.250 0.750 1.00 v0.250 1.00 1.00 dofs  106 109 112 115
-DEAL:: v0.500 0.750 0.750 v0.500 1.00 0.750 v0.500 0.750 1.00 v0.500 1.00 1.00 dofs  107 110 113 116
-DEAL:: v0.250 0.750 0.750 v0.250 0.750 1.00 v0.500 0.750 0.750 v0.500 0.750 1.00 dofs  106 112 107 113
-DEAL:: v0.250 1.00 0.750 v0.250 1.00 1.00 v0.500 1.00 0.750 v0.500 1.00 1.00 dofs  109 115 110 116
-DEAL:: v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  106 107 109 110
-DEAL:: v0.250 0.750 1.00 v0.500 0.750 1.00 v0.250 1.00 1.00 v0.500 1.00 1.00 dofs  112 113 115 116
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.500 v0.500 0.750 0.500 v0.500 0.500 0.750 v0.500 0.750 0.750 dofs  26 59 83 107
-DEAL:: v0.750 0.500 0.500 v0.750 0.750 0.500 v0.750 0.500 0.750 v0.750 0.750 0.750 dofs  43 71 97 117
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 0.750 v0.750 0.500 0.500 v0.750 0.500 0.750 dofs  26 83 43 97
-DEAL:: v0.500 0.750 0.500 v0.500 0.750 0.750 v0.750 0.750 0.500 v0.750 0.750 0.750 dofs  59 107 71 117
-DEAL:: v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  26 43 59 71
-DEAL:: v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  83 97 107 117
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.500 v0.750 0.750 0.500 v0.750 0.500 0.750 v0.750 0.750 0.750 dofs  43 71 97 117
-DEAL:: v1.00 0.500 0.500 v1.00 0.750 0.500 v1.00 0.500 0.750 v1.00 0.750 0.750 dofs  44 72 98 118
-DEAL:: v0.750 0.500 0.500 v0.750 0.500 0.750 v1.00 0.500 0.500 v1.00 0.500 0.750 dofs  43 97 44 98
-DEAL:: v0.750 0.750 0.500 v0.750 0.750 0.750 v1.00 0.750 0.500 v1.00 0.750 0.750 dofs  71 117 72 118
-DEAL:: v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  43 44 71 72
-DEAL:: v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  97 98 117 118
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.500 v0.500 1.00 0.500 v0.500 0.750 0.750 v0.500 1.00 0.750 dofs  59 62 107 110
-DEAL:: v0.750 0.750 0.500 v0.750 1.00 0.500 v0.750 0.750 0.750 v0.750 1.00 0.750 dofs  71 73 117 119
-DEAL:: v0.500 0.750 0.500 v0.500 0.750 0.750 v0.750 0.750 0.500 v0.750 0.750 0.750 dofs  59 107 71 117
-DEAL:: v0.500 1.00 0.500 v0.500 1.00 0.750 v0.750 1.00 0.500 v0.750 1.00 0.750 dofs  62 110 73 119
-DEAL:: v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  59 71 62 73
-DEAL:: v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  107 117 110 119
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.500 v0.750 1.00 0.500 v0.750 0.750 0.750 v0.750 1.00 0.750 dofs  71 73 117 119
-DEAL:: v1.00 0.750 0.500 v1.00 1.00 0.500 v1.00 0.750 0.750 v1.00 1.00 0.750 dofs  72 74 118 120
-DEAL:: v0.750 0.750 0.500 v0.750 0.750 0.750 v1.00 0.750 0.500 v1.00 0.750 0.750 dofs  71 117 72 118
-DEAL:: v0.750 1.00 0.500 v0.750 1.00 0.750 v1.00 1.00 0.500 v1.00 1.00 0.750 dofs  73 119 74 120
-DEAL:: v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  71 72 73 74
-DEAL:: v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  117 118 119 120
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.750 v0.500 0.750 0.750 v0.500 0.500 1.00 v0.500 0.750 1.00 dofs  83 107 92 113
-DEAL:: v0.750 0.500 0.750 v0.750 0.750 0.750 v0.750 0.500 1.00 v0.750 0.750 1.00 dofs  97 117 103 121
-DEAL:: v0.500 0.500 0.750 v0.500 0.500 1.00 v0.750 0.500 0.750 v0.750 0.500 1.00 dofs  83 92 97 103
-DEAL:: v0.500 0.750 0.750 v0.500 0.750 1.00 v0.750 0.750 0.750 v0.750 0.750 1.00 dofs  107 113 117 121
-DEAL:: v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  83 97 107 117
-DEAL:: v0.500 0.500 1.00 v0.750 0.500 1.00 v0.500 0.750 1.00 v0.750 0.750 1.00 dofs  92 103 113 121
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.750 v0.750 0.750 0.750 v0.750 0.500 1.00 v0.750 0.750 1.00 dofs  97 117 103 121
-DEAL:: v1.00 0.500 0.750 v1.00 0.750 0.750 v1.00 0.500 1.00 v1.00 0.750 1.00 dofs  98 118 104 122
-DEAL:: v0.750 0.500 0.750 v0.750 0.500 1.00 v1.00 0.500 0.750 v1.00 0.500 1.00 dofs  97 103 98 104
-DEAL:: v0.750 0.750 0.750 v0.750 0.750 1.00 v1.00 0.750 0.750 v1.00 0.750 1.00 dofs  117 121 118 122
-DEAL:: v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  97 98 117 118
-DEAL:: v0.750 0.500 1.00 v1.00 0.500 1.00 v0.750 0.750 1.00 v1.00 0.750 1.00 dofs  103 104 121 122
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.750 v0.500 1.00 0.750 v0.500 0.750 1.00 v0.500 1.00 1.00 dofs  107 110 113 116
-DEAL:: v0.750 0.750 0.750 v0.750 1.00 0.750 v0.750 0.750 1.00 v0.750 1.00 1.00 dofs  117 119 121 123
-DEAL:: v0.500 0.750 0.750 v0.500 0.750 1.00 v0.750 0.750 0.750 v0.750 0.750 1.00 dofs  107 113 117 121
-DEAL:: v0.500 1.00 0.750 v0.500 1.00 1.00 v0.750 1.00 0.750 v0.750 1.00 1.00 dofs  110 116 119 123
-DEAL:: v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  107 117 110 119
-DEAL:: v0.500 0.750 1.00 v0.750 0.750 1.00 v0.500 1.00 1.00 v0.750 1.00 1.00 dofs  113 121 116 123
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.750 v0.750 1.00 0.750 v0.750 0.750 1.00 v0.750 1.00 1.00 dofs  117 119 121 123
-DEAL:: v1.00 0.750 0.750 v1.00 1.00 0.750 v1.00 0.750 1.00 v1.00 1.00 1.00 dofs  118 120 122 124
-DEAL:: v0.750 0.750 0.750 v0.750 0.750 1.00 v1.00 0.750 0.750 v1.00 0.750 1.00 dofs  117 121 118 122
-DEAL:: v0.750 1.00 0.750 v0.750 1.00 1.00 v1.00 1.00 0.750 v1.00 1.00 1.00 dofs  119 123 120 124
-DEAL:: v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  117 118 119 120
-DEAL:: v0.750 0.750 1.00 v1.00 0.750 1.00 v0.750 1.00 1.00 v1.00 1.00 1.00 dofs  121 122 123 124
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.500000 1.00000 v0.500000 1.00000 1.00000 dofs  7 15 21 25
+DEAL:: v1.00000 0.500000 0.500000 v1.00000 1.00000 0.500000 v1.00000 0.500000 1.00000 v1.00000 1.00000 1.00000 dofs  11 17 23 26
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 0.500000 v1.00000 0.500000 1.00000 dofs  7 21 11 23
+DEAL:: v0.500000 1.00000 0.500000 v0.500000 1.00000 1.00000 v1.00000 1.00000 0.500000 v1.00000 1.00000 1.00000 dofs  15 25 17 26
+DEAL:: v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  7 11 15 17
+DEAL:: v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.500000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  21 23 25 26
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.00000 0.00000 0.250000 v0.00000 0.250000 0.250000 dofs  0 2 4 6
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 dofs  1 3 5 7
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.00000 v0.250000 0.00000 0.250000 dofs  0 4 1 5
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 dofs  2 6 3 7
+DEAL:: v0.00000 0.00000 0.00000 v0.250000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 dofs  0 1 2 3
+DEAL:: v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  4 5 6 7
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 dofs  1 3 5 7
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 dofs  8 9 10 11
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.00000 v0.500000 0.00000 0.250000 dofs  1 5 8 10
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 dofs  3 7 9 11
+DEAL:: v0.250000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 dofs  1 8 3 9
+DEAL:: v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  5 10 7 11
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.00000 0.250000 0.250000 v0.00000 0.500000 0.250000 dofs  2 12 6 14
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 dofs  3 13 7 15
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 dofs  2 6 3 7
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 dofs  12 14 13 15
+DEAL:: v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 dofs  2 3 12 13
+DEAL:: v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  6 7 14 15
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 dofs  3 13 7 15
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 dofs  9 16 11 17
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 dofs  3 7 9 11
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 dofs  13 15 16 17
+DEAL:: v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 dofs  3 9 13 16
+DEAL:: v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  7 11 15 17
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.00000 0.00000 0.500000 v0.00000 0.250000 0.500000 dofs  4 6 18 20
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 dofs  5 7 19 21
+DEAL:: v0.00000 0.00000 0.250000 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.250000 v0.250000 0.00000 0.500000 dofs  4 18 5 19
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 dofs  6 20 7 21
+DEAL:: v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  4 5 6 7
+DEAL:: v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  18 19 20 21
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 dofs  5 7 19 21
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 dofs  10 11 22 23
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.250000 v0.500000 0.00000 0.500000 dofs  5 19 10 22
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 dofs  7 21 11 23
+DEAL:: v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  5 10 7 11
+DEAL:: v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  19 22 21 23
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.00000 0.250000 0.500000 v0.00000 0.500000 0.500000 dofs  6 14 20 24
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 dofs  7 15 21 25
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 dofs  6 20 7 21
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 dofs  14 24 15 25
+DEAL:: v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  6 7 14 15
+DEAL:: v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  20 21 24 25
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 dofs  7 15 21 25
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 dofs  11 17 23 26
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 dofs  7 21 11 23
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 dofs  15 25 17 26
+DEAL:: v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  7 11 15 17
+DEAL:: v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  21 23 25 26
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 dofs  8 9 10 11
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.250000 0.00000 v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 dofs  27 28 29 30
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.00000 v0.750000 0.00000 0.250000 dofs  8 10 27 29
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 dofs  9 11 28 30
+DEAL:: v0.500000 0.00000 0.00000 v0.750000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 dofs  8 27 9 28
+DEAL:: v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  10 29 11 30
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.250000 0.00000 v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 dofs  27 28 29 30
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 0.250000 0.00000 v1.00000 0.00000 0.250000 v1.00000 0.250000 0.250000 dofs  31 32 33 34
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.00000 v1.00000 0.00000 0.250000 dofs  27 29 31 33
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.00000 v1.00000 0.250000 0.250000 dofs  28 30 32 34
+DEAL:: v0.750000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 dofs  27 31 28 32
+DEAL:: v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  29 33 30 34
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 dofs  9 16 11 17
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.500000 0.00000 v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 dofs  28 35 30 36
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 dofs  9 11 28 30
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 dofs  16 17 35 36
+DEAL:: v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 dofs  9 28 16 35
+DEAL:: v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  11 30 17 36
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.500000 0.00000 v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 dofs  28 35 30 36
+DEAL:: v1.00000 0.250000 0.00000 v1.00000 0.500000 0.00000 v1.00000 0.250000 0.250000 v1.00000 0.500000 0.250000 dofs  32 37 34 38
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.00000 v1.00000 0.250000 0.250000 dofs  28 30 32 34
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.250000 dofs  35 36 37 38
+DEAL:: v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 dofs  28 32 35 37
+DEAL:: v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  30 34 36 38
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 dofs  10 11 22 23
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 dofs  29 30 39 40
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.250000 v0.750000 0.00000 0.500000 dofs  10 22 29 39
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 dofs  11 23 30 40
+DEAL:: v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  10 29 11 30
+DEAL:: v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  22 39 23 40
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 dofs  29 30 39 40
+DEAL:: v1.00000 0.00000 0.250000 v1.00000 0.250000 0.250000 v1.00000 0.00000 0.500000 v1.00000 0.250000 0.500000 dofs  33 34 41 42
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.250000 v1.00000 0.00000 0.500000 dofs  29 39 33 41
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.250000 v1.00000 0.250000 0.500000 dofs  30 40 34 42
+DEAL:: v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  29 33 30 34
+DEAL:: v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  39 41 40 42
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 dofs  11 17 23 26
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 dofs  30 36 40 43
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 dofs  11 23 30 40
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 dofs  17 26 36 43
+DEAL:: v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  11 30 17 36
+DEAL:: v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  23 40 26 43
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 dofs  30 36 40 43
+DEAL:: v1.00000 0.250000 0.250000 v1.00000 0.500000 0.250000 v1.00000 0.250000 0.500000 v1.00000 0.500000 0.500000 dofs  34 38 42 44
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.250000 v1.00000 0.250000 0.500000 dofs  30 40 34 42
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.250000 v1.00000 0.500000 0.500000 dofs  36 43 38 44
+DEAL:: v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  30 34 36 38
+DEAL:: v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  40 42 43 44
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.00000 0.500000 0.250000 v0.00000 0.750000 0.250000 dofs  12 45 14 47
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 dofs  13 46 15 48
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 dofs  12 14 13 15
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 dofs  45 47 46 48
+DEAL:: v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 dofs  12 13 45 46
+DEAL:: v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  14 15 47 48
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 dofs  13 46 15 48
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 dofs  16 49 17 50
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 dofs  13 15 16 17
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 dofs  46 48 49 50
+DEAL:: v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 dofs  13 16 46 49
+DEAL:: v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  15 17 48 50
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.750000 0.250000 v0.00000 1.00000 0.250000 dofs  45 51 47 53
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 dofs  46 52 48 54
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 dofs  45 47 46 48
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.00000 v0.250000 1.00000 0.250000 dofs  51 53 52 54
+DEAL:: v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.250000 1.00000 0.00000 dofs  45 46 51 52
+DEAL:: v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  47 48 53 54
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 dofs  46 52 48 54
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 dofs  49 55 50 56
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 dofs  46 48 49 50
+DEAL:: v0.250000 1.00000 0.00000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.00000 v0.500000 1.00000 0.250000 dofs  52 54 55 56
+DEAL:: v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.500000 1.00000 0.00000 dofs  46 49 52 55
+DEAL:: v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  48 50 54 56
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.00000 0.500000 0.500000 v0.00000 0.750000 0.500000 dofs  14 47 24 57
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 dofs  15 48 25 58
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 dofs  14 24 15 25
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 dofs  47 57 48 58
+DEAL:: v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  14 15 47 48
+DEAL:: v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  24 25 57 58
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 dofs  15 48 25 58
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 dofs  17 50 26 59
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 dofs  15 25 17 26
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 dofs  48 58 50 59
+DEAL:: v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  15 17 48 50
+DEAL:: v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  25 26 58 59
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.00000 0.750000 0.500000 v0.00000 1.00000 0.500000 dofs  47 53 57 60
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 dofs  48 54 58 61
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 dofs  47 57 48 58
+DEAL:: v0.00000 1.00000 0.250000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.250000 v0.250000 1.00000 0.500000 dofs  53 60 54 61
+DEAL:: v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  47 48 53 54
+DEAL:: v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  57 58 60 61
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 dofs  48 54 58 61
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 dofs  50 56 59 62
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 dofs  48 58 50 59
+DEAL:: v0.250000 1.00000 0.250000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.250000 v0.500000 1.00000 0.500000 dofs  54 61 56 62
+DEAL:: v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  48 50 54 56
+DEAL:: v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  58 59 61 62
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 dofs  16 49 17 50
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.750000 0.00000 v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 dofs  35 63 36 64
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 dofs  16 17 35 36
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 dofs  49 50 63 64
+DEAL:: v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 dofs  16 35 49 63
+DEAL:: v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  17 36 50 64
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.750000 0.00000 v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 dofs  35 63 36 64
+DEAL:: v1.00000 0.500000 0.00000 v1.00000 0.750000 0.00000 v1.00000 0.500000 0.250000 v1.00000 0.750000 0.250000 dofs  37 65 38 66
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.250000 dofs  35 36 37 38
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.00000 v1.00000 0.750000 0.250000 dofs  63 64 65 66
+DEAL:: v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 dofs  35 37 63 65
+DEAL:: v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  36 38 64 66
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 dofs  49 55 50 56
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 1.00000 0.00000 v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 dofs  63 67 64 68
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 dofs  49 50 63 64
+DEAL:: v0.500000 1.00000 0.00000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.00000 v0.750000 1.00000 0.250000 dofs  55 56 67 68
+DEAL:: v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.750000 1.00000 0.00000 dofs  49 63 55 67
+DEAL:: v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  50 64 56 68
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 1.00000 0.00000 v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 dofs  63 67 64 68
+DEAL:: v1.00000 0.750000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.750000 0.250000 v1.00000 1.00000 0.250000 dofs  65 69 66 70
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.00000 v1.00000 0.750000 0.250000 dofs  63 64 65 66
+DEAL:: v0.750000 1.00000 0.00000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.00000 v1.00000 1.00000 0.250000 dofs  67 68 69 70
+DEAL:: v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  63 65 67 69
+DEAL:: v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  64 66 68 70
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 dofs  17 50 26 59
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 dofs  36 64 43 71
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 dofs  17 26 36 43
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 dofs  50 59 64 71
+DEAL:: v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  17 36 50 64
+DEAL:: v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  26 43 59 71
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 dofs  36 64 43 71
+DEAL:: v1.00000 0.500000 0.250000 v1.00000 0.750000 0.250000 v1.00000 0.500000 0.500000 v1.00000 0.750000 0.500000 dofs  38 66 44 72
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.250000 v1.00000 0.500000 0.500000 dofs  36 43 38 44
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.250000 v1.00000 0.750000 0.500000 dofs  64 71 66 72
+DEAL:: v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  36 38 64 66
+DEAL:: v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  43 44 71 72
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 dofs  50 56 59 62
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 dofs  64 68 71 73
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 dofs  50 59 64 71
+DEAL:: v0.500000 1.00000 0.250000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.250000 v0.750000 1.00000 0.500000 dofs  56 62 68 73
+DEAL:: v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  50 64 56 68
+DEAL:: v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  59 71 62 73
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 dofs  64 68 71 73
+DEAL:: v1.00000 0.750000 0.250000 v1.00000 1.00000 0.250000 v1.00000 0.750000 0.500000 v1.00000 1.00000 0.500000 dofs  66 70 72 74
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.250000 v1.00000 0.750000 0.500000 dofs  64 71 66 72
+DEAL:: v0.750000 1.00000 0.250000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.250000 v1.00000 1.00000 0.500000 dofs  68 73 70 74
+DEAL:: v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  64 66 68 70
+DEAL:: v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  71 72 73 74
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.00000 0.00000 0.750000 v0.00000 0.250000 0.750000 dofs  18 20 75 77
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 dofs  19 21 76 78
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.500000 v0.250000 0.00000 0.750000 dofs  18 75 19 76
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 dofs  20 77 21 78
+DEAL:: v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  18 19 20 21
+DEAL:: v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  75 76 77 78
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 dofs  19 21 76 78
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 dofs  22 23 79 80
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.500000 v0.500000 0.00000 0.750000 dofs  19 76 22 79
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 dofs  21 78 23 80
+DEAL:: v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  19 22 21 23
+DEAL:: v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  76 79 78 80
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.00000 0.250000 0.750000 v0.00000 0.500000 0.750000 dofs  20 24 77 81
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 dofs  21 25 78 82
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 dofs  20 77 21 78
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 dofs  24 81 25 82
+DEAL:: v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  20 21 24 25
+DEAL:: v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  77 78 81 82
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 dofs  21 25 78 82
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 dofs  23 26 80 83
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 dofs  21 78 23 80
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 dofs  25 82 26 83
+DEAL:: v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  21 23 25 26
+DEAL:: v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  78 80 82 83
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.00000 0.00000 1.00000 v0.00000 0.250000 1.00000 dofs  75 77 84 86
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.250000 0.250000 1.00000 dofs  76 78 85 87
+DEAL:: v0.00000 0.00000 0.750000 v0.00000 0.00000 1.00000 v0.250000 0.00000 0.750000 v0.250000 0.00000 1.00000 dofs  75 84 76 85
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 dofs  77 86 78 87
+DEAL:: v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  75 76 77 78
+DEAL:: v0.00000 0.00000 1.00000 v0.250000 0.00000 1.00000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 dofs  84 85 86 87
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.250000 0.250000 1.00000 dofs  76 78 85 87
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.500000 0.250000 1.00000 dofs  79 80 88 89
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.00000 1.00000 v0.500000 0.00000 0.750000 v0.500000 0.00000 1.00000 dofs  76 85 79 88
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 dofs  78 87 80 89
+DEAL:: v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  76 79 78 80
+DEAL:: v0.250000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 dofs  85 88 87 89
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.00000 0.250000 1.00000 v0.00000 0.500000 1.00000 dofs  77 81 86 90
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.250000 0.500000 1.00000 dofs  78 82 87 91
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 dofs  77 86 78 87
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 dofs  81 90 82 91
+DEAL:: v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  77 78 81 82
+DEAL:: v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 dofs  86 87 90 91
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.250000 0.500000 1.00000 dofs  78 82 87 91
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.500000 0.500000 1.00000 dofs  80 83 89 92
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 dofs  78 87 80 89
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 dofs  82 91 83 92
+DEAL:: v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  78 80 82 83
+DEAL:: v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  87 89 91 92
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 dofs  22 23 79 80
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 dofs  39 40 93 94
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.500000 v0.750000 0.00000 0.750000 dofs  22 79 39 93
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 dofs  23 80 40 94
+DEAL:: v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  22 39 23 40
+DEAL:: v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  79 93 80 94
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 dofs  39 40 93 94
+DEAL:: v1.00000 0.00000 0.500000 v1.00000 0.250000 0.500000 v1.00000 0.00000 0.750000 v1.00000 0.250000 0.750000 dofs  41 42 95 96
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.500000 v1.00000 0.00000 0.750000 dofs  39 93 41 95
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.500000 v1.00000 0.250000 0.750000 dofs  40 94 42 96
+DEAL:: v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  39 41 40 42
+DEAL:: v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  93 95 94 96
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 dofs  23 26 80 83
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 dofs  40 43 94 97
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 dofs  23 80 40 94
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 dofs  26 83 43 97
+DEAL:: v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  23 40 26 43
+DEAL:: v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  80 94 83 97
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 dofs  40 43 94 97
+DEAL:: v1.00000 0.250000 0.500000 v1.00000 0.500000 0.500000 v1.00000 0.250000 0.750000 v1.00000 0.500000 0.750000 dofs  42 44 96 98
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.500000 v1.00000 0.250000 0.750000 dofs  40 94 42 96
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.500000 v1.00000 0.500000 0.750000 dofs  43 97 44 98
+DEAL:: v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  40 42 43 44
+DEAL:: v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  94 96 97 98
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.500000 0.250000 1.00000 dofs  79 80 88 89
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 v0.750000 0.00000 1.00000 v0.750000 0.250000 1.00000 dofs  93 94 99 100
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.00000 1.00000 v0.750000 0.00000 0.750000 v0.750000 0.00000 1.00000 dofs  79 88 93 99
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 dofs  80 89 94 100
+DEAL:: v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  79 93 80 94
+DEAL:: v0.500000 0.00000 1.00000 v0.750000 0.00000 1.00000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 dofs  88 99 89 100
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 v0.750000 0.00000 1.00000 v0.750000 0.250000 1.00000 dofs  93 94 99 100
+DEAL:: v1.00000 0.00000 0.750000 v1.00000 0.250000 0.750000 v1.00000 0.00000 1.00000 v1.00000 0.250000 1.00000 dofs  95 96 101 102
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.00000 1.00000 v1.00000 0.00000 0.750000 v1.00000 0.00000 1.00000 dofs  93 99 95 101
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 0.750000 v1.00000 0.250000 1.00000 dofs  94 100 96 102
+DEAL:: v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  93 95 94 96
+DEAL:: v0.750000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 dofs  99 101 100 102
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.500000 0.500000 1.00000 dofs  80 83 89 92
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 v0.750000 0.250000 1.00000 v0.750000 0.500000 1.00000 dofs  94 97 100 103
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 dofs  80 89 94 100
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 dofs  83 92 97 103
+DEAL:: v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  80 94 83 97
+DEAL:: v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 dofs  89 100 92 103
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 v0.750000 0.250000 1.00000 v0.750000 0.500000 1.00000 dofs  94 97 100 103
+DEAL:: v1.00000 0.250000 0.750000 v1.00000 0.500000 0.750000 v1.00000 0.250000 1.00000 v1.00000 0.500000 1.00000 dofs  96 98 102 104
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 0.750000 v1.00000 0.250000 1.00000 dofs  94 100 96 102
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 0.750000 v1.00000 0.500000 1.00000 dofs  97 103 98 104
+DEAL:: v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  94 96 97 98
+DEAL:: v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  100 102 103 104
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.00000 0.500000 0.750000 v0.00000 0.750000 0.750000 dofs  24 57 81 105
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 dofs  25 58 82 106
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 dofs  24 81 25 82
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 dofs  57 105 58 106
+DEAL:: v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  24 25 57 58
+DEAL:: v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  81 82 105 106
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 dofs  25 58 82 106
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 dofs  26 59 83 107
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 dofs  25 82 26 83
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 dofs  58 106 59 107
+DEAL:: v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  25 26 58 59
+DEAL:: v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  82 83 106 107
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.00000 0.750000 0.750000 v0.00000 1.00000 0.750000 dofs  57 60 105 108
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 dofs  58 61 106 109
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 dofs  57 105 58 106
+DEAL:: v0.00000 1.00000 0.500000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.500000 v0.250000 1.00000 0.750000 dofs  60 108 61 109
+DEAL:: v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  57 58 60 61
+DEAL:: v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  105 106 108 109
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 dofs  58 61 106 109
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 dofs  59 62 107 110
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 dofs  58 106 59 107
+DEAL:: v0.250000 1.00000 0.500000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.500000 v0.500000 1.00000 0.750000 dofs  61 109 62 110
+DEAL:: v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  58 59 61 62
+DEAL:: v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  106 107 109 110
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.00000 0.500000 1.00000 v0.00000 0.750000 1.00000 dofs  81 105 90 111
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.250000 0.750000 1.00000 dofs  82 106 91 112
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 dofs  81 90 82 91
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 dofs  105 111 106 112
+DEAL:: v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  81 82 105 106
+DEAL:: v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 dofs  90 91 111 112
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.250000 0.750000 1.00000 dofs  82 106 91 112
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.500000 0.750000 1.00000 dofs  83 107 92 113
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 dofs  82 91 83 92
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 dofs  106 112 107 113
+DEAL:: v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  82 83 106 107
+DEAL:: v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 dofs  91 92 112 113
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.00000 0.750000 1.00000 v0.00000 1.00000 1.00000 dofs  105 108 111 114
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.250000 1.00000 1.00000 dofs  106 109 112 115
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 dofs  105 111 106 112
+DEAL:: v0.00000 1.00000 0.750000 v0.00000 1.00000 1.00000 v0.250000 1.00000 0.750000 v0.250000 1.00000 1.00000 dofs  108 114 109 115
+DEAL:: v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  105 106 108 109
+DEAL:: v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 v0.00000 1.00000 1.00000 v0.250000 1.00000 1.00000 dofs  111 112 114 115
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.250000 1.00000 1.00000 dofs  106 109 112 115
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.500000 1.00000 1.00000 dofs  107 110 113 116
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 dofs  106 112 107 113
+DEAL:: v0.250000 1.00000 0.750000 v0.250000 1.00000 1.00000 v0.500000 1.00000 0.750000 v0.500000 1.00000 1.00000 dofs  109 115 110 116
+DEAL:: v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  106 107 109 110
+DEAL:: v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 v0.250000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  112 113 115 116
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 dofs  26 59 83 107
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 dofs  43 71 97 117
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 dofs  26 83 43 97
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 dofs  59 107 71 117
+DEAL:: v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  26 43 59 71
+DEAL:: v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  83 97 107 117
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 dofs  43 71 97 117
+DEAL:: v1.00000 0.500000 0.500000 v1.00000 0.750000 0.500000 v1.00000 0.500000 0.750000 v1.00000 0.750000 0.750000 dofs  44 72 98 118
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.500000 v1.00000 0.500000 0.750000 dofs  43 97 44 98
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.500000 v1.00000 0.750000 0.750000 dofs  71 117 72 118
+DEAL:: v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  43 44 71 72
+DEAL:: v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  97 98 117 118
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 dofs  59 62 107 110
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 dofs  71 73 117 119
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 dofs  59 107 71 117
+DEAL:: v0.500000 1.00000 0.500000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.500000 v0.750000 1.00000 0.750000 dofs  62 110 73 119
+DEAL:: v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  59 71 62 73
+DEAL:: v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  107 117 110 119
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 dofs  71 73 117 119
+DEAL:: v1.00000 0.750000 0.500000 v1.00000 1.00000 0.500000 v1.00000 0.750000 0.750000 v1.00000 1.00000 0.750000 dofs  72 74 118 120
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.500000 v1.00000 0.750000 0.750000 dofs  71 117 72 118
+DEAL:: v0.750000 1.00000 0.500000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.500000 v1.00000 1.00000 0.750000 dofs  73 119 74 120
+DEAL:: v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  71 72 73 74
+DEAL:: v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  117 118 119 120
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.500000 0.750000 1.00000 dofs  83 107 92 113
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 v0.750000 0.500000 1.00000 v0.750000 0.750000 1.00000 dofs  97 117 103 121
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 dofs  83 92 97 103
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 dofs  107 113 117 121
+DEAL:: v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  83 97 107 117
+DEAL:: v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 dofs  92 103 113 121
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 v0.750000 0.500000 1.00000 v0.750000 0.750000 1.00000 dofs  97 117 103 121
+DEAL:: v1.00000 0.500000 0.750000 v1.00000 0.750000 0.750000 v1.00000 0.500000 1.00000 v1.00000 0.750000 1.00000 dofs  98 118 104 122
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 0.750000 v1.00000 0.500000 1.00000 dofs  97 103 98 104
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 0.750000 v1.00000 0.750000 1.00000 dofs  117 121 118 122
+DEAL:: v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  97 98 117 118
+DEAL:: v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 dofs  103 104 121 122
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.500000 1.00000 1.00000 dofs  107 110 113 116
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 v0.750000 0.750000 1.00000 v0.750000 1.00000 1.00000 dofs  117 119 121 123
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 dofs  107 113 117 121
+DEAL:: v0.500000 1.00000 0.750000 v0.500000 1.00000 1.00000 v0.750000 1.00000 0.750000 v0.750000 1.00000 1.00000 dofs  110 116 119 123
+DEAL:: v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  107 117 110 119
+DEAL:: v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 v0.500000 1.00000 1.00000 v0.750000 1.00000 1.00000 dofs  113 121 116 123
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 v0.750000 0.750000 1.00000 v0.750000 1.00000 1.00000 dofs  117 119 121 123
+DEAL:: v1.00000 0.750000 0.750000 v1.00000 1.00000 0.750000 v1.00000 0.750000 1.00000 v1.00000 1.00000 1.00000 dofs  118 120 122 124
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 0.750000 v1.00000 0.750000 1.00000 dofs  117 121 118 122
+DEAL:: v0.750000 1.00000 0.750000 v0.750000 1.00000 1.00000 v1.00000 1.00000 0.750000 v1.00000 1.00000 1.00000 dofs  119 123 120 124
+DEAL:: v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  117 118 119 120
+DEAL:: v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 v0.750000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  121 122 123 124
 DEAL::FE_Q<3>(2)
 DEAL::Level 0
-DEAL:: v0.00 0.00 0.00 v0.00 1.00 0.00 v0.00 0.00 1.00 v0.00 1.00 1.00 dofs  0 2 4 6 16 18 8 12 20
-DEAL:: v1.00 0.00 0.00 v1.00 1.00 0.00 v1.00 0.00 1.00 v1.00 1.00 1.00 dofs  1 3 5 7 17 19 9 13 21
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 1.00 v1.00 0.00 0.00 v1.00 0.00 1.00 dofs  0 4 1 5 10 14 16 17 22
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 1.00 v1.00 1.00 0.00 v1.00 1.00 1.00 dofs  2 6 3 7 11 15 18 19 23
-DEAL:: v0.00 0.00 0.00 v1.00 0.00 0.00 v0.00 1.00 0.00 v1.00 1.00 0.00 dofs  0 1 2 3 8 9 10 11 24
-DEAL:: v0.00 0.00 1.00 v1.00 0.00 1.00 v0.00 1.00 1.00 v1.00 1.00 1.00 dofs  4 5 6 7 12 13 14 15 25
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 dofs  0 2 4 6 16 18 8 12 20
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.00000 1.00000 v1.00000 1.00000 1.00000 dofs  1 3 5 7 17 19 9 13 21
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 1.00000 v1.00000 0.00000 0.00000 v1.00000 0.00000 1.00000 dofs  0 4 1 5 10 14 16 17 22
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 0.00000 v1.00000 1.00000 1.00000 dofs  2 6 3 7 11 15 18 19 23
+DEAL:: v0.00000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  0 1 2 3 8 9 10 11 24
+DEAL:: v0.00000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  4 5 6 7 12 13 14 15 25
 DEAL::Level 1
-DEAL:: v0.00 0.00 0.00 v0.00 0.500 0.00 v0.00 0.00 0.500 v0.00 0.500 0.500 dofs  0 2 4 6 16 18 8 12 20
-DEAL:: v0.500 0.00 0.00 v0.500 0.500 0.00 v0.500 0.00 0.500 v0.500 0.500 0.500 dofs  1 3 5 7 17 19 9 13 21
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 0.500 v0.500 0.00 0.00 v0.500 0.00 0.500 dofs  0 4 1 5 10 14 16 17 22
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.500 v0.500 0.500 0.00 v0.500 0.500 0.500 dofs  2 6 3 7 11 15 18 19 23
-DEAL:: v0.00 0.00 0.00 v0.500 0.00 0.00 v0.00 0.500 0.00 v0.500 0.500 0.00 dofs  0 1 2 3 8 9 10 11 24
-DEAL:: v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  4 5 6 7 12 13 14 15 25
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.00000 0.00000 0.500000 v0.00000 0.500000 0.500000 dofs  0 2 4 6 16 18 8 12 20
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 dofs  1 3 5 7 17 19 9 13 21
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.00000 v0.500000 0.00000 0.500000 dofs  0 4 1 5 10 14 16 17 22
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 dofs  2 6 3 7 11 15 18 19 23
+DEAL:: v0.00000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 dofs  0 1 2 3 8 9 10 11 24
+DEAL:: v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  4 5 6 7 12 13 14 15 25
 DEAL::Level 1
-DEAL:: v0.500 0.00 0.00 v0.500 0.500 0.00 v0.500 0.00 0.500 v0.500 0.500 0.500 dofs  1 3 5 7 17 19 9 13 21
-DEAL:: v1.00 0.00 0.00 v1.00 0.500 0.00 v1.00 0.00 0.500 v1.00 0.500 0.500 dofs  27 28 29 30 37 38 31 34 39
-DEAL:: v0.500 0.00 0.00 v0.500 0.00 0.500 v1.00 0.00 0.00 v1.00 0.00 0.500 dofs  1 5 27 29 32 35 17 37 40
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.500 v1.00 0.500 0.00 v1.00 0.500 0.500 dofs  3 7 28 30 33 36 19 38 41
-DEAL:: v0.500 0.00 0.00 v1.00 0.00 0.00 v0.500 0.500 0.00 v1.00 0.500 0.00 dofs  1 27 3 28 9 31 32 33 42
-DEAL:: v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  5 29 7 30 13 34 35 36 43
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 dofs  1 3 5 7 17 19 9 13 21
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 0.500000 0.00000 v1.00000 0.00000 0.500000 v1.00000 0.500000 0.500000 dofs  27 28 29 30 37 38 31 34 39
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.00000 v1.00000 0.00000 0.500000 dofs  1 5 27 29 32 35 17 37 40
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.500000 dofs  3 7 28 30 33 36 19 38 41
+DEAL:: v0.500000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 dofs  1 27 3 28 9 31 32 33 42
+DEAL:: v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  5 29 7 30 13 34 35 36 43
 DEAL::Level 1
-DEAL:: v0.00 0.500 0.00 v0.00 1.00 0.00 v0.00 0.500 0.500 v0.00 1.00 0.500 dofs  2 45 6 47 18 55 49 52 57
-DEAL:: v0.500 0.500 0.00 v0.500 1.00 0.00 v0.500 0.500 0.500 v0.500 1.00 0.500 dofs  3 46 7 48 19 56 50 53 58
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.500 v0.500 0.500 0.00 v0.500 0.500 0.500 dofs  2 6 3 7 11 15 18 19 23
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 0.500 v0.500 1.00 0.00 v0.500 1.00 0.500 dofs  45 47 46 48 51 54 55 56 59
-DEAL:: v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 1.00 0.00 v0.500 1.00 0.00 dofs  2 3 45 46 49 50 11 51 60
-DEAL:: v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  6 7 47 48 52 53 15 54 61
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.500000 0.500000 v0.00000 1.00000 0.500000 dofs  2 45 6 47 18 55 49 52 57
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 dofs  3 46 7 48 19 56 50 53 58
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 dofs  2 6 3 7 11 15 18 19 23
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.00000 v0.500000 1.00000 0.500000 dofs  45 47 46 48 51 54 55 56 59
+DEAL:: v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.500000 1.00000 0.00000 dofs  2 3 45 46 49 50 11 51 60
+DEAL:: v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  6 7 47 48 52 53 15 54 61
 DEAL::Level 1
-DEAL:: v0.500 0.500 0.00 v0.500 1.00 0.00 v0.500 0.500 0.500 v0.500 1.00 0.500 dofs  3 46 7 48 19 56 50 53 58
-DEAL:: v1.00 0.500 0.00 v1.00 1.00 0.00 v1.00 0.500 0.500 v1.00 1.00 0.500 dofs  28 63 30 64 38 69 65 67 70
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.500 v1.00 0.500 0.00 v1.00 0.500 0.500 dofs  3 7 28 30 33 36 19 38 41
-DEAL:: v0.500 1.00 0.00 v0.500 1.00 0.500 v1.00 1.00 0.00 v1.00 1.00 0.500 dofs  46 48 63 64 66 68 56 69 71
-DEAL:: v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 1.00 0.00 v1.00 1.00 0.00 dofs  3 28 46 63 50 65 33 66 72
-DEAL:: v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  7 30 48 64 53 67 36 68 73
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 dofs  3 46 7 48 19 56 50 53 58
+DEAL:: v1.00000 0.500000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.500000 0.500000 v1.00000 1.00000 0.500000 dofs  28 63 30 64 38 69 65 67 70
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.500000 dofs  3 7 28 30 33 36 19 38 41
+DEAL:: v0.500000 1.00000 0.00000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.00000 v1.00000 1.00000 0.500000 dofs  46 48 63 64 66 68 56 69 71
+DEAL:: v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  3 28 46 63 50 65 33 66 72
+DEAL:: v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  7 30 48 64 53 67 36 68 73
 DEAL::Level 1
-DEAL:: v0.00 0.00 0.500 v0.00 0.500 0.500 v0.00 0.00 1.00 v0.00 0.500 1.00 dofs  4 6 75 77 83 85 12 79 87
-DEAL:: v0.500 0.00 0.500 v0.500 0.500 0.500 v0.500 0.00 1.00 v0.500 0.500 1.00 dofs  5 7 76 78 84 86 13 80 88
-DEAL:: v0.00 0.00 0.500 v0.00 0.00 1.00 v0.500 0.00 0.500 v0.500 0.00 1.00 dofs  4 75 5 76 14 81 83 84 89
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 1.00 v0.500 0.500 0.500 v0.500 0.500 1.00 dofs  6 77 7 78 15 82 85 86 90
-DEAL:: v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  4 5 6 7 12 13 14 15 25
-DEAL:: v0.00 0.00 1.00 v0.500 0.00 1.00 v0.00 0.500 1.00 v0.500 0.500 1.00 dofs  75 76 77 78 79 80 81 82 91
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.00000 0.00000 1.00000 v0.00000 0.500000 1.00000 dofs  4 6 75 77 83 85 12 79 87
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.00000 1.00000 v0.500000 0.500000 1.00000 dofs  5 7 76 78 84 86 13 80 88
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.00000 1.00000 v0.500000 0.00000 0.500000 v0.500000 0.00000 1.00000 dofs  4 75 5 76 14 81 83 84 89
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 dofs  6 77 7 78 15 82 85 86 90
+DEAL:: v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  4 5 6 7 12 13 14 15 25
+DEAL:: v0.00000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  75 76 77 78 79 80 81 82 91
 DEAL::Level 1
-DEAL:: v0.500 0.00 0.500 v0.500 0.500 0.500 v0.500 0.00 1.00 v0.500 0.500 1.00 dofs  5 7 76 78 84 86 13 80 88
-DEAL:: v1.00 0.00 0.500 v1.00 0.500 0.500 v1.00 0.00 1.00 v1.00 0.500 1.00 dofs  29 30 93 94 98 99 34 95 100
-DEAL:: v0.500 0.00 0.500 v0.500 0.00 1.00 v1.00 0.00 0.500 v1.00 0.00 1.00 dofs  5 76 29 93 35 96 84 98 101
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 1.00 v1.00 0.500 0.500 v1.00 0.500 1.00 dofs  7 78 30 94 36 97 86 99 102
-DEAL:: v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  5 29 7 30 13 34 35 36 43
-DEAL:: v0.500 0.00 1.00 v1.00 0.00 1.00 v0.500 0.500 1.00 v1.00 0.500 1.00 dofs  76 93 78 94 80 95 96 97 103
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.00000 1.00000 v0.500000 0.500000 1.00000 dofs  5 7 76 78 84 86 13 80 88
+DEAL:: v1.00000 0.00000 0.500000 v1.00000 0.500000 0.500000 v1.00000 0.00000 1.00000 v1.00000 0.500000 1.00000 dofs  29 30 93 94 98 99 34 95 100
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.00000 1.00000 v1.00000 0.00000 0.500000 v1.00000 0.00000 1.00000 dofs  5 76 29 93 35 96 84 98 101
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 0.500000 v1.00000 0.500000 1.00000 dofs  7 78 30 94 36 97 86 99 102
+DEAL:: v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  5 29 7 30 13 34 35 36 43
+DEAL:: v0.500000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  76 93 78 94 80 95 96 97 103
 DEAL::Level 1
-DEAL:: v0.00 0.500 0.500 v0.00 1.00 0.500 v0.00 0.500 1.00 v0.00 1.00 1.00 dofs  6 47 77 105 85 110 52 107 112
-DEAL:: v0.500 0.500 0.500 v0.500 1.00 0.500 v0.500 0.500 1.00 v0.500 1.00 1.00 dofs  7 48 78 106 86 111 53 108 113
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 1.00 v0.500 0.500 0.500 v0.500 0.500 1.00 dofs  6 77 7 78 15 82 85 86 90
-DEAL:: v0.00 1.00 0.500 v0.00 1.00 1.00 v0.500 1.00 0.500 v0.500 1.00 1.00 dofs  47 105 48 106 54 109 110 111 114
-DEAL:: v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  6 7 47 48 52 53 15 54 61
-DEAL:: v0.00 0.500 1.00 v0.500 0.500 1.00 v0.00 1.00 1.00 v0.500 1.00 1.00 dofs  77 78 105 106 107 108 82 109 115
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.00000 0.500000 1.00000 v0.00000 1.00000 1.00000 dofs  6 47 77 105 85 110 52 107 112
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.500000 1.00000 v0.500000 1.00000 1.00000 dofs  7 48 78 106 86 111 53 108 113
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 dofs  6 77 7 78 15 82 85 86 90
+DEAL:: v0.00000 1.00000 0.500000 v0.00000 1.00000 1.00000 v0.500000 1.00000 0.500000 v0.500000 1.00000 1.00000 dofs  47 105 48 106 54 109 110 111 114
+DEAL:: v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  6 7 47 48 52 53 15 54 61
+DEAL:: v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.00000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  77 78 105 106 107 108 82 109 115
 DEAL::Level 1
-DEAL:: v0.500 0.500 0.500 v0.500 1.00 0.500 v0.500 0.500 1.00 v0.500 1.00 1.00 dofs  7 48 78 106 86 111 53 108 113
-DEAL:: v1.00 0.500 0.500 v1.00 1.00 0.500 v1.00 0.500 1.00 v1.00 1.00 1.00 dofs  30 64 94 117 99 120 67 118 121
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 1.00 v1.00 0.500 0.500 v1.00 0.500 1.00 dofs  7 78 30 94 36 97 86 99 102
-DEAL:: v0.500 1.00 0.500 v0.500 1.00 1.00 v1.00 1.00 0.500 v1.00 1.00 1.00 dofs  48 106 64 117 68 119 111 120 122
-DEAL:: v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  7 30 48 64 53 67 36 68 73
-DEAL:: v0.500 0.500 1.00 v1.00 0.500 1.00 v0.500 1.00 1.00 v1.00 1.00 1.00 dofs  78 94 106 117 108 118 97 119 123
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.00 v0.00 0.250 0.00 v0.00 0.00 0.250 v0.00 0.250 0.250 dofs  0 2 4 6 16 18 8 12 20
-DEAL:: v0.250 0.00 0.00 v0.250 0.250 0.00 v0.250 0.00 0.250 v0.250 0.250 0.250 dofs  1 3 5 7 17 19 9 13 21
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 0.250 v0.250 0.00 0.00 v0.250 0.00 0.250 dofs  0 4 1 5 10 14 16 17 22
-DEAL:: v0.00 0.250 0.00 v0.00 0.250 0.250 v0.250 0.250 0.00 v0.250 0.250 0.250 dofs  2 6 3 7 11 15 18 19 23
-DEAL:: v0.00 0.00 0.00 v0.250 0.00 0.00 v0.00 0.250 0.00 v0.250 0.250 0.00 dofs  0 1 2 3 8 9 10 11 24
-DEAL:: v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  4 5 6 7 12 13 14 15 25
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.00 v0.250 0.250 0.00 v0.250 0.00 0.250 v0.250 0.250 0.250 dofs  1 3 5 7 17 19 9 13 21
-DEAL:: v0.500 0.00 0.00 v0.500 0.250 0.00 v0.500 0.00 0.250 v0.500 0.250 0.250 dofs  27 28 29 30 37 38 31 34 39
-DEAL:: v0.250 0.00 0.00 v0.250 0.00 0.250 v0.500 0.00 0.00 v0.500 0.00 0.250 dofs  1 5 27 29 32 35 17 37 40
-DEAL:: v0.250 0.250 0.00 v0.250 0.250 0.250 v0.500 0.250 0.00 v0.500 0.250 0.250 dofs  3 7 28 30 33 36 19 38 41
-DEAL:: v0.250 0.00 0.00 v0.500 0.00 0.00 v0.250 0.250 0.00 v0.500 0.250 0.00 dofs  1 27 3 28 9 31 32 33 42
-DEAL:: v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  5 29 7 30 13 34 35 36 43
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.00 v0.00 0.500 0.00 v0.00 0.250 0.250 v0.00 0.500 0.250 dofs  2 45 6 47 18 55 49 52 57
-DEAL:: v0.250 0.250 0.00 v0.250 0.500 0.00 v0.250 0.250 0.250 v0.250 0.500 0.250 dofs  3 46 7 48 19 56 50 53 58
-DEAL:: v0.00 0.250 0.00 v0.00 0.250 0.250 v0.250 0.250 0.00 v0.250 0.250 0.250 dofs  2 6 3 7 11 15 18 19 23
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.250 v0.250 0.500 0.00 v0.250 0.500 0.250 dofs  45 47 46 48 51 54 55 56 59
-DEAL:: v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.500 0.00 v0.250 0.500 0.00 dofs  2 3 45 46 49 50 11 51 60
-DEAL:: v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  6 7 47 48 52 53 15 54 61
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.00 v0.250 0.500 0.00 v0.250 0.250 0.250 v0.250 0.500 0.250 dofs  3 46 7 48 19 56 50 53 58
-DEAL:: v0.500 0.250 0.00 v0.500 0.500 0.00 v0.500 0.250 0.250 v0.500 0.500 0.250 dofs  28 63 30 64 38 69 65 67 70
-DEAL:: v0.250 0.250 0.00 v0.250 0.250 0.250 v0.500 0.250 0.00 v0.500 0.250 0.250 dofs  3 7 28 30 33 36 19 38 41
-DEAL:: v0.250 0.500 0.00 v0.250 0.500 0.250 v0.500 0.500 0.00 v0.500 0.500 0.250 dofs  46 48 63 64 66 68 56 69 71
-DEAL:: v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.500 0.00 v0.500 0.500 0.00 dofs  3 28 46 63 50 65 33 66 72
-DEAL:: v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  7 30 48 64 53 67 36 68 73
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.250 v0.00 0.250 0.250 v0.00 0.00 0.500 v0.00 0.250 0.500 dofs  4 6 75 77 83 85 12 79 87
-DEAL:: v0.250 0.00 0.250 v0.250 0.250 0.250 v0.250 0.00 0.500 v0.250 0.250 0.500 dofs  5 7 76 78 84 86 13 80 88
-DEAL:: v0.00 0.00 0.250 v0.00 0.00 0.500 v0.250 0.00 0.250 v0.250 0.00 0.500 dofs  4 75 5 76 14 81 83 84 89
-DEAL:: v0.00 0.250 0.250 v0.00 0.250 0.500 v0.250 0.250 0.250 v0.250 0.250 0.500 dofs  6 77 7 78 15 82 85 86 90
-DEAL:: v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  4 5 6 7 12 13 14 15 25
-DEAL:: v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  75 76 77 78 79 80 81 82 91
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.250 v0.250 0.250 0.250 v0.250 0.00 0.500 v0.250 0.250 0.500 dofs  5 7 76 78 84 86 13 80 88
-DEAL:: v0.500 0.00 0.250 v0.500 0.250 0.250 v0.500 0.00 0.500 v0.500 0.250 0.500 dofs  29 30 93 94 98 99 34 95 100
-DEAL:: v0.250 0.00 0.250 v0.250 0.00 0.500 v0.500 0.00 0.250 v0.500 0.00 0.500 dofs  5 76 29 93 35 96 84 98 101
-DEAL:: v0.250 0.250 0.250 v0.250 0.250 0.500 v0.500 0.250 0.250 v0.500 0.250 0.500 dofs  7 78 30 94 36 97 86 99 102
-DEAL:: v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  5 29 7 30 13 34 35 36 43
-DEAL:: v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  76 93 78 94 80 95 96 97 103
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.250 v0.00 0.500 0.250 v0.00 0.250 0.500 v0.00 0.500 0.500 dofs  6 47 77 105 85 110 52 107 112
-DEAL:: v0.250 0.250 0.250 v0.250 0.500 0.250 v0.250 0.250 0.500 v0.250 0.500 0.500 dofs  7 48 78 106 86 111 53 108 113
-DEAL:: v0.00 0.250 0.250 v0.00 0.250 0.500 v0.250 0.250 0.250 v0.250 0.250 0.500 dofs  6 77 7 78 15 82 85 86 90
-DEAL:: v0.00 0.500 0.250 v0.00 0.500 0.500 v0.250 0.500 0.250 v0.250 0.500 0.500 dofs  47 105 48 106 54 109 110 111 114
-DEAL:: v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  6 7 47 48 52 53 15 54 61
-DEAL:: v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  77 78 105 106 107 108 82 109 115
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.250 v0.250 0.500 0.250 v0.250 0.250 0.500 v0.250 0.500 0.500 dofs  7 48 78 106 86 111 53 108 113
-DEAL:: v0.500 0.250 0.250 v0.500 0.500 0.250 v0.500 0.250 0.500 v0.500 0.500 0.500 dofs  30 64 94 117 99 120 67 118 121
-DEAL:: v0.250 0.250 0.250 v0.250 0.250 0.500 v0.500 0.250 0.250 v0.500 0.250 0.500 dofs  7 78 30 94 36 97 86 99 102
-DEAL:: v0.250 0.500 0.250 v0.250 0.500 0.500 v0.500 0.500 0.250 v0.500 0.500 0.500 dofs  48 106 64 117 68 119 111 120 122
-DEAL:: v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  7 30 48 64 53 67 36 68 73
-DEAL:: v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  78 94 106 117 108 118 97 119 123
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.00 v0.500 0.250 0.00 v0.500 0.00 0.250 v0.500 0.250 0.250 dofs  27 28 29 30 37 38 31 34 39
-DEAL:: v0.750 0.00 0.00 v0.750 0.250 0.00 v0.750 0.00 0.250 v0.750 0.250 0.250 dofs  125 126 127 128 135 136 129 132 137
-DEAL:: v0.500 0.00 0.00 v0.500 0.00 0.250 v0.750 0.00 0.00 v0.750 0.00 0.250 dofs  27 29 125 127 130 133 37 135 138
-DEAL:: v0.500 0.250 0.00 v0.500 0.250 0.250 v0.750 0.250 0.00 v0.750 0.250 0.250 dofs  28 30 126 128 131 134 38 136 139
-DEAL:: v0.500 0.00 0.00 v0.750 0.00 0.00 v0.500 0.250 0.00 v0.750 0.250 0.00 dofs  27 125 28 126 31 129 130 131 140
-DEAL:: v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  29 127 30 128 34 132 133 134 141
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.00 v0.750 0.250 0.00 v0.750 0.00 0.250 v0.750 0.250 0.250 dofs  125 126 127 128 135 136 129 132 137
-DEAL:: v1.00 0.00 0.00 v1.00 0.250 0.00 v1.00 0.00 0.250 v1.00 0.250 0.250 dofs  143 144 145 146 153 154 147 150 155
-DEAL:: v0.750 0.00 0.00 v0.750 0.00 0.250 v1.00 0.00 0.00 v1.00 0.00 0.250 dofs  125 127 143 145 148 151 135 153 156
-DEAL:: v0.750 0.250 0.00 v0.750 0.250 0.250 v1.00 0.250 0.00 v1.00 0.250 0.250 dofs  126 128 144 146 149 152 136 154 157
-DEAL:: v0.750 0.00 0.00 v1.00 0.00 0.00 v0.750 0.250 0.00 v1.00 0.250 0.00 dofs  125 143 126 144 129 147 148 149 158
-DEAL:: v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  127 145 128 146 132 150 151 152 159
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.00 v0.500 0.500 0.00 v0.500 0.250 0.250 v0.500 0.500 0.250 dofs  28 63 30 64 38 69 65 67 70
-DEAL:: v0.750 0.250 0.00 v0.750 0.500 0.00 v0.750 0.250 0.250 v0.750 0.500 0.250 dofs  126 161 128 162 136 167 163 165 168
-DEAL:: v0.500 0.250 0.00 v0.500 0.250 0.250 v0.750 0.250 0.00 v0.750 0.250 0.250 dofs  28 30 126 128 131 134 38 136 139
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.250 v0.750 0.500 0.00 v0.750 0.500 0.250 dofs  63 64 161 162 164 166 69 167 169
-DEAL:: v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.500 0.00 v0.750 0.500 0.00 dofs  28 126 63 161 65 163 131 164 170
-DEAL:: v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  30 128 64 162 67 165 134 166 171
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.00 v0.750 0.500 0.00 v0.750 0.250 0.250 v0.750 0.500 0.250 dofs  126 161 128 162 136 167 163 165 168
-DEAL:: v1.00 0.250 0.00 v1.00 0.500 0.00 v1.00 0.250 0.250 v1.00 0.500 0.250 dofs  144 173 146 174 154 179 175 177 180
-DEAL:: v0.750 0.250 0.00 v0.750 0.250 0.250 v1.00 0.250 0.00 v1.00 0.250 0.250 dofs  126 128 144 146 149 152 136 154 157
-DEAL:: v0.750 0.500 0.00 v0.750 0.500 0.250 v1.00 0.500 0.00 v1.00 0.500 0.250 dofs  161 162 173 174 176 178 167 179 181
-DEAL:: v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.500 0.00 v1.00 0.500 0.00 dofs  126 144 161 173 163 175 149 176 182
-DEAL:: v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  128 146 162 174 165 177 152 178 183
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.250 v0.500 0.250 0.250 v0.500 0.00 0.500 v0.500 0.250 0.500 dofs  29 30 93 94 98 99 34 95 100
-DEAL:: v0.750 0.00 0.250 v0.750 0.250 0.250 v0.750 0.00 0.500 v0.750 0.250 0.500 dofs  127 128 185 186 190 191 132 187 192
-DEAL:: v0.500 0.00 0.250 v0.500 0.00 0.500 v0.750 0.00 0.250 v0.750 0.00 0.500 dofs  29 93 127 185 133 188 98 190 193
-DEAL:: v0.500 0.250 0.250 v0.500 0.250 0.500 v0.750 0.250 0.250 v0.750 0.250 0.500 dofs  30 94 128 186 134 189 99 191 194
-DEAL:: v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  29 127 30 128 34 132 133 134 141
-DEAL:: v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  93 185 94 186 95 187 188 189 195
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.250 v0.750 0.250 0.250 v0.750 0.00 0.500 v0.750 0.250 0.500 dofs  127 128 185 186 190 191 132 187 192
-DEAL:: v1.00 0.00 0.250 v1.00 0.250 0.250 v1.00 0.00 0.500 v1.00 0.250 0.500 dofs  145 146 197 198 202 203 150 199 204
-DEAL:: v0.750 0.00 0.250 v0.750 0.00 0.500 v1.00 0.00 0.250 v1.00 0.00 0.500 dofs  127 185 145 197 151 200 190 202 205
-DEAL:: v0.750 0.250 0.250 v0.750 0.250 0.500 v1.00 0.250 0.250 v1.00 0.250 0.500 dofs  128 186 146 198 152 201 191 203 206
-DEAL:: v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  127 145 128 146 132 150 151 152 159
-DEAL:: v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  185 197 186 198 187 199 200 201 207
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.250 v0.500 0.500 0.250 v0.500 0.250 0.500 v0.500 0.500 0.500 dofs  30 64 94 117 99 120 67 118 121
-DEAL:: v0.750 0.250 0.250 v0.750 0.500 0.250 v0.750 0.250 0.500 v0.750 0.500 0.500 dofs  128 162 186 209 191 212 165 210 213
-DEAL:: v0.500 0.250 0.250 v0.500 0.250 0.500 v0.750 0.250 0.250 v0.750 0.250 0.500 dofs  30 94 128 186 134 189 99 191 194
-DEAL:: v0.500 0.500 0.250 v0.500 0.500 0.500 v0.750 0.500 0.250 v0.750 0.500 0.500 dofs  64 117 162 209 166 211 120 212 214
-DEAL:: v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  30 128 64 162 67 165 134 166 171
-DEAL:: v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  94 186 117 209 118 210 189 211 215
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.250 v0.750 0.500 0.250 v0.750 0.250 0.500 v0.750 0.500 0.500 dofs  128 162 186 209 191 212 165 210 213
-DEAL:: v1.00 0.250 0.250 v1.00 0.500 0.250 v1.00 0.250 0.500 v1.00 0.500 0.500 dofs  146 174 198 217 203 220 177 218 221
-DEAL:: v0.750 0.250 0.250 v0.750 0.250 0.500 v1.00 0.250 0.250 v1.00 0.250 0.500 dofs  128 186 146 198 152 201 191 203 206
-DEAL:: v0.750 0.500 0.250 v0.750 0.500 0.500 v1.00 0.500 0.250 v1.00 0.500 0.500 dofs  162 209 174 217 178 219 212 220 222
-DEAL:: v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  128 146 162 174 165 177 152 178 183
-DEAL:: v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  186 198 209 217 210 218 201 219 223
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.00 v0.00 0.750 0.00 v0.00 0.500 0.250 v0.00 0.750 0.250 dofs  45 225 47 227 55 235 229 232 237
-DEAL:: v0.250 0.500 0.00 v0.250 0.750 0.00 v0.250 0.500 0.250 v0.250 0.750 0.250 dofs  46 226 48 228 56 236 230 233 238
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.250 v0.250 0.500 0.00 v0.250 0.500 0.250 dofs  45 47 46 48 51 54 55 56 59
-DEAL:: v0.00 0.750 0.00 v0.00 0.750 0.250 v0.250 0.750 0.00 v0.250 0.750 0.250 dofs  225 227 226 228 231 234 235 236 239
-DEAL:: v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.750 0.00 v0.250 0.750 0.00 dofs  45 46 225 226 229 230 51 231 240
-DEAL:: v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  47 48 227 228 232 233 54 234 241
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.00 v0.250 0.750 0.00 v0.250 0.500 0.250 v0.250 0.750 0.250 dofs  46 226 48 228 56 236 230 233 238
-DEAL:: v0.500 0.500 0.00 v0.500 0.750 0.00 v0.500 0.500 0.250 v0.500 0.750 0.250 dofs  63 243 64 244 69 249 245 247 250
-DEAL:: v0.250 0.500 0.00 v0.250 0.500 0.250 v0.500 0.500 0.00 v0.500 0.500 0.250 dofs  46 48 63 64 66 68 56 69 71
-DEAL:: v0.250 0.750 0.00 v0.250 0.750 0.250 v0.500 0.750 0.00 v0.500 0.750 0.250 dofs  226 228 243 244 246 248 236 249 251
-DEAL:: v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.750 0.00 v0.500 0.750 0.00 dofs  46 63 226 243 230 245 66 246 252
-DEAL:: v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  48 64 228 244 233 247 68 248 253
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.00 v0.00 1.00 0.00 v0.00 0.750 0.250 v0.00 1.00 0.250 dofs  225 255 227 257 235 265 259 262 267
-DEAL:: v0.250 0.750 0.00 v0.250 1.00 0.00 v0.250 0.750 0.250 v0.250 1.00 0.250 dofs  226 256 228 258 236 266 260 263 268
-DEAL:: v0.00 0.750 0.00 v0.00 0.750 0.250 v0.250 0.750 0.00 v0.250 0.750 0.250 dofs  225 227 226 228 231 234 235 236 239
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 0.250 v0.250 1.00 0.00 v0.250 1.00 0.250 dofs  255 257 256 258 261 264 265 266 269
-DEAL:: v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 1.00 0.00 v0.250 1.00 0.00 dofs  225 226 255 256 259 260 231 261 270
-DEAL:: v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  227 228 257 258 262 263 234 264 271
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.00 v0.250 1.00 0.00 v0.250 0.750 0.250 v0.250 1.00 0.250 dofs  226 256 228 258 236 266 260 263 268
-DEAL:: v0.500 0.750 0.00 v0.500 1.00 0.00 v0.500 0.750 0.250 v0.500 1.00 0.250 dofs  243 273 244 274 249 279 275 277 280
-DEAL:: v0.250 0.750 0.00 v0.250 0.750 0.250 v0.500 0.750 0.00 v0.500 0.750 0.250 dofs  226 228 243 244 246 248 236 249 251
-DEAL:: v0.250 1.00 0.00 v0.250 1.00 0.250 v0.500 1.00 0.00 v0.500 1.00 0.250 dofs  256 258 273 274 276 278 266 279 281
-DEAL:: v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 1.00 0.00 v0.500 1.00 0.00 dofs  226 243 256 273 260 275 246 276 282
-DEAL:: v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  228 244 258 274 263 277 248 278 283
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.250 v0.00 0.750 0.250 v0.00 0.500 0.500 v0.00 0.750 0.500 dofs  47 227 105 285 110 290 232 287 292
-DEAL:: v0.250 0.500 0.250 v0.250 0.750 0.250 v0.250 0.500 0.500 v0.250 0.750 0.500 dofs  48 228 106 286 111 291 233 288 293
-DEAL:: v0.00 0.500 0.250 v0.00 0.500 0.500 v0.250 0.500 0.250 v0.250 0.500 0.500 dofs  47 105 48 106 54 109 110 111 114
-DEAL:: v0.00 0.750 0.250 v0.00 0.750 0.500 v0.250 0.750 0.250 v0.250 0.750 0.500 dofs  227 285 228 286 234 289 290 291 294
-DEAL:: v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  47 48 227 228 232 233 54 234 241
-DEAL:: v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  105 106 285 286 287 288 109 289 295
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.250 v0.250 0.750 0.250 v0.250 0.500 0.500 v0.250 0.750 0.500 dofs  48 228 106 286 111 291 233 288 293
-DEAL:: v0.500 0.500 0.250 v0.500 0.750 0.250 v0.500 0.500 0.500 v0.500 0.750 0.500 dofs  64 244 117 297 120 300 247 298 301
-DEAL:: v0.250 0.500 0.250 v0.250 0.500 0.500 v0.500 0.500 0.250 v0.500 0.500 0.500 dofs  48 106 64 117 68 119 111 120 122
-DEAL:: v0.250 0.750 0.250 v0.250 0.750 0.500 v0.500 0.750 0.250 v0.500 0.750 0.500 dofs  228 286 244 297 248 299 291 300 302
-DEAL:: v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  48 64 228 244 233 247 68 248 253
-DEAL:: v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  106 117 286 297 288 298 119 299 303
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.250 v0.00 1.00 0.250 v0.00 0.750 0.500 v0.00 1.00 0.500 dofs  227 257 285 305 290 310 262 307 312
-DEAL:: v0.250 0.750 0.250 v0.250 1.00 0.250 v0.250 0.750 0.500 v0.250 1.00 0.500 dofs  228 258 286 306 291 311 263 308 313
-DEAL:: v0.00 0.750 0.250 v0.00 0.750 0.500 v0.250 0.750 0.250 v0.250 0.750 0.500 dofs  227 285 228 286 234 289 290 291 294
-DEAL:: v0.00 1.00 0.250 v0.00 1.00 0.500 v0.250 1.00 0.250 v0.250 1.00 0.500 dofs  257 305 258 306 264 309 310 311 314
-DEAL:: v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  227 228 257 258 262 263 234 264 271
-DEAL:: v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  285 286 305 306 307 308 289 309 315
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.250 v0.250 1.00 0.250 v0.250 0.750 0.500 v0.250 1.00 0.500 dofs  228 258 286 306 291 311 263 308 313
-DEAL:: v0.500 0.750 0.250 v0.500 1.00 0.250 v0.500 0.750 0.500 v0.500 1.00 0.500 dofs  244 274 297 317 300 320 277 318 321
-DEAL:: v0.250 0.750 0.250 v0.250 0.750 0.500 v0.500 0.750 0.250 v0.500 0.750 0.500 dofs  228 286 244 297 248 299 291 300 302
-DEAL:: v0.250 1.00 0.250 v0.250 1.00 0.500 v0.500 1.00 0.250 v0.500 1.00 0.500 dofs  258 306 274 317 278 319 311 320 322
-DEAL:: v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  228 244 258 274 263 277 248 278 283
-DEAL:: v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  286 297 306 317 308 318 299 319 323
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.00 v0.500 0.750 0.00 v0.500 0.500 0.250 v0.500 0.750 0.250 dofs  63 243 64 244 69 249 245 247 250
-DEAL:: v0.750 0.500 0.00 v0.750 0.750 0.00 v0.750 0.500 0.250 v0.750 0.750 0.250 dofs  161 325 162 326 167 331 327 329 332
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.250 v0.750 0.500 0.00 v0.750 0.500 0.250 dofs  63 64 161 162 164 166 69 167 169
-DEAL:: v0.500 0.750 0.00 v0.500 0.750 0.250 v0.750 0.750 0.00 v0.750 0.750 0.250 dofs  243 244 325 326 328 330 249 331 333
-DEAL:: v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.750 0.00 v0.750 0.750 0.00 dofs  63 161 243 325 245 327 164 328 334
-DEAL:: v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  64 162 244 326 247 329 166 330 335
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.00 v0.750 0.750 0.00 v0.750 0.500 0.250 v0.750 0.750 0.250 dofs  161 325 162 326 167 331 327 329 332
-DEAL:: v1.00 0.500 0.00 v1.00 0.750 0.00 v1.00 0.500 0.250 v1.00 0.750 0.250 dofs  173 337 174 338 179 343 339 341 344
-DEAL:: v0.750 0.500 0.00 v0.750 0.500 0.250 v1.00 0.500 0.00 v1.00 0.500 0.250 dofs  161 162 173 174 176 178 167 179 181
-DEAL:: v0.750 0.750 0.00 v0.750 0.750 0.250 v1.00 0.750 0.00 v1.00 0.750 0.250 dofs  325 326 337 338 340 342 331 343 345
-DEAL:: v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.750 0.00 v1.00 0.750 0.00 dofs  161 173 325 337 327 339 176 340 346
-DEAL:: v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  162 174 326 338 329 341 178 342 347
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.00 v0.500 1.00 0.00 v0.500 0.750 0.250 v0.500 1.00 0.250 dofs  243 273 244 274 249 279 275 277 280
-DEAL:: v0.750 0.750 0.00 v0.750 1.00 0.00 v0.750 0.750 0.250 v0.750 1.00 0.250 dofs  325 349 326 350 331 355 351 353 356
-DEAL:: v0.500 0.750 0.00 v0.500 0.750 0.250 v0.750 0.750 0.00 v0.750 0.750 0.250 dofs  243 244 325 326 328 330 249 331 333
-DEAL:: v0.500 1.00 0.00 v0.500 1.00 0.250 v0.750 1.00 0.00 v0.750 1.00 0.250 dofs  273 274 349 350 352 354 279 355 357
-DEAL:: v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 1.00 0.00 v0.750 1.00 0.00 dofs  243 325 273 349 275 351 328 352 358
-DEAL:: v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  244 326 274 350 277 353 330 354 359
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.00 v0.750 1.00 0.00 v0.750 0.750 0.250 v0.750 1.00 0.250 dofs  325 349 326 350 331 355 351 353 356
-DEAL:: v1.00 0.750 0.00 v1.00 1.00 0.00 v1.00 0.750 0.250 v1.00 1.00 0.250 dofs  337 361 338 362 343 367 363 365 368
-DEAL:: v0.750 0.750 0.00 v0.750 0.750 0.250 v1.00 0.750 0.00 v1.00 0.750 0.250 dofs  325 326 337 338 340 342 331 343 345
-DEAL:: v0.750 1.00 0.00 v0.750 1.00 0.250 v1.00 1.00 0.00 v1.00 1.00 0.250 dofs  349 350 361 362 364 366 355 367 369
-DEAL:: v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 1.00 0.00 v1.00 1.00 0.00 dofs  325 337 349 361 351 363 340 364 370
-DEAL:: v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  326 338 350 362 353 365 342 366 371
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.250 v0.500 0.750 0.250 v0.500 0.500 0.500 v0.500 0.750 0.500 dofs  64 244 117 297 120 300 247 298 301
-DEAL:: v0.750 0.500 0.250 v0.750 0.750 0.250 v0.750 0.500 0.500 v0.750 0.750 0.500 dofs  162 326 209 373 212 376 329 374 377
-DEAL:: v0.500 0.500 0.250 v0.500 0.500 0.500 v0.750 0.500 0.250 v0.750 0.500 0.500 dofs  64 117 162 209 166 211 120 212 214
-DEAL:: v0.500 0.750 0.250 v0.500 0.750 0.500 v0.750 0.750 0.250 v0.750 0.750 0.500 dofs  244 297 326 373 330 375 300 376 378
-DEAL:: v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  64 162 244 326 247 329 166 330 335
-DEAL:: v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  117 209 297 373 298 374 211 375 379
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.250 v0.750 0.750 0.250 v0.750 0.500 0.500 v0.750 0.750 0.500 dofs  162 326 209 373 212 376 329 374 377
-DEAL:: v1.00 0.500 0.250 v1.00 0.750 0.250 v1.00 0.500 0.500 v1.00 0.750 0.500 dofs  174 338 217 381 220 384 341 382 385
-DEAL:: v0.750 0.500 0.250 v0.750 0.500 0.500 v1.00 0.500 0.250 v1.00 0.500 0.500 dofs  162 209 174 217 178 219 212 220 222
-DEAL:: v0.750 0.750 0.250 v0.750 0.750 0.500 v1.00 0.750 0.250 v1.00 0.750 0.500 dofs  326 373 338 381 342 383 376 384 386
-DEAL:: v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  162 174 326 338 329 341 178 342 347
-DEAL:: v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  209 217 373 381 374 382 219 383 387
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.250 v0.500 1.00 0.250 v0.500 0.750 0.500 v0.500 1.00 0.500 dofs  244 274 297 317 300 320 277 318 321
-DEAL:: v0.750 0.750 0.250 v0.750 1.00 0.250 v0.750 0.750 0.500 v0.750 1.00 0.500 dofs  326 350 373 389 376 392 353 390 393
-DEAL:: v0.500 0.750 0.250 v0.500 0.750 0.500 v0.750 0.750 0.250 v0.750 0.750 0.500 dofs  244 297 326 373 330 375 300 376 378
-DEAL:: v0.500 1.00 0.250 v0.500 1.00 0.500 v0.750 1.00 0.250 v0.750 1.00 0.500 dofs  274 317 350 389 354 391 320 392 394
-DEAL:: v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  244 326 274 350 277 353 330 354 359
-DEAL:: v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  297 373 317 389 318 390 375 391 395
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.250 v0.750 1.00 0.250 v0.750 0.750 0.500 v0.750 1.00 0.500 dofs  326 350 373 389 376 392 353 390 393
-DEAL:: v1.00 0.750 0.250 v1.00 1.00 0.250 v1.00 0.750 0.500 v1.00 1.00 0.500 dofs  338 362 381 397 384 400 365 398 401
-DEAL:: v0.750 0.750 0.250 v0.750 0.750 0.500 v1.00 0.750 0.250 v1.00 0.750 0.500 dofs  326 373 338 381 342 383 376 384 386
-DEAL:: v0.750 1.00 0.250 v0.750 1.00 0.500 v1.00 1.00 0.250 v1.00 1.00 0.500 dofs  350 389 362 397 366 399 392 400 402
-DEAL:: v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  326 338 350 362 353 365 342 366 371
-DEAL:: v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  373 381 389 397 390 398 383 399 403
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.500 v0.00 0.250 0.500 v0.00 0.00 0.750 v0.00 0.250 0.750 dofs  75 77 405 407 413 415 79 409 417
-DEAL:: v0.250 0.00 0.500 v0.250 0.250 0.500 v0.250 0.00 0.750 v0.250 0.250 0.750 dofs  76 78 406 408 414 416 80 410 418
-DEAL:: v0.00 0.00 0.500 v0.00 0.00 0.750 v0.250 0.00 0.500 v0.250 0.00 0.750 dofs  75 405 76 406 81 411 413 414 419
-DEAL:: v0.00 0.250 0.500 v0.00 0.250 0.750 v0.250 0.250 0.500 v0.250 0.250 0.750 dofs  77 407 78 408 82 412 415 416 420
-DEAL:: v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  75 76 77 78 79 80 81 82 91
-DEAL:: v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  405 406 407 408 409 410 411 412 421
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.500 v0.250 0.250 0.500 v0.250 0.00 0.750 v0.250 0.250 0.750 dofs  76 78 406 408 414 416 80 410 418
-DEAL:: v0.500 0.00 0.500 v0.500 0.250 0.500 v0.500 0.00 0.750 v0.500 0.250 0.750 dofs  93 94 423 424 428 429 95 425 430
-DEAL:: v0.250 0.00 0.500 v0.250 0.00 0.750 v0.500 0.00 0.500 v0.500 0.00 0.750 dofs  76 406 93 423 96 426 414 428 431
-DEAL:: v0.250 0.250 0.500 v0.250 0.250 0.750 v0.500 0.250 0.500 v0.500 0.250 0.750 dofs  78 408 94 424 97 427 416 429 432
-DEAL:: v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  76 93 78 94 80 95 96 97 103
-DEAL:: v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  406 423 408 424 410 425 426 427 433
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.500 v0.00 0.500 0.500 v0.00 0.250 0.750 v0.00 0.500 0.750 dofs  77 105 407 435 415 440 107 437 442
-DEAL:: v0.250 0.250 0.500 v0.250 0.500 0.500 v0.250 0.250 0.750 v0.250 0.500 0.750 dofs  78 106 408 436 416 441 108 438 443
-DEAL:: v0.00 0.250 0.500 v0.00 0.250 0.750 v0.250 0.250 0.500 v0.250 0.250 0.750 dofs  77 407 78 408 82 412 415 416 420
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 0.750 v0.250 0.500 0.500 v0.250 0.500 0.750 dofs  105 435 106 436 109 439 440 441 444
-DEAL:: v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  77 78 105 106 107 108 82 109 115
-DEAL:: v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  407 408 435 436 437 438 412 439 445
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.500 v0.250 0.500 0.500 v0.250 0.250 0.750 v0.250 0.500 0.750 dofs  78 106 408 436 416 441 108 438 443
-DEAL:: v0.500 0.250 0.500 v0.500 0.500 0.500 v0.500 0.250 0.750 v0.500 0.500 0.750 dofs  94 117 424 447 429 450 118 448 451
-DEAL:: v0.250 0.250 0.500 v0.250 0.250 0.750 v0.500 0.250 0.500 v0.500 0.250 0.750 dofs  78 408 94 424 97 427 416 429 432
-DEAL:: v0.250 0.500 0.500 v0.250 0.500 0.750 v0.500 0.500 0.500 v0.500 0.500 0.750 dofs  106 436 117 447 119 449 441 450 452
-DEAL:: v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  78 94 106 117 108 118 97 119 123
-DEAL:: v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  408 424 436 447 438 448 427 449 453
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.750 v0.00 0.250 0.750 v0.00 0.00 1.00 v0.00 0.250 1.00 dofs  405 407 455 457 463 465 409 459 467
-DEAL:: v0.250 0.00 0.750 v0.250 0.250 0.750 v0.250 0.00 1.00 v0.250 0.250 1.00 dofs  406 408 456 458 464 466 410 460 468
-DEAL:: v0.00 0.00 0.750 v0.00 0.00 1.00 v0.250 0.00 0.750 v0.250 0.00 1.00 dofs  405 455 406 456 411 461 463 464 469
-DEAL:: v0.00 0.250 0.750 v0.00 0.250 1.00 v0.250 0.250 0.750 v0.250 0.250 1.00 dofs  407 457 408 458 412 462 465 466 470
-DEAL:: v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  405 406 407 408 409 410 411 412 421
-DEAL:: v0.00 0.00 1.00 v0.250 0.00 1.00 v0.00 0.250 1.00 v0.250 0.250 1.00 dofs  455 456 457 458 459 460 461 462 471
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.750 v0.250 0.250 0.750 v0.250 0.00 1.00 v0.250 0.250 1.00 dofs  406 408 456 458 464 466 410 460 468
-DEAL:: v0.500 0.00 0.750 v0.500 0.250 0.750 v0.500 0.00 1.00 v0.500 0.250 1.00 dofs  423 424 473 474 478 479 425 475 480
-DEAL:: v0.250 0.00 0.750 v0.250 0.00 1.00 v0.500 0.00 0.750 v0.500 0.00 1.00 dofs  406 456 423 473 426 476 464 478 481
-DEAL:: v0.250 0.250 0.750 v0.250 0.250 1.00 v0.500 0.250 0.750 v0.500 0.250 1.00 dofs  408 458 424 474 427 477 466 479 482
-DEAL:: v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  406 423 408 424 410 425 426 427 433
-DEAL:: v0.250 0.00 1.00 v0.500 0.00 1.00 v0.250 0.250 1.00 v0.500 0.250 1.00 dofs  456 473 458 474 460 475 476 477 483
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.750 v0.00 0.500 0.750 v0.00 0.250 1.00 v0.00 0.500 1.00 dofs  407 435 457 485 465 490 437 487 492
-DEAL:: v0.250 0.250 0.750 v0.250 0.500 0.750 v0.250 0.250 1.00 v0.250 0.500 1.00 dofs  408 436 458 486 466 491 438 488 493
-DEAL:: v0.00 0.250 0.750 v0.00 0.250 1.00 v0.250 0.250 0.750 v0.250 0.250 1.00 dofs  407 457 408 458 412 462 465 466 470
-DEAL:: v0.00 0.500 0.750 v0.00 0.500 1.00 v0.250 0.500 0.750 v0.250 0.500 1.00 dofs  435 485 436 486 439 489 490 491 494
-DEAL:: v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  407 408 435 436 437 438 412 439 445
-DEAL:: v0.00 0.250 1.00 v0.250 0.250 1.00 v0.00 0.500 1.00 v0.250 0.500 1.00 dofs  457 458 485 486 487 488 462 489 495
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.750 v0.250 0.500 0.750 v0.250 0.250 1.00 v0.250 0.500 1.00 dofs  408 436 458 486 466 491 438 488 493
-DEAL:: v0.500 0.250 0.750 v0.500 0.500 0.750 v0.500 0.250 1.00 v0.500 0.500 1.00 dofs  424 447 474 497 479 500 448 498 501
-DEAL:: v0.250 0.250 0.750 v0.250 0.250 1.00 v0.500 0.250 0.750 v0.500 0.250 1.00 dofs  408 458 424 474 427 477 466 479 482
-DEAL:: v0.250 0.500 0.750 v0.250 0.500 1.00 v0.500 0.500 0.750 v0.500 0.500 1.00 dofs  436 486 447 497 449 499 491 500 502
-DEAL:: v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  408 424 436 447 438 448 427 449 453
-DEAL:: v0.250 0.250 1.00 v0.500 0.250 1.00 v0.250 0.500 1.00 v0.500 0.500 1.00 dofs  458 474 486 497 488 498 477 499 503
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.500 v0.500 0.250 0.500 v0.500 0.00 0.750 v0.500 0.250 0.750 dofs  93 94 423 424 428 429 95 425 430
-DEAL:: v0.750 0.00 0.500 v0.750 0.250 0.500 v0.750 0.00 0.750 v0.750 0.250 0.750 dofs  185 186 505 506 510 511 187 507 512
-DEAL:: v0.500 0.00 0.500 v0.500 0.00 0.750 v0.750 0.00 0.500 v0.750 0.00 0.750 dofs  93 423 185 505 188 508 428 510 513
-DEAL:: v0.500 0.250 0.500 v0.500 0.250 0.750 v0.750 0.250 0.500 v0.750 0.250 0.750 dofs  94 424 186 506 189 509 429 511 514
-DEAL:: v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  93 185 94 186 95 187 188 189 195
-DEAL:: v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  423 505 424 506 425 507 508 509 515
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.500 v0.750 0.250 0.500 v0.750 0.00 0.750 v0.750 0.250 0.750 dofs  185 186 505 506 510 511 187 507 512
-DEAL:: v1.00 0.00 0.500 v1.00 0.250 0.500 v1.00 0.00 0.750 v1.00 0.250 0.750 dofs  197 198 517 518 522 523 199 519 524
-DEAL:: v0.750 0.00 0.500 v0.750 0.00 0.750 v1.00 0.00 0.500 v1.00 0.00 0.750 dofs  185 505 197 517 200 520 510 522 525
-DEAL:: v0.750 0.250 0.500 v0.750 0.250 0.750 v1.00 0.250 0.500 v1.00 0.250 0.750 dofs  186 506 198 518 201 521 511 523 526
-DEAL:: v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  185 197 186 198 187 199 200 201 207
-DEAL:: v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  505 517 506 518 507 519 520 521 527
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.500 v0.500 0.500 0.500 v0.500 0.250 0.750 v0.500 0.500 0.750 dofs  94 117 424 447 429 450 118 448 451
-DEAL:: v0.750 0.250 0.500 v0.750 0.500 0.500 v0.750 0.250 0.750 v0.750 0.500 0.750 dofs  186 209 506 529 511 532 210 530 533
-DEAL:: v0.500 0.250 0.500 v0.500 0.250 0.750 v0.750 0.250 0.500 v0.750 0.250 0.750 dofs  94 424 186 506 189 509 429 511 514
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 0.750 v0.750 0.500 0.500 v0.750 0.500 0.750 dofs  117 447 209 529 211 531 450 532 534
-DEAL:: v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  94 186 117 209 118 210 189 211 215
-DEAL:: v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  424 506 447 529 448 530 509 531 535
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.500 v0.750 0.500 0.500 v0.750 0.250 0.750 v0.750 0.500 0.750 dofs  186 209 506 529 511 532 210 530 533
-DEAL:: v1.00 0.250 0.500 v1.00 0.500 0.500 v1.00 0.250 0.750 v1.00 0.500 0.750 dofs  198 217 518 537 523 540 218 538 541
-DEAL:: v0.750 0.250 0.500 v0.750 0.250 0.750 v1.00 0.250 0.500 v1.00 0.250 0.750 dofs  186 506 198 518 201 521 511 523 526
-DEAL:: v0.750 0.500 0.500 v0.750 0.500 0.750 v1.00 0.500 0.500 v1.00 0.500 0.750 dofs  209 529 217 537 219 539 532 540 542
-DEAL:: v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  186 198 209 217 210 218 201 219 223
-DEAL:: v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  506 518 529 537 530 538 521 539 543
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.750 v0.500 0.250 0.750 v0.500 0.00 1.00 v0.500 0.250 1.00 dofs  423 424 473 474 478 479 425 475 480
-DEAL:: v0.750 0.00 0.750 v0.750 0.250 0.750 v0.750 0.00 1.00 v0.750 0.250 1.00 dofs  505 506 545 546 550 551 507 547 552
-DEAL:: v0.500 0.00 0.750 v0.500 0.00 1.00 v0.750 0.00 0.750 v0.750 0.00 1.00 dofs  423 473 505 545 508 548 478 550 553
-DEAL:: v0.500 0.250 0.750 v0.500 0.250 1.00 v0.750 0.250 0.750 v0.750 0.250 1.00 dofs  424 474 506 546 509 549 479 551 554
-DEAL:: v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  423 505 424 506 425 507 508 509 515
-DEAL:: v0.500 0.00 1.00 v0.750 0.00 1.00 v0.500 0.250 1.00 v0.750 0.250 1.00 dofs  473 545 474 546 475 547 548 549 555
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.750 v0.750 0.250 0.750 v0.750 0.00 1.00 v0.750 0.250 1.00 dofs  505 506 545 546 550 551 507 547 552
-DEAL:: v1.00 0.00 0.750 v1.00 0.250 0.750 v1.00 0.00 1.00 v1.00 0.250 1.00 dofs  517 518 557 558 562 563 519 559 564
-DEAL:: v0.750 0.00 0.750 v0.750 0.00 1.00 v1.00 0.00 0.750 v1.00 0.00 1.00 dofs  505 545 517 557 520 560 550 562 565
-DEAL:: v0.750 0.250 0.750 v0.750 0.250 1.00 v1.00 0.250 0.750 v1.00 0.250 1.00 dofs  506 546 518 558 521 561 551 563 566
-DEAL:: v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  505 517 506 518 507 519 520 521 527
-DEAL:: v0.750 0.00 1.00 v1.00 0.00 1.00 v0.750 0.250 1.00 v1.00 0.250 1.00 dofs  545 557 546 558 547 559 560 561 567
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.750 v0.500 0.500 0.750 v0.500 0.250 1.00 v0.500 0.500 1.00 dofs  424 447 474 497 479 500 448 498 501
-DEAL:: v0.750 0.250 0.750 v0.750 0.500 0.750 v0.750 0.250 1.00 v0.750 0.500 1.00 dofs  506 529 546 569 551 572 530 570 573
-DEAL:: v0.500 0.250 0.750 v0.500 0.250 1.00 v0.750 0.250 0.750 v0.750 0.250 1.00 dofs  424 474 506 546 509 549 479 551 554
-DEAL:: v0.500 0.500 0.750 v0.500 0.500 1.00 v0.750 0.500 0.750 v0.750 0.500 1.00 dofs  447 497 529 569 531 571 500 572 574
-DEAL:: v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  424 506 447 529 448 530 509 531 535
-DEAL:: v0.500 0.250 1.00 v0.750 0.250 1.00 v0.500 0.500 1.00 v0.750 0.500 1.00 dofs  474 546 497 569 498 570 549 571 575
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.750 v0.750 0.500 0.750 v0.750 0.250 1.00 v0.750 0.500 1.00 dofs  506 529 546 569 551 572 530 570 573
-DEAL:: v1.00 0.250 0.750 v1.00 0.500 0.750 v1.00 0.250 1.00 v1.00 0.500 1.00 dofs  518 537 558 577 563 580 538 578 581
-DEAL:: v0.750 0.250 0.750 v0.750 0.250 1.00 v1.00 0.250 0.750 v1.00 0.250 1.00 dofs  506 546 518 558 521 561 551 563 566
-DEAL:: v0.750 0.500 0.750 v0.750 0.500 1.00 v1.00 0.500 0.750 v1.00 0.500 1.00 dofs  529 569 537 577 539 579 572 580 582
-DEAL:: v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  506 518 529 537 530 538 521 539 543
-DEAL:: v0.750 0.250 1.00 v1.00 0.250 1.00 v0.750 0.500 1.00 v1.00 0.500 1.00 dofs  546 558 569 577 570 578 561 579 583
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.500 v0.00 0.750 0.500 v0.00 0.500 0.750 v0.00 0.750 0.750 dofs  105 285 435 585 440 590 287 587 592
-DEAL:: v0.250 0.500 0.500 v0.250 0.750 0.500 v0.250 0.500 0.750 v0.250 0.750 0.750 dofs  106 286 436 586 441 591 288 588 593
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 0.750 v0.250 0.500 0.500 v0.250 0.500 0.750 dofs  105 435 106 436 109 439 440 441 444
-DEAL:: v0.00 0.750 0.500 v0.00 0.750 0.750 v0.250 0.750 0.500 v0.250 0.750 0.750 dofs  285 585 286 586 289 589 590 591 594
-DEAL:: v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  105 106 285 286 287 288 109 289 295
-DEAL:: v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  435 436 585 586 587 588 439 589 595
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.500 v0.250 0.750 0.500 v0.250 0.500 0.750 v0.250 0.750 0.750 dofs  106 286 436 586 441 591 288 588 593
-DEAL:: v0.500 0.500 0.500 v0.500 0.750 0.500 v0.500 0.500 0.750 v0.500 0.750 0.750 dofs  117 297 447 597 450 600 298 598 601
-DEAL:: v0.250 0.500 0.500 v0.250 0.500 0.750 v0.500 0.500 0.500 v0.500 0.500 0.750 dofs  106 436 117 447 119 449 441 450 452
-DEAL:: v0.250 0.750 0.500 v0.250 0.750 0.750 v0.500 0.750 0.500 v0.500 0.750 0.750 dofs  286 586 297 597 299 599 591 600 602
-DEAL:: v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  106 117 286 297 288 298 119 299 303
-DEAL:: v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  436 447 586 597 588 598 449 599 603
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.500 v0.00 1.00 0.500 v0.00 0.750 0.750 v0.00 1.00 0.750 dofs  285 305 585 605 590 610 307 607 612
-DEAL:: v0.250 0.750 0.500 v0.250 1.00 0.500 v0.250 0.750 0.750 v0.250 1.00 0.750 dofs  286 306 586 606 591 611 308 608 613
-DEAL:: v0.00 0.750 0.500 v0.00 0.750 0.750 v0.250 0.750 0.500 v0.250 0.750 0.750 dofs  285 585 286 586 289 589 590 591 594
-DEAL:: v0.00 1.00 0.500 v0.00 1.00 0.750 v0.250 1.00 0.500 v0.250 1.00 0.750 dofs  305 605 306 606 309 609 610 611 614
-DEAL:: v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  285 286 305 306 307 308 289 309 315
-DEAL:: v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  585 586 605 606 607 608 589 609 615
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.500 v0.250 1.00 0.500 v0.250 0.750 0.750 v0.250 1.00 0.750 dofs  286 306 586 606 591 611 308 608 613
-DEAL:: v0.500 0.750 0.500 v0.500 1.00 0.500 v0.500 0.750 0.750 v0.500 1.00 0.750 dofs  297 317 597 617 600 620 318 618 621
-DEAL:: v0.250 0.750 0.500 v0.250 0.750 0.750 v0.500 0.750 0.500 v0.500 0.750 0.750 dofs  286 586 297 597 299 599 591 600 602
-DEAL:: v0.250 1.00 0.500 v0.250 1.00 0.750 v0.500 1.00 0.500 v0.500 1.00 0.750 dofs  306 606 317 617 319 619 611 620 622
-DEAL:: v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  286 297 306 317 308 318 299 319 323
-DEAL:: v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  586 597 606 617 608 618 599 619 623
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.750 v0.00 0.750 0.750 v0.00 0.500 1.00 v0.00 0.750 1.00 dofs  435 585 485 625 490 630 587 627 632
-DEAL:: v0.250 0.500 0.750 v0.250 0.750 0.750 v0.250 0.500 1.00 v0.250 0.750 1.00 dofs  436 586 486 626 491 631 588 628 633
-DEAL:: v0.00 0.500 0.750 v0.00 0.500 1.00 v0.250 0.500 0.750 v0.250 0.500 1.00 dofs  435 485 436 486 439 489 490 491 494
-DEAL:: v0.00 0.750 0.750 v0.00 0.750 1.00 v0.250 0.750 0.750 v0.250 0.750 1.00 dofs  585 625 586 626 589 629 630 631 634
-DEAL:: v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  435 436 585 586 587 588 439 589 595
-DEAL:: v0.00 0.500 1.00 v0.250 0.500 1.00 v0.00 0.750 1.00 v0.250 0.750 1.00 dofs  485 486 625 626 627 628 489 629 635
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.750 v0.250 0.750 0.750 v0.250 0.500 1.00 v0.250 0.750 1.00 dofs  436 586 486 626 491 631 588 628 633
-DEAL:: v0.500 0.500 0.750 v0.500 0.750 0.750 v0.500 0.500 1.00 v0.500 0.750 1.00 dofs  447 597 497 637 500 640 598 638 641
-DEAL:: v0.250 0.500 0.750 v0.250 0.500 1.00 v0.500 0.500 0.750 v0.500 0.500 1.00 dofs  436 486 447 497 449 499 491 500 502
-DEAL:: v0.250 0.750 0.750 v0.250 0.750 1.00 v0.500 0.750 0.750 v0.500 0.750 1.00 dofs  586 626 597 637 599 639 631 640 642
-DEAL:: v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  436 447 586 597 588 598 449 599 603
-DEAL:: v0.250 0.500 1.00 v0.500 0.500 1.00 v0.250 0.750 1.00 v0.500 0.750 1.00 dofs  486 497 626 637 628 638 499 639 643
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.750 v0.00 1.00 0.750 v0.00 0.750 1.00 v0.00 1.00 1.00 dofs  585 605 625 645 630 650 607 647 652
-DEAL:: v0.250 0.750 0.750 v0.250 1.00 0.750 v0.250 0.750 1.00 v0.250 1.00 1.00 dofs  586 606 626 646 631 651 608 648 653
-DEAL:: v0.00 0.750 0.750 v0.00 0.750 1.00 v0.250 0.750 0.750 v0.250 0.750 1.00 dofs  585 625 586 626 589 629 630 631 634
-DEAL:: v0.00 1.00 0.750 v0.00 1.00 1.00 v0.250 1.00 0.750 v0.250 1.00 1.00 dofs  605 645 606 646 609 649 650 651 654
-DEAL:: v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  585 586 605 606 607 608 589 609 615
-DEAL:: v0.00 0.750 1.00 v0.250 0.750 1.00 v0.00 1.00 1.00 v0.250 1.00 1.00 dofs  625 626 645 646 647 648 629 649 655
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.750 v0.250 1.00 0.750 v0.250 0.750 1.00 v0.250 1.00 1.00 dofs  586 606 626 646 631 651 608 648 653
-DEAL:: v0.500 0.750 0.750 v0.500 1.00 0.750 v0.500 0.750 1.00 v0.500 1.00 1.00 dofs  597 617 637 657 640 660 618 658 661
-DEAL:: v0.250 0.750 0.750 v0.250 0.750 1.00 v0.500 0.750 0.750 v0.500 0.750 1.00 dofs  586 626 597 637 599 639 631 640 642
-DEAL:: v0.250 1.00 0.750 v0.250 1.00 1.00 v0.500 1.00 0.750 v0.500 1.00 1.00 dofs  606 646 617 657 619 659 651 660 662
-DEAL:: v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  586 597 606 617 608 618 599 619 623
-DEAL:: v0.250 0.750 1.00 v0.500 0.750 1.00 v0.250 1.00 1.00 v0.500 1.00 1.00 dofs  626 637 646 657 648 658 639 659 663
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.500 v0.500 0.750 0.500 v0.500 0.500 0.750 v0.500 0.750 0.750 dofs  117 297 447 597 450 600 298 598 601
-DEAL:: v0.750 0.500 0.500 v0.750 0.750 0.500 v0.750 0.500 0.750 v0.750 0.750 0.750 dofs  209 373 529 665 532 668 374 666 669
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 0.750 v0.750 0.500 0.500 v0.750 0.500 0.750 dofs  117 447 209 529 211 531 450 532 534
-DEAL:: v0.500 0.750 0.500 v0.500 0.750 0.750 v0.750 0.750 0.500 v0.750 0.750 0.750 dofs  297 597 373 665 375 667 600 668 670
-DEAL:: v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  117 209 297 373 298 374 211 375 379
-DEAL:: v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  447 529 597 665 598 666 531 667 671
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.500 v0.750 0.750 0.500 v0.750 0.500 0.750 v0.750 0.750 0.750 dofs  209 373 529 665 532 668 374 666 669
-DEAL:: v1.00 0.500 0.500 v1.00 0.750 0.500 v1.00 0.500 0.750 v1.00 0.750 0.750 dofs  217 381 537 673 540 676 382 674 677
-DEAL:: v0.750 0.500 0.500 v0.750 0.500 0.750 v1.00 0.500 0.500 v1.00 0.500 0.750 dofs  209 529 217 537 219 539 532 540 542
-DEAL:: v0.750 0.750 0.500 v0.750 0.750 0.750 v1.00 0.750 0.500 v1.00 0.750 0.750 dofs  373 665 381 673 383 675 668 676 678
-DEAL:: v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  209 217 373 381 374 382 219 383 387
-DEAL:: v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  529 537 665 673 666 674 539 675 679
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.500 v0.500 1.00 0.500 v0.500 0.750 0.750 v0.500 1.00 0.750 dofs  297 317 597 617 600 620 318 618 621
-DEAL:: v0.750 0.750 0.500 v0.750 1.00 0.500 v0.750 0.750 0.750 v0.750 1.00 0.750 dofs  373 389 665 681 668 684 390 682 685
-DEAL:: v0.500 0.750 0.500 v0.500 0.750 0.750 v0.750 0.750 0.500 v0.750 0.750 0.750 dofs  297 597 373 665 375 667 600 668 670
-DEAL:: v0.500 1.00 0.500 v0.500 1.00 0.750 v0.750 1.00 0.500 v0.750 1.00 0.750 dofs  317 617 389 681 391 683 620 684 686
-DEAL:: v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  297 373 317 389 318 390 375 391 395
-DEAL:: v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  597 665 617 681 618 682 667 683 687
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.500 v0.750 1.00 0.500 v0.750 0.750 0.750 v0.750 1.00 0.750 dofs  373 389 665 681 668 684 390 682 685
-DEAL:: v1.00 0.750 0.500 v1.00 1.00 0.500 v1.00 0.750 0.750 v1.00 1.00 0.750 dofs  381 397 673 689 676 692 398 690 693
-DEAL:: v0.750 0.750 0.500 v0.750 0.750 0.750 v1.00 0.750 0.500 v1.00 0.750 0.750 dofs  373 665 381 673 383 675 668 676 678
-DEAL:: v0.750 1.00 0.500 v0.750 1.00 0.750 v1.00 1.00 0.500 v1.00 1.00 0.750 dofs  389 681 397 689 399 691 684 692 694
-DEAL:: v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  373 381 389 397 390 398 383 399 403
-DEAL:: v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  665 673 681 689 682 690 675 691 695
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.750 v0.500 0.750 0.750 v0.500 0.500 1.00 v0.500 0.750 1.00 dofs  447 597 497 637 500 640 598 638 641
-DEAL:: v0.750 0.500 0.750 v0.750 0.750 0.750 v0.750 0.500 1.00 v0.750 0.750 1.00 dofs  529 665 569 697 572 700 666 698 701
-DEAL:: v0.500 0.500 0.750 v0.500 0.500 1.00 v0.750 0.500 0.750 v0.750 0.500 1.00 dofs  447 497 529 569 531 571 500 572 574
-DEAL:: v0.500 0.750 0.750 v0.500 0.750 1.00 v0.750 0.750 0.750 v0.750 0.750 1.00 dofs  597 637 665 697 667 699 640 700 702
-DEAL:: v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  447 529 597 665 598 666 531 667 671
-DEAL:: v0.500 0.500 1.00 v0.750 0.500 1.00 v0.500 0.750 1.00 v0.750 0.750 1.00 dofs  497 569 637 697 638 698 571 699 703
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.750 v0.750 0.750 0.750 v0.750 0.500 1.00 v0.750 0.750 1.00 dofs  529 665 569 697 572 700 666 698 701
-DEAL:: v1.00 0.500 0.750 v1.00 0.750 0.750 v1.00 0.500 1.00 v1.00 0.750 1.00 dofs  537 673 577 705 580 708 674 706 709
-DEAL:: v0.750 0.500 0.750 v0.750 0.500 1.00 v1.00 0.500 0.750 v1.00 0.500 1.00 dofs  529 569 537 577 539 579 572 580 582
-DEAL:: v0.750 0.750 0.750 v0.750 0.750 1.00 v1.00 0.750 0.750 v1.00 0.750 1.00 dofs  665 697 673 705 675 707 700 708 710
-DEAL:: v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  529 537 665 673 666 674 539 675 679
-DEAL:: v0.750 0.500 1.00 v1.00 0.500 1.00 v0.750 0.750 1.00 v1.00 0.750 1.00 dofs  569 577 697 705 698 706 579 707 711
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.750 v0.500 1.00 0.750 v0.500 0.750 1.00 v0.500 1.00 1.00 dofs  597 617 637 657 640 660 618 658 661
-DEAL:: v0.750 0.750 0.750 v0.750 1.00 0.750 v0.750 0.750 1.00 v0.750 1.00 1.00 dofs  665 681 697 713 700 716 682 714 717
-DEAL:: v0.500 0.750 0.750 v0.500 0.750 1.00 v0.750 0.750 0.750 v0.750 0.750 1.00 dofs  597 637 665 697 667 699 640 700 702
-DEAL:: v0.500 1.00 0.750 v0.500 1.00 1.00 v0.750 1.00 0.750 v0.750 1.00 1.00 dofs  617 657 681 713 683 715 660 716 718
-DEAL:: v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  597 665 617 681 618 682 667 683 687
-DEAL:: v0.500 0.750 1.00 v0.750 0.750 1.00 v0.500 1.00 1.00 v0.750 1.00 1.00 dofs  637 697 657 713 658 714 699 715 719
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.750 v0.750 1.00 0.750 v0.750 0.750 1.00 v0.750 1.00 1.00 dofs  665 681 697 713 700 716 682 714 717
-DEAL:: v1.00 0.750 0.750 v1.00 1.00 0.750 v1.00 0.750 1.00 v1.00 1.00 1.00 dofs  673 689 705 721 708 724 690 722 725
-DEAL:: v0.750 0.750 0.750 v0.750 0.750 1.00 v1.00 0.750 0.750 v1.00 0.750 1.00 dofs  665 697 673 705 675 707 700 708 710
-DEAL:: v0.750 1.00 0.750 v0.750 1.00 1.00 v1.00 1.00 0.750 v1.00 1.00 1.00 dofs  681 713 689 721 691 723 716 724 726
-DEAL:: v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  665 673 681 689 682 690 675 691 695
-DEAL:: v0.750 0.750 1.00 v1.00 0.750 1.00 v0.750 1.00 1.00 v1.00 1.00 1.00 dofs  697 705 713 721 714 722 707 723 727
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.500000 1.00000 v0.500000 1.00000 1.00000 dofs  7 48 78 106 86 111 53 108 113
+DEAL:: v1.00000 0.500000 0.500000 v1.00000 1.00000 0.500000 v1.00000 0.500000 1.00000 v1.00000 1.00000 1.00000 dofs  30 64 94 117 99 120 67 118 121
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 0.500000 v1.00000 0.500000 1.00000 dofs  7 78 30 94 36 97 86 99 102
+DEAL:: v0.500000 1.00000 0.500000 v0.500000 1.00000 1.00000 v1.00000 1.00000 0.500000 v1.00000 1.00000 1.00000 dofs  48 106 64 117 68 119 111 120 122
+DEAL:: v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  7 30 48 64 53 67 36 68 73
+DEAL:: v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.500000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  78 94 106 117 108 118 97 119 123
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.00000 0.00000 0.250000 v0.00000 0.250000 0.250000 dofs  0 2 4 6 16 18 8 12 20
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 dofs  1 3 5 7 17 19 9 13 21
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.00000 v0.250000 0.00000 0.250000 dofs  0 4 1 5 10 14 16 17 22
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 dofs  2 6 3 7 11 15 18 19 23
+DEAL:: v0.00000 0.00000 0.00000 v0.250000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 dofs  0 1 2 3 8 9 10 11 24
+DEAL:: v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  4 5 6 7 12 13 14 15 25
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 dofs  1 3 5 7 17 19 9 13 21
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 dofs  27 28 29 30 37 38 31 34 39
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.00000 v0.500000 0.00000 0.250000 dofs  1 5 27 29 32 35 17 37 40
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 dofs  3 7 28 30 33 36 19 38 41
+DEAL:: v0.250000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 dofs  1 27 3 28 9 31 32 33 42
+DEAL:: v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  5 29 7 30 13 34 35 36 43
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.00000 0.250000 0.250000 v0.00000 0.500000 0.250000 dofs  2 45 6 47 18 55 49 52 57
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 dofs  3 46 7 48 19 56 50 53 58
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 dofs  2 6 3 7 11 15 18 19 23
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 dofs  45 47 46 48 51 54 55 56 59
+DEAL:: v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 dofs  2 3 45 46 49 50 11 51 60
+DEAL:: v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  6 7 47 48 52 53 15 54 61
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 dofs  3 46 7 48 19 56 50 53 58
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 dofs  28 63 30 64 38 69 65 67 70
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 dofs  3 7 28 30 33 36 19 38 41
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 dofs  46 48 63 64 66 68 56 69 71
+DEAL:: v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 dofs  3 28 46 63 50 65 33 66 72
+DEAL:: v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  7 30 48 64 53 67 36 68 73
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.00000 0.00000 0.500000 v0.00000 0.250000 0.500000 dofs  4 6 75 77 83 85 12 79 87
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 dofs  5 7 76 78 84 86 13 80 88
+DEAL:: v0.00000 0.00000 0.250000 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.250000 v0.250000 0.00000 0.500000 dofs  4 75 5 76 14 81 83 84 89
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 dofs  6 77 7 78 15 82 85 86 90
+DEAL:: v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  4 5 6 7 12 13 14 15 25
+DEAL:: v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  75 76 77 78 79 80 81 82 91
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 dofs  5 7 76 78 84 86 13 80 88
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 dofs  29 30 93 94 98 99 34 95 100
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.250000 v0.500000 0.00000 0.500000 dofs  5 76 29 93 35 96 84 98 101
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 dofs  7 78 30 94 36 97 86 99 102
+DEAL:: v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  5 29 7 30 13 34 35 36 43
+DEAL:: v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  76 93 78 94 80 95 96 97 103
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.00000 0.250000 0.500000 v0.00000 0.500000 0.500000 dofs  6 47 77 105 85 110 52 107 112
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 dofs  7 48 78 106 86 111 53 108 113
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 dofs  6 77 7 78 15 82 85 86 90
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 dofs  47 105 48 106 54 109 110 111 114
+DEAL:: v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  6 7 47 48 52 53 15 54 61
+DEAL:: v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  77 78 105 106 107 108 82 109 115
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 dofs  7 48 78 106 86 111 53 108 113
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 dofs  30 64 94 117 99 120 67 118 121
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 dofs  7 78 30 94 36 97 86 99 102
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 dofs  48 106 64 117 68 119 111 120 122
+DEAL:: v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  7 30 48 64 53 67 36 68 73
+DEAL:: v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  78 94 106 117 108 118 97 119 123
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 dofs  27 28 29 30 37 38 31 34 39
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.250000 0.00000 v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 dofs  125 126 127 128 135 136 129 132 137
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.00000 v0.750000 0.00000 0.250000 dofs  27 29 125 127 130 133 37 135 138
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 dofs  28 30 126 128 131 134 38 136 139
+DEAL:: v0.500000 0.00000 0.00000 v0.750000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 dofs  27 125 28 126 31 129 130 131 140
+DEAL:: v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  29 127 30 128 34 132 133 134 141
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.250000 0.00000 v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 dofs  125 126 127 128 135 136 129 132 137
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 0.250000 0.00000 v1.00000 0.00000 0.250000 v1.00000 0.250000 0.250000 dofs  143 144 145 146 153 154 147 150 155
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.00000 v1.00000 0.00000 0.250000 dofs  125 127 143 145 148 151 135 153 156
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.00000 v1.00000 0.250000 0.250000 dofs  126 128 144 146 149 152 136 154 157
+DEAL:: v0.750000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 dofs  125 143 126 144 129 147 148 149 158
+DEAL:: v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  127 145 128 146 132 150 151 152 159
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 dofs  28 63 30 64 38 69 65 67 70
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.500000 0.00000 v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 dofs  126 161 128 162 136 167 163 165 168
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 dofs  28 30 126 128 131 134 38 136 139
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 dofs  63 64 161 162 164 166 69 167 169
+DEAL:: v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 dofs  28 126 63 161 65 163 131 164 170
+DEAL:: v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  30 128 64 162 67 165 134 166 171
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.500000 0.00000 v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 dofs  126 161 128 162 136 167 163 165 168
+DEAL:: v1.00000 0.250000 0.00000 v1.00000 0.500000 0.00000 v1.00000 0.250000 0.250000 v1.00000 0.500000 0.250000 dofs  144 173 146 174 154 179 175 177 180
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.00000 v1.00000 0.250000 0.250000 dofs  126 128 144 146 149 152 136 154 157
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.250000 dofs  161 162 173 174 176 178 167 179 181
+DEAL:: v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 dofs  126 144 161 173 163 175 149 176 182
+DEAL:: v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  128 146 162 174 165 177 152 178 183
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 dofs  29 30 93 94 98 99 34 95 100
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 dofs  127 128 185 186 190 191 132 187 192
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.250000 v0.750000 0.00000 0.500000 dofs  29 93 127 185 133 188 98 190 193
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 dofs  30 94 128 186 134 189 99 191 194
+DEAL:: v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  29 127 30 128 34 132 133 134 141
+DEAL:: v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  93 185 94 186 95 187 188 189 195
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 dofs  127 128 185 186 190 191 132 187 192
+DEAL:: v1.00000 0.00000 0.250000 v1.00000 0.250000 0.250000 v1.00000 0.00000 0.500000 v1.00000 0.250000 0.500000 dofs  145 146 197 198 202 203 150 199 204
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.250000 v1.00000 0.00000 0.500000 dofs  127 185 145 197 151 200 190 202 205
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.250000 v1.00000 0.250000 0.500000 dofs  128 186 146 198 152 201 191 203 206
+DEAL:: v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  127 145 128 146 132 150 151 152 159
+DEAL:: v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  185 197 186 198 187 199 200 201 207
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 dofs  30 64 94 117 99 120 67 118 121
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 dofs  128 162 186 209 191 212 165 210 213
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 dofs  30 94 128 186 134 189 99 191 194
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 dofs  64 117 162 209 166 211 120 212 214
+DEAL:: v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  30 128 64 162 67 165 134 166 171
+DEAL:: v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  94 186 117 209 118 210 189 211 215
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 dofs  128 162 186 209 191 212 165 210 213
+DEAL:: v1.00000 0.250000 0.250000 v1.00000 0.500000 0.250000 v1.00000 0.250000 0.500000 v1.00000 0.500000 0.500000 dofs  146 174 198 217 203 220 177 218 221
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.250000 v1.00000 0.250000 0.500000 dofs  128 186 146 198 152 201 191 203 206
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.250000 v1.00000 0.500000 0.500000 dofs  162 209 174 217 178 219 212 220 222
+DEAL:: v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  128 146 162 174 165 177 152 178 183
+DEAL:: v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  186 198 209 217 210 218 201 219 223
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.00000 0.500000 0.250000 v0.00000 0.750000 0.250000 dofs  45 225 47 227 55 235 229 232 237
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 dofs  46 226 48 228 56 236 230 233 238
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 dofs  45 47 46 48 51 54 55 56 59
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 dofs  225 227 226 228 231 234 235 236 239
+DEAL:: v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 dofs  45 46 225 226 229 230 51 231 240
+DEAL:: v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  47 48 227 228 232 233 54 234 241
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 dofs  46 226 48 228 56 236 230 233 238
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 dofs  63 243 64 244 69 249 245 247 250
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 dofs  46 48 63 64 66 68 56 69 71
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 dofs  226 228 243 244 246 248 236 249 251
+DEAL:: v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 dofs  46 63 226 243 230 245 66 246 252
+DEAL:: v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  48 64 228 244 233 247 68 248 253
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.750000 0.250000 v0.00000 1.00000 0.250000 dofs  225 255 227 257 235 265 259 262 267
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 dofs  226 256 228 258 236 266 260 263 268
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 dofs  225 227 226 228 231 234 235 236 239
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.00000 v0.250000 1.00000 0.250000 dofs  255 257 256 258 261 264 265 266 269
+DEAL:: v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.250000 1.00000 0.00000 dofs  225 226 255 256 259 260 231 261 270
+DEAL:: v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  227 228 257 258 262 263 234 264 271
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 dofs  226 256 228 258 236 266 260 263 268
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 dofs  243 273 244 274 249 279 275 277 280
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 dofs  226 228 243 244 246 248 236 249 251
+DEAL:: v0.250000 1.00000 0.00000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.00000 v0.500000 1.00000 0.250000 dofs  256 258 273 274 276 278 266 279 281
+DEAL:: v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.500000 1.00000 0.00000 dofs  226 243 256 273 260 275 246 276 282
+DEAL:: v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  228 244 258 274 263 277 248 278 283
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.00000 0.500000 0.500000 v0.00000 0.750000 0.500000 dofs  47 227 105 285 110 290 232 287 292
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 dofs  48 228 106 286 111 291 233 288 293
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 dofs  47 105 48 106 54 109 110 111 114
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 dofs  227 285 228 286 234 289 290 291 294
+DEAL:: v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  47 48 227 228 232 233 54 234 241
+DEAL:: v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  105 106 285 286 287 288 109 289 295
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 dofs  48 228 106 286 111 291 233 288 293
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 dofs  64 244 117 297 120 300 247 298 301
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 dofs  48 106 64 117 68 119 111 120 122
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 dofs  228 286 244 297 248 299 291 300 302
+DEAL:: v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  48 64 228 244 233 247 68 248 253
+DEAL:: v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  106 117 286 297 288 298 119 299 303
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.00000 0.750000 0.500000 v0.00000 1.00000 0.500000 dofs  227 257 285 305 290 310 262 307 312
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 dofs  228 258 286 306 291 311 263 308 313
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 dofs  227 285 228 286 234 289 290 291 294
+DEAL:: v0.00000 1.00000 0.250000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.250000 v0.250000 1.00000 0.500000 dofs  257 305 258 306 264 309 310 311 314
+DEAL:: v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  227 228 257 258 262 263 234 264 271
+DEAL:: v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  285 286 305 306 307 308 289 309 315
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 dofs  228 258 286 306 291 311 263 308 313
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 dofs  244 274 297 317 300 320 277 318 321
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 dofs  228 286 244 297 248 299 291 300 302
+DEAL:: v0.250000 1.00000 0.250000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.250000 v0.500000 1.00000 0.500000 dofs  258 306 274 317 278 319 311 320 322
+DEAL:: v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  228 244 258 274 263 277 248 278 283
+DEAL:: v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  286 297 306 317 308 318 299 319 323
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 dofs  63 243 64 244 69 249 245 247 250
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.750000 0.00000 v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 dofs  161 325 162 326 167 331 327 329 332
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 dofs  63 64 161 162 164 166 69 167 169
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 dofs  243 244 325 326 328 330 249 331 333
+DEAL:: v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 dofs  63 161 243 325 245 327 164 328 334
+DEAL:: v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  64 162 244 326 247 329 166 330 335
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.750000 0.00000 v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 dofs  161 325 162 326 167 331 327 329 332
+DEAL:: v1.00000 0.500000 0.00000 v1.00000 0.750000 0.00000 v1.00000 0.500000 0.250000 v1.00000 0.750000 0.250000 dofs  173 337 174 338 179 343 339 341 344
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.250000 dofs  161 162 173 174 176 178 167 179 181
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.00000 v1.00000 0.750000 0.250000 dofs  325 326 337 338 340 342 331 343 345
+DEAL:: v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 dofs  161 173 325 337 327 339 176 340 346
+DEAL:: v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  162 174 326 338 329 341 178 342 347
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 dofs  243 273 244 274 249 279 275 277 280
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 1.00000 0.00000 v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 dofs  325 349 326 350 331 355 351 353 356
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 dofs  243 244 325 326 328 330 249 331 333
+DEAL:: v0.500000 1.00000 0.00000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.00000 v0.750000 1.00000 0.250000 dofs  273 274 349 350 352 354 279 355 357
+DEAL:: v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.750000 1.00000 0.00000 dofs  243 325 273 349 275 351 328 352 358
+DEAL:: v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  244 326 274 350 277 353 330 354 359
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 1.00000 0.00000 v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 dofs  325 349 326 350 331 355 351 353 356
+DEAL:: v1.00000 0.750000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.750000 0.250000 v1.00000 1.00000 0.250000 dofs  337 361 338 362 343 367 363 365 368
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.00000 v1.00000 0.750000 0.250000 dofs  325 326 337 338 340 342 331 343 345
+DEAL:: v0.750000 1.00000 0.00000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.00000 v1.00000 1.00000 0.250000 dofs  349 350 361 362 364 366 355 367 369
+DEAL:: v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  325 337 349 361 351 363 340 364 370
+DEAL:: v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  326 338 350 362 353 365 342 366 371
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 dofs  64 244 117 297 120 300 247 298 301
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 dofs  162 326 209 373 212 376 329 374 377
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 dofs  64 117 162 209 166 211 120 212 214
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 dofs  244 297 326 373 330 375 300 376 378
+DEAL:: v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  64 162 244 326 247 329 166 330 335
+DEAL:: v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  117 209 297 373 298 374 211 375 379
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 dofs  162 326 209 373 212 376 329 374 377
+DEAL:: v1.00000 0.500000 0.250000 v1.00000 0.750000 0.250000 v1.00000 0.500000 0.500000 v1.00000 0.750000 0.500000 dofs  174 338 217 381 220 384 341 382 385
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.250000 v1.00000 0.500000 0.500000 dofs  162 209 174 217 178 219 212 220 222
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.250000 v1.00000 0.750000 0.500000 dofs  326 373 338 381 342 383 376 384 386
+DEAL:: v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  162 174 326 338 329 341 178 342 347
+DEAL:: v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  209 217 373 381 374 382 219 383 387
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 dofs  244 274 297 317 300 320 277 318 321
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 dofs  326 350 373 389 376 392 353 390 393
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 dofs  244 297 326 373 330 375 300 376 378
+DEAL:: v0.500000 1.00000 0.250000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.250000 v0.750000 1.00000 0.500000 dofs  274 317 350 389 354 391 320 392 394
+DEAL:: v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  244 326 274 350 277 353 330 354 359
+DEAL:: v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  297 373 317 389 318 390 375 391 395
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 dofs  326 350 373 389 376 392 353 390 393
+DEAL:: v1.00000 0.750000 0.250000 v1.00000 1.00000 0.250000 v1.00000 0.750000 0.500000 v1.00000 1.00000 0.500000 dofs  338 362 381 397 384 400 365 398 401
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.250000 v1.00000 0.750000 0.500000 dofs  326 373 338 381 342 383 376 384 386
+DEAL:: v0.750000 1.00000 0.250000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.250000 v1.00000 1.00000 0.500000 dofs  350 389 362 397 366 399 392 400 402
+DEAL:: v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  326 338 350 362 353 365 342 366 371
+DEAL:: v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  373 381 389 397 390 398 383 399 403
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.00000 0.00000 0.750000 v0.00000 0.250000 0.750000 dofs  75 77 405 407 413 415 79 409 417
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 dofs  76 78 406 408 414 416 80 410 418
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.500000 v0.250000 0.00000 0.750000 dofs  75 405 76 406 81 411 413 414 419
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 dofs  77 407 78 408 82 412 415 416 420
+DEAL:: v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  75 76 77 78 79 80 81 82 91
+DEAL:: v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  405 406 407 408 409 410 411 412 421
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 dofs  76 78 406 408 414 416 80 410 418
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 dofs  93 94 423 424 428 429 95 425 430
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.500000 v0.500000 0.00000 0.750000 dofs  76 406 93 423 96 426 414 428 431
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 dofs  78 408 94 424 97 427 416 429 432
+DEAL:: v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  76 93 78 94 80 95 96 97 103
+DEAL:: v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  406 423 408 424 410 425 426 427 433
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.00000 0.250000 0.750000 v0.00000 0.500000 0.750000 dofs  77 105 407 435 415 440 107 437 442
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 dofs  78 106 408 436 416 441 108 438 443
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 dofs  77 407 78 408 82 412 415 416 420
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 dofs  105 435 106 436 109 439 440 441 444
+DEAL:: v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  77 78 105 106 107 108 82 109 115
+DEAL:: v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  407 408 435 436 437 438 412 439 445
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 dofs  78 106 408 436 416 441 108 438 443
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 dofs  94 117 424 447 429 450 118 448 451
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 dofs  78 408 94 424 97 427 416 429 432
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 dofs  106 436 117 447 119 449 441 450 452
+DEAL:: v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  78 94 106 117 108 118 97 119 123
+DEAL:: v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  408 424 436 447 438 448 427 449 453
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.00000 0.00000 1.00000 v0.00000 0.250000 1.00000 dofs  405 407 455 457 463 465 409 459 467
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.250000 0.250000 1.00000 dofs  406 408 456 458 464 466 410 460 468
+DEAL:: v0.00000 0.00000 0.750000 v0.00000 0.00000 1.00000 v0.250000 0.00000 0.750000 v0.250000 0.00000 1.00000 dofs  405 455 406 456 411 461 463 464 469
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 dofs  407 457 408 458 412 462 465 466 470
+DEAL:: v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  405 406 407 408 409 410 411 412 421
+DEAL:: v0.00000 0.00000 1.00000 v0.250000 0.00000 1.00000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 dofs  455 456 457 458 459 460 461 462 471
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.250000 0.250000 1.00000 dofs  406 408 456 458 464 466 410 460 468
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.500000 0.250000 1.00000 dofs  423 424 473 474 478 479 425 475 480
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.00000 1.00000 v0.500000 0.00000 0.750000 v0.500000 0.00000 1.00000 dofs  406 456 423 473 426 476 464 478 481
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 dofs  408 458 424 474 427 477 466 479 482
+DEAL:: v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  406 423 408 424 410 425 426 427 433
+DEAL:: v0.250000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 dofs  456 473 458 474 460 475 476 477 483
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.00000 0.250000 1.00000 v0.00000 0.500000 1.00000 dofs  407 435 457 485 465 490 437 487 492
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.250000 0.500000 1.00000 dofs  408 436 458 486 466 491 438 488 493
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 dofs  407 457 408 458 412 462 465 466 470
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 dofs  435 485 436 486 439 489 490 491 494
+DEAL:: v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  407 408 435 436 437 438 412 439 445
+DEAL:: v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 dofs  457 458 485 486 487 488 462 489 495
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.250000 0.500000 1.00000 dofs  408 436 458 486 466 491 438 488 493
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.500000 0.500000 1.00000 dofs  424 447 474 497 479 500 448 498 501
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 dofs  408 458 424 474 427 477 466 479 482
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 dofs  436 486 447 497 449 499 491 500 502
+DEAL:: v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  408 424 436 447 438 448 427 449 453
+DEAL:: v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  458 474 486 497 488 498 477 499 503
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 dofs  93 94 423 424 428 429 95 425 430
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 dofs  185 186 505 506 510 511 187 507 512
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.500000 v0.750000 0.00000 0.750000 dofs  93 423 185 505 188 508 428 510 513
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 dofs  94 424 186 506 189 509 429 511 514
+DEAL:: v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  93 185 94 186 95 187 188 189 195
+DEAL:: v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  423 505 424 506 425 507 508 509 515
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 dofs  185 186 505 506 510 511 187 507 512
+DEAL:: v1.00000 0.00000 0.500000 v1.00000 0.250000 0.500000 v1.00000 0.00000 0.750000 v1.00000 0.250000 0.750000 dofs  197 198 517 518 522 523 199 519 524
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.500000 v1.00000 0.00000 0.750000 dofs  185 505 197 517 200 520 510 522 525
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.500000 v1.00000 0.250000 0.750000 dofs  186 506 198 518 201 521 511 523 526
+DEAL:: v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  185 197 186 198 187 199 200 201 207
+DEAL:: v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  505 517 506 518 507 519 520 521 527
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 dofs  94 117 424 447 429 450 118 448 451
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 dofs  186 209 506 529 511 532 210 530 533
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 dofs  94 424 186 506 189 509 429 511 514
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 dofs  117 447 209 529 211 531 450 532 534
+DEAL:: v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  94 186 117 209 118 210 189 211 215
+DEAL:: v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  424 506 447 529 448 530 509 531 535
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 dofs  186 209 506 529 511 532 210 530 533
+DEAL:: v1.00000 0.250000 0.500000 v1.00000 0.500000 0.500000 v1.00000 0.250000 0.750000 v1.00000 0.500000 0.750000 dofs  198 217 518 537 523 540 218 538 541
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.500000 v1.00000 0.250000 0.750000 dofs  186 506 198 518 201 521 511 523 526
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.500000 v1.00000 0.500000 0.750000 dofs  209 529 217 537 219 539 532 540 542
+DEAL:: v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  186 198 209 217 210 218 201 219 223
+DEAL:: v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  506 518 529 537 530 538 521 539 543
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.500000 0.250000 1.00000 dofs  423 424 473 474 478 479 425 475 480
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 v0.750000 0.00000 1.00000 v0.750000 0.250000 1.00000 dofs  505 506 545 546 550 551 507 547 552
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.00000 1.00000 v0.750000 0.00000 0.750000 v0.750000 0.00000 1.00000 dofs  423 473 505 545 508 548 478 550 553
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 dofs  424 474 506 546 509 549 479 551 554
+DEAL:: v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  423 505 424 506 425 507 508 509 515
+DEAL:: v0.500000 0.00000 1.00000 v0.750000 0.00000 1.00000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 dofs  473 545 474 546 475 547 548 549 555
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 v0.750000 0.00000 1.00000 v0.750000 0.250000 1.00000 dofs  505 506 545 546 550 551 507 547 552
+DEAL:: v1.00000 0.00000 0.750000 v1.00000 0.250000 0.750000 v1.00000 0.00000 1.00000 v1.00000 0.250000 1.00000 dofs  517 518 557 558 562 563 519 559 564
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.00000 1.00000 v1.00000 0.00000 0.750000 v1.00000 0.00000 1.00000 dofs  505 545 517 557 520 560 550 562 565
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 0.750000 v1.00000 0.250000 1.00000 dofs  506 546 518 558 521 561 551 563 566
+DEAL:: v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  505 517 506 518 507 519 520 521 527
+DEAL:: v0.750000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 dofs  545 557 546 558 547 559 560 561 567
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.500000 0.500000 1.00000 dofs  424 447 474 497 479 500 448 498 501
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 v0.750000 0.250000 1.00000 v0.750000 0.500000 1.00000 dofs  506 529 546 569 551 572 530 570 573
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 dofs  424 474 506 546 509 549 479 551 554
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 dofs  447 497 529 569 531 571 500 572 574
+DEAL:: v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  424 506 447 529 448 530 509 531 535
+DEAL:: v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 dofs  474 546 497 569 498 570 549 571 575
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 v0.750000 0.250000 1.00000 v0.750000 0.500000 1.00000 dofs  506 529 546 569 551 572 530 570 573
+DEAL:: v1.00000 0.250000 0.750000 v1.00000 0.500000 0.750000 v1.00000 0.250000 1.00000 v1.00000 0.500000 1.00000 dofs  518 537 558 577 563 580 538 578 581
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 0.750000 v1.00000 0.250000 1.00000 dofs  506 546 518 558 521 561 551 563 566
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 0.750000 v1.00000 0.500000 1.00000 dofs  529 569 537 577 539 579 572 580 582
+DEAL:: v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  506 518 529 537 530 538 521 539 543
+DEAL:: v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  546 558 569 577 570 578 561 579 583
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.00000 0.500000 0.750000 v0.00000 0.750000 0.750000 dofs  105 285 435 585 440 590 287 587 592
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 dofs  106 286 436 586 441 591 288 588 593
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 dofs  105 435 106 436 109 439 440 441 444
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 dofs  285 585 286 586 289 589 590 591 594
+DEAL:: v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  105 106 285 286 287 288 109 289 295
+DEAL:: v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  435 436 585 586 587 588 439 589 595
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 dofs  106 286 436 586 441 591 288 588 593
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 dofs  117 297 447 597 450 600 298 598 601
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 dofs  106 436 117 447 119 449 441 450 452
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 dofs  286 586 297 597 299 599 591 600 602
+DEAL:: v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  106 117 286 297 288 298 119 299 303
+DEAL:: v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  436 447 586 597 588 598 449 599 603
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.00000 0.750000 0.750000 v0.00000 1.00000 0.750000 dofs  285 305 585 605 590 610 307 607 612
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 dofs  286 306 586 606 591 611 308 608 613
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 dofs  285 585 286 586 289 589 590 591 594
+DEAL:: v0.00000 1.00000 0.500000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.500000 v0.250000 1.00000 0.750000 dofs  305 605 306 606 309 609 610 611 614
+DEAL:: v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  285 286 305 306 307 308 289 309 315
+DEAL:: v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  585 586 605 606 607 608 589 609 615
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 dofs  286 306 586 606 591 611 308 608 613
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 dofs  297 317 597 617 600 620 318 618 621
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 dofs  286 586 297 597 299 599 591 600 602
+DEAL:: v0.250000 1.00000 0.500000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.500000 v0.500000 1.00000 0.750000 dofs  306 606 317 617 319 619 611 620 622
+DEAL:: v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  286 297 306 317 308 318 299 319 323
+DEAL:: v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  586 597 606 617 608 618 599 619 623
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.00000 0.500000 1.00000 v0.00000 0.750000 1.00000 dofs  435 585 485 625 490 630 587 627 632
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.250000 0.750000 1.00000 dofs  436 586 486 626 491 631 588 628 633
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 dofs  435 485 436 486 439 489 490 491 494
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 dofs  585 625 586 626 589 629 630 631 634
+DEAL:: v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  435 436 585 586 587 588 439 589 595
+DEAL:: v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 dofs  485 486 625 626 627 628 489 629 635
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.250000 0.750000 1.00000 dofs  436 586 486 626 491 631 588 628 633
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.500000 0.750000 1.00000 dofs  447 597 497 637 500 640 598 638 641
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 dofs  436 486 447 497 449 499 491 500 502
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 dofs  586 626 597 637 599 639 631 640 642
+DEAL:: v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  436 447 586 597 588 598 449 599 603
+DEAL:: v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 dofs  486 497 626 637 628 638 499 639 643
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.00000 0.750000 1.00000 v0.00000 1.00000 1.00000 dofs  585 605 625 645 630 650 607 647 652
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.250000 1.00000 1.00000 dofs  586 606 626 646 631 651 608 648 653
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 dofs  585 625 586 626 589 629 630 631 634
+DEAL:: v0.00000 1.00000 0.750000 v0.00000 1.00000 1.00000 v0.250000 1.00000 0.750000 v0.250000 1.00000 1.00000 dofs  605 645 606 646 609 649 650 651 654
+DEAL:: v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  585 586 605 606 607 608 589 609 615
+DEAL:: v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 v0.00000 1.00000 1.00000 v0.250000 1.00000 1.00000 dofs  625 626 645 646 647 648 629 649 655
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.250000 1.00000 1.00000 dofs  586 606 626 646 631 651 608 648 653
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.500000 1.00000 1.00000 dofs  597 617 637 657 640 660 618 658 661
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 dofs  586 626 597 637 599 639 631 640 642
+DEAL:: v0.250000 1.00000 0.750000 v0.250000 1.00000 1.00000 v0.500000 1.00000 0.750000 v0.500000 1.00000 1.00000 dofs  606 646 617 657 619 659 651 660 662
+DEAL:: v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  586 597 606 617 608 618 599 619 623
+DEAL:: v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 v0.250000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  626 637 646 657 648 658 639 659 663
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 dofs  117 297 447 597 450 600 298 598 601
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 dofs  209 373 529 665 532 668 374 666 669
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 dofs  117 447 209 529 211 531 450 532 534
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 dofs  297 597 373 665 375 667 600 668 670
+DEAL:: v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  117 209 297 373 298 374 211 375 379
+DEAL:: v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  447 529 597 665 598 666 531 667 671
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 dofs  209 373 529 665 532 668 374 666 669
+DEAL:: v1.00000 0.500000 0.500000 v1.00000 0.750000 0.500000 v1.00000 0.500000 0.750000 v1.00000 0.750000 0.750000 dofs  217 381 537 673 540 676 382 674 677
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.500000 v1.00000 0.500000 0.750000 dofs  209 529 217 537 219 539 532 540 542
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.500000 v1.00000 0.750000 0.750000 dofs  373 665 381 673 383 675 668 676 678
+DEAL:: v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  209 217 373 381 374 382 219 383 387
+DEAL:: v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  529 537 665 673 666 674 539 675 679
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 dofs  297 317 597 617 600 620 318 618 621
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 dofs  373 389 665 681 668 684 390 682 685
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 dofs  297 597 373 665 375 667 600 668 670
+DEAL:: v0.500000 1.00000 0.500000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.500000 v0.750000 1.00000 0.750000 dofs  317 617 389 681 391 683 620 684 686
+DEAL:: v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  297 373 317 389 318 390 375 391 395
+DEAL:: v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  597 665 617 681 618 682 667 683 687
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 dofs  373 389 665 681 668 684 390 682 685
+DEAL:: v1.00000 0.750000 0.500000 v1.00000 1.00000 0.500000 v1.00000 0.750000 0.750000 v1.00000 1.00000 0.750000 dofs  381 397 673 689 676 692 398 690 693
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.500000 v1.00000 0.750000 0.750000 dofs  373 665 381 673 383 675 668 676 678
+DEAL:: v0.750000 1.00000 0.500000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.500000 v1.00000 1.00000 0.750000 dofs  389 681 397 689 399 691 684 692 694
+DEAL:: v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  373 381 389 397 390 398 383 399 403
+DEAL:: v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  665 673 681 689 682 690 675 691 695
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.500000 0.750000 1.00000 dofs  447 597 497 637 500 640 598 638 641
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 v0.750000 0.500000 1.00000 v0.750000 0.750000 1.00000 dofs  529 665 569 697 572 700 666 698 701
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 dofs  447 497 529 569 531 571 500 572 574
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 dofs  597 637 665 697 667 699 640 700 702
+DEAL:: v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  447 529 597 665 598 666 531 667 671
+DEAL:: v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 dofs  497 569 637 697 638 698 571 699 703
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 v0.750000 0.500000 1.00000 v0.750000 0.750000 1.00000 dofs  529 665 569 697 572 700 666 698 701
+DEAL:: v1.00000 0.500000 0.750000 v1.00000 0.750000 0.750000 v1.00000 0.500000 1.00000 v1.00000 0.750000 1.00000 dofs  537 673 577 705 580 708 674 706 709
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 0.750000 v1.00000 0.500000 1.00000 dofs  529 569 537 577 539 579 572 580 582
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 0.750000 v1.00000 0.750000 1.00000 dofs  665 697 673 705 675 707 700 708 710
+DEAL:: v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  529 537 665 673 666 674 539 675 679
+DEAL:: v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 dofs  569 577 697 705 698 706 579 707 711
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.500000 1.00000 1.00000 dofs  597 617 637 657 640 660 618 658 661
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 v0.750000 0.750000 1.00000 v0.750000 1.00000 1.00000 dofs  665 681 697 713 700 716 682 714 717
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 dofs  597 637 665 697 667 699 640 700 702
+DEAL:: v0.500000 1.00000 0.750000 v0.500000 1.00000 1.00000 v0.750000 1.00000 0.750000 v0.750000 1.00000 1.00000 dofs  617 657 681 713 683 715 660 716 718
+DEAL:: v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  597 665 617 681 618 682 667 683 687
+DEAL:: v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 v0.500000 1.00000 1.00000 v0.750000 1.00000 1.00000 dofs  637 697 657 713 658 714 699 715 719
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 v0.750000 0.750000 1.00000 v0.750000 1.00000 1.00000 dofs  665 681 697 713 700 716 682 714 717
+DEAL:: v1.00000 0.750000 0.750000 v1.00000 1.00000 0.750000 v1.00000 0.750000 1.00000 v1.00000 1.00000 1.00000 dofs  673 689 705 721 708 724 690 722 725
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 0.750000 v1.00000 0.750000 1.00000 dofs  665 697 673 705 675 707 700 708 710
+DEAL:: v0.750000 1.00000 0.750000 v0.750000 1.00000 1.00000 v1.00000 1.00000 0.750000 v1.00000 1.00000 1.00000 dofs  681 713 689 721 691 723 716 724 726
+DEAL:: v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  665 673 681 689 682 690 675 691 695
+DEAL:: v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 v0.750000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  697 705 713 721 714 722 707 723 727
 DEAL::FESystem<3>[FE_Q<3>(1)^2-FE_Q<3>(2)]
 DEAL::Level 0
-DEAL:: v0.00 0.00 0.00 v0.00 1.00 0.00 v0.00 0.00 1.00 v0.00 1.00 1.00 dofs  0 1 2 6 7 8 12 13 14 18 19 20 32 34 24 28 36
-DEAL:: v1.00 0.00 0.00 v1.00 1.00 0.00 v1.00 0.00 1.00 v1.00 1.00 1.00 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 1.00 v1.00 0.00 0.00 v1.00 0.00 1.00 dofs  0 1 2 12 13 14 3 4 5 15 16 17 26 30 32 33 38
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 1.00 v1.00 1.00 0.00 v1.00 1.00 1.00 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
-DEAL:: v0.00 0.00 0.00 v1.00 0.00 0.00 v0.00 1.00 0.00 v1.00 1.00 0.00 dofs  0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 40
-DEAL:: v0.00 0.00 1.00 v1.00 0.00 1.00 v0.00 1.00 1.00 v1.00 1.00 1.00 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 dofs  0 1 2 6 7 8 12 13 14 18 19 20 32 34 24 28 36
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.00000 1.00000 v1.00000 1.00000 1.00000 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 1.00000 v1.00000 0.00000 0.00000 v1.00000 0.00000 1.00000 dofs  0 1 2 12 13 14 3 4 5 15 16 17 26 30 32 33 38
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 0.00000 v1.00000 1.00000 1.00000 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
+DEAL:: v0.00000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.00000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 40
+DEAL:: v0.00000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.00000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
 DEAL::Level 1
-DEAL:: v0.00 0.00 0.00 v0.00 0.500 0.00 v0.00 0.00 0.500 v0.00 0.500 0.500 dofs  0 1 2 6 7 8 12 13 14 18 19 20 32 34 24 28 36
-DEAL:: v0.500 0.00 0.00 v0.500 0.500 0.00 v0.500 0.00 0.500 v0.500 0.500 0.500 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 0.500 v0.500 0.00 0.00 v0.500 0.00 0.500 dofs  0 1 2 12 13 14 3 4 5 15 16 17 26 30 32 33 38
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.500 v0.500 0.500 0.00 v0.500 0.500 0.500 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
-DEAL:: v0.00 0.00 0.00 v0.500 0.00 0.00 v0.00 0.500 0.00 v0.500 0.500 0.00 dofs  0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 40
-DEAL:: v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.00000 0.00000 0.500000 v0.00000 0.500000 0.500000 dofs  0 1 2 6 7 8 12 13 14 18 19 20 32 34 24 28 36
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 0.500000 v0.500000 0.00000 0.00000 v0.500000 0.00000 0.500000 dofs  0 1 2 12 13 14 3 4 5 15 16 17 26 30 32 33 38
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
+DEAL:: v0.00000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 40
+DEAL:: v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
 DEAL::Level 1
-DEAL:: v0.500 0.00 0.00 v0.500 0.500 0.00 v0.500 0.00 0.500 v0.500 0.500 0.500 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
-DEAL:: v1.00 0.00 0.00 v1.00 0.500 0.00 v1.00 0.00 0.500 v1.00 0.500 0.500 dofs  43 44 45 46 47 48 49 50 51 52 53 54 61 62 55 58 63
-DEAL:: v0.500 0.00 0.00 v0.500 0.00 0.500 v1.00 0.00 0.00 v1.00 0.00 0.500 dofs  3 4 5 15 16 17 43 44 45 49 50 51 56 59 33 61 64
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.500 v1.00 0.500 0.00 v1.00 0.500 0.500 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
-DEAL:: v0.500 0.00 0.00 v1.00 0.00 0.00 v0.500 0.500 0.00 v1.00 0.500 0.00 dofs  3 4 5 43 44 45 9 10 11 46 47 48 25 55 56 57 66
-DEAL:: v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 0.500000 0.00000 v1.00000 0.00000 0.500000 v1.00000 0.500000 0.500000 dofs  43 44 45 46 47 48 49 50 51 52 53 54 61 62 55 58 63
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.00000 0.500000 v1.00000 0.00000 0.00000 v1.00000 0.00000 0.500000 dofs  3 4 5 15 16 17 43 44 45 49 50 51 56 59 33 61 64
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.500000 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
+DEAL:: v0.500000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 dofs  3 4 5 43 44 45 9 10 11 46 47 48 25 55 56 57 66
+DEAL:: v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
 DEAL::Level 1
-DEAL:: v0.00 0.500 0.00 v0.00 1.00 0.00 v0.00 0.500 0.500 v0.00 1.00 0.500 dofs  6 7 8 69 70 71 18 19 20 75 76 77 34 87 81 84 89
-DEAL:: v0.500 0.500 0.00 v0.500 1.00 0.00 v0.500 0.500 0.500 v0.500 1.00 0.500 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.500 v0.500 0.500 0.00 v0.500 0.500 0.500 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 0.500 v0.500 1.00 0.00 v0.500 1.00 0.500 dofs  69 70 71 75 76 77 72 73 74 78 79 80 83 86 87 88 91
-DEAL:: v0.00 0.500 0.00 v0.500 0.500 0.00 v0.00 1.00 0.00 v0.500 1.00 0.00 dofs  6 7 8 9 10 11 69 70 71 72 73 74 81 82 27 83 92
-DEAL:: v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.500000 0.500000 v0.00000 1.00000 0.500000 dofs  6 7 8 69 70 71 18 19 20 75 76 77 34 87 81 84 89
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.00000 v0.500000 1.00000 0.500000 dofs  69 70 71 75 76 77 72 73 74 78 79 80 83 86 87 88 91
+DEAL:: v0.00000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.00000 1.00000 0.00000 v0.500000 1.00000 0.00000 dofs  6 7 8 9 10 11 69 70 71 72 73 74 81 82 27 83 92
+DEAL:: v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
 DEAL::Level 1
-DEAL:: v0.500 0.500 0.00 v0.500 1.00 0.00 v0.500 0.500 0.500 v0.500 1.00 0.500 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
-DEAL:: v1.00 0.500 0.00 v1.00 1.00 0.00 v1.00 0.500 0.500 v1.00 1.00 0.500 dofs  46 47 48 95 96 97 52 53 54 98 99 100 62 105 101 103 106
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.500 v1.00 0.500 0.00 v1.00 0.500 0.500 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
-DEAL:: v0.500 1.00 0.00 v0.500 1.00 0.500 v1.00 1.00 0.00 v1.00 1.00 0.500 dofs  72 73 74 78 79 80 95 96 97 98 99 100 102 104 88 105 107
-DEAL:: v0.500 0.500 0.00 v1.00 0.500 0.00 v0.500 1.00 0.00 v1.00 1.00 0.00 dofs  9 10 11 46 47 48 72 73 74 95 96 97 82 101 57 102 108
-DEAL:: v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
+DEAL:: v1.00000 0.500000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.500000 0.500000 v1.00000 1.00000 0.500000 dofs  46 47 48 95 96 97 52 53 54 98 99 100 62 105 101 103 106
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.500000 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
+DEAL:: v0.500000 1.00000 0.00000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.00000 v1.00000 1.00000 0.500000 dofs  72 73 74 78 79 80 95 96 97 98 99 100 102 104 88 105 107
+DEAL:: v0.500000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.500000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  9 10 11 46 47 48 72 73 74 95 96 97 82 101 57 102 108
+DEAL:: v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
 DEAL::Level 1
-DEAL:: v0.00 0.00 0.500 v0.00 0.500 0.500 v0.00 0.00 1.00 v0.00 0.500 1.00 dofs  12 13 14 18 19 20 111 112 113 117 118 119 127 129 28 123 131
-DEAL:: v0.500 0.00 0.500 v0.500 0.500 0.500 v0.500 0.00 1.00 v0.500 0.500 1.00 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
-DEAL:: v0.00 0.00 0.500 v0.00 0.00 1.00 v0.500 0.00 0.500 v0.500 0.00 1.00 dofs  12 13 14 111 112 113 15 16 17 114 115 116 30 125 127 128 133
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 1.00 v0.500 0.500 0.500 v0.500 0.500 1.00 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
-DEAL:: v0.00 0.00 0.500 v0.500 0.00 0.500 v0.00 0.500 0.500 v0.500 0.500 0.500 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
-DEAL:: v0.00 0.00 1.00 v0.500 0.00 1.00 v0.00 0.500 1.00 v0.500 0.500 1.00 dofs  111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 135
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.00000 0.00000 1.00000 v0.00000 0.500000 1.00000 dofs  12 13 14 18 19 20 111 112 113 117 118 119 127 129 28 123 131
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.00000 1.00000 v0.500000 0.500000 1.00000 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.00000 1.00000 v0.500000 0.00000 0.500000 v0.500000 0.00000 1.00000 dofs  12 13 14 111 112 113 15 16 17 114 115 116 30 125 127 128 133
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
+DEAL:: v0.00000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
+DEAL:: v0.00000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 135
 DEAL::Level 1
-DEAL:: v0.500 0.00 0.500 v0.500 0.500 0.500 v0.500 0.00 1.00 v0.500 0.500 1.00 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
-DEAL:: v1.00 0.00 0.500 v1.00 0.500 0.500 v1.00 0.00 1.00 v1.00 0.500 1.00 dofs  49 50 51 52 53 54 137 138 139 140 141 142 146 147 58 143 148
-DEAL:: v0.500 0.00 0.500 v0.500 0.00 1.00 v1.00 0.00 0.500 v1.00 0.00 1.00 dofs  15 16 17 114 115 116 49 50 51 137 138 139 59 144 128 146 149
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 1.00 v1.00 0.500 0.500 v1.00 0.500 1.00 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
-DEAL:: v0.500 0.00 0.500 v1.00 0.00 0.500 v0.500 0.500 0.500 v1.00 0.500 0.500 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
-DEAL:: v0.500 0.00 1.00 v1.00 0.00 1.00 v0.500 0.500 1.00 v1.00 0.500 1.00 dofs  114 115 116 137 138 139 120 121 122 140 141 142 124 143 144 145 151
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.00000 1.00000 v0.500000 0.500000 1.00000 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
+DEAL:: v1.00000 0.00000 0.500000 v1.00000 0.500000 0.500000 v1.00000 0.00000 1.00000 v1.00000 0.500000 1.00000 dofs  49 50 51 52 53 54 137 138 139 140 141 142 146 147 58 143 148
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.00000 1.00000 v1.00000 0.00000 0.500000 v1.00000 0.00000 1.00000 dofs  15 16 17 114 115 116 49 50 51 137 138 139 59 144 128 146 149
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 0.500000 v1.00000 0.500000 1.00000 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
+DEAL:: v0.500000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
+DEAL:: v0.500000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  114 115 116 137 138 139 120 121 122 140 141 142 124 143 144 145 151
 DEAL::Level 1
-DEAL:: v0.00 0.500 0.500 v0.00 1.00 0.500 v0.00 0.500 1.00 v0.00 1.00 1.00 dofs  18 19 20 75 76 77 117 118 119 153 154 155 129 162 84 159 164
-DEAL:: v0.500 0.500 0.500 v0.500 1.00 0.500 v0.500 0.500 1.00 v0.500 1.00 1.00 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 1.00 v0.500 0.500 0.500 v0.500 0.500 1.00 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
-DEAL:: v0.00 1.00 0.500 v0.00 1.00 1.00 v0.500 1.00 0.500 v0.500 1.00 1.00 dofs  75 76 77 153 154 155 78 79 80 156 157 158 86 161 162 163 166
-DEAL:: v0.00 0.500 0.500 v0.500 0.500 0.500 v0.00 1.00 0.500 v0.500 1.00 0.500 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
-DEAL:: v0.00 0.500 1.00 v0.500 0.500 1.00 v0.00 1.00 1.00 v0.500 1.00 1.00 dofs  117 118 119 120 121 122 153 154 155 156 157 158 159 160 126 161 167
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.00000 0.500000 1.00000 v0.00000 1.00000 1.00000 dofs  18 19 20 75 76 77 117 118 119 153 154 155 129 162 84 159 164
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.500000 1.00000 v0.500000 1.00000 1.00000 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 1.00000 v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
+DEAL:: v0.00000 1.00000 0.500000 v0.00000 1.00000 1.00000 v0.500000 1.00000 0.500000 v0.500000 1.00000 1.00000 dofs  75 76 77 153 154 155 78 79 80 156 157 158 86 161 162 163 166
+DEAL:: v0.00000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.00000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
+DEAL:: v0.00000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.00000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  117 118 119 120 121 122 153 154 155 156 157 158 159 160 126 161 167
 DEAL::Level 1
-DEAL:: v0.500 0.500 0.500 v0.500 1.00 0.500 v0.500 0.500 1.00 v0.500 1.00 1.00 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
-DEAL:: v1.00 0.500 0.500 v1.00 1.00 0.500 v1.00 0.500 1.00 v1.00 1.00 1.00 dofs  52 53 54 98 99 100 140 141 142 169 170 171 147 174 103 172 175
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 1.00 v1.00 0.500 0.500 v1.00 0.500 1.00 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
-DEAL:: v0.500 1.00 0.500 v0.500 1.00 1.00 v1.00 1.00 0.500 v1.00 1.00 1.00 dofs  78 79 80 156 157 158 98 99 100 169 170 171 104 173 163 174 176
-DEAL:: v0.500 0.500 0.500 v1.00 0.500 0.500 v0.500 1.00 0.500 v1.00 1.00 0.500 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
-DEAL:: v0.500 0.500 1.00 v1.00 0.500 1.00 v0.500 1.00 1.00 v1.00 1.00 1.00 dofs  120 121 122 140 141 142 156 157 158 169 170 171 160 172 145 173 177
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.00 v0.00 0.250 0.00 v0.00 0.00 0.250 v0.00 0.250 0.250 dofs  0 1 2 6 7 8 12 13 14 18 19 20 32 34 24 28 36
-DEAL:: v0.250 0.00 0.00 v0.250 0.250 0.00 v0.250 0.00 0.250 v0.250 0.250 0.250 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
-DEAL:: v0.00 0.00 0.00 v0.00 0.00 0.250 v0.250 0.00 0.00 v0.250 0.00 0.250 dofs  0 1 2 12 13 14 3 4 5 15 16 17 26 30 32 33 38
-DEAL:: v0.00 0.250 0.00 v0.00 0.250 0.250 v0.250 0.250 0.00 v0.250 0.250 0.250 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
-DEAL:: v0.00 0.00 0.00 v0.250 0.00 0.00 v0.00 0.250 0.00 v0.250 0.250 0.00 dofs  0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 40
-DEAL:: v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.00 v0.250 0.250 0.00 v0.250 0.00 0.250 v0.250 0.250 0.250 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
-DEAL:: v0.500 0.00 0.00 v0.500 0.250 0.00 v0.500 0.00 0.250 v0.500 0.250 0.250 dofs  43 44 45 46 47 48 49 50 51 52 53 54 61 62 55 58 63
-DEAL:: v0.250 0.00 0.00 v0.250 0.00 0.250 v0.500 0.00 0.00 v0.500 0.00 0.250 dofs  3 4 5 15 16 17 43 44 45 49 50 51 56 59 33 61 64
-DEAL:: v0.250 0.250 0.00 v0.250 0.250 0.250 v0.500 0.250 0.00 v0.500 0.250 0.250 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
-DEAL:: v0.250 0.00 0.00 v0.500 0.00 0.00 v0.250 0.250 0.00 v0.500 0.250 0.00 dofs  3 4 5 43 44 45 9 10 11 46 47 48 25 55 56 57 66
-DEAL:: v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.00 v0.00 0.500 0.00 v0.00 0.250 0.250 v0.00 0.500 0.250 dofs  6 7 8 69 70 71 18 19 20 75 76 77 34 87 81 84 89
-DEAL:: v0.250 0.250 0.00 v0.250 0.500 0.00 v0.250 0.250 0.250 v0.250 0.500 0.250 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
-DEAL:: v0.00 0.250 0.00 v0.00 0.250 0.250 v0.250 0.250 0.00 v0.250 0.250 0.250 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.250 v0.250 0.500 0.00 v0.250 0.500 0.250 dofs  69 70 71 75 76 77 72 73 74 78 79 80 83 86 87 88 91
-DEAL:: v0.00 0.250 0.00 v0.250 0.250 0.00 v0.00 0.500 0.00 v0.250 0.500 0.00 dofs  6 7 8 9 10 11 69 70 71 72 73 74 81 82 27 83 92
-DEAL:: v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.00 v0.250 0.500 0.00 v0.250 0.250 0.250 v0.250 0.500 0.250 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
-DEAL:: v0.500 0.250 0.00 v0.500 0.500 0.00 v0.500 0.250 0.250 v0.500 0.500 0.250 dofs  46 47 48 95 96 97 52 53 54 98 99 100 62 105 101 103 106
-DEAL:: v0.250 0.250 0.00 v0.250 0.250 0.250 v0.500 0.250 0.00 v0.500 0.250 0.250 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
-DEAL:: v0.250 0.500 0.00 v0.250 0.500 0.250 v0.500 0.500 0.00 v0.500 0.500 0.250 dofs  72 73 74 78 79 80 95 96 97 98 99 100 102 104 88 105 107
-DEAL:: v0.250 0.250 0.00 v0.500 0.250 0.00 v0.250 0.500 0.00 v0.500 0.500 0.00 dofs  9 10 11 46 47 48 72 73 74 95 96 97 82 101 57 102 108
-DEAL:: v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.250 v0.00 0.250 0.250 v0.00 0.00 0.500 v0.00 0.250 0.500 dofs  12 13 14 18 19 20 111 112 113 117 118 119 127 129 28 123 131
-DEAL:: v0.250 0.00 0.250 v0.250 0.250 0.250 v0.250 0.00 0.500 v0.250 0.250 0.500 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
-DEAL:: v0.00 0.00 0.250 v0.00 0.00 0.500 v0.250 0.00 0.250 v0.250 0.00 0.500 dofs  12 13 14 111 112 113 15 16 17 114 115 116 30 125 127 128 133
-DEAL:: v0.00 0.250 0.250 v0.00 0.250 0.500 v0.250 0.250 0.250 v0.250 0.250 0.500 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
-DEAL:: v0.00 0.00 0.250 v0.250 0.00 0.250 v0.00 0.250 0.250 v0.250 0.250 0.250 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
-DEAL:: v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 135
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.250 v0.250 0.250 0.250 v0.250 0.00 0.500 v0.250 0.250 0.500 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
-DEAL:: v0.500 0.00 0.250 v0.500 0.250 0.250 v0.500 0.00 0.500 v0.500 0.250 0.500 dofs  49 50 51 52 53 54 137 138 139 140 141 142 146 147 58 143 148
-DEAL:: v0.250 0.00 0.250 v0.250 0.00 0.500 v0.500 0.00 0.250 v0.500 0.00 0.500 dofs  15 16 17 114 115 116 49 50 51 137 138 139 59 144 128 146 149
-DEAL:: v0.250 0.250 0.250 v0.250 0.250 0.500 v0.500 0.250 0.250 v0.500 0.250 0.500 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
-DEAL:: v0.250 0.00 0.250 v0.500 0.00 0.250 v0.250 0.250 0.250 v0.500 0.250 0.250 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
-DEAL:: v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  114 115 116 137 138 139 120 121 122 140 141 142 124 143 144 145 151
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.250 v0.00 0.500 0.250 v0.00 0.250 0.500 v0.00 0.500 0.500 dofs  18 19 20 75 76 77 117 118 119 153 154 155 129 162 84 159 164
-DEAL:: v0.250 0.250 0.250 v0.250 0.500 0.250 v0.250 0.250 0.500 v0.250 0.500 0.500 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
-DEAL:: v0.00 0.250 0.250 v0.00 0.250 0.500 v0.250 0.250 0.250 v0.250 0.250 0.500 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
-DEAL:: v0.00 0.500 0.250 v0.00 0.500 0.500 v0.250 0.500 0.250 v0.250 0.500 0.500 dofs  75 76 77 153 154 155 78 79 80 156 157 158 86 161 162 163 166
-DEAL:: v0.00 0.250 0.250 v0.250 0.250 0.250 v0.00 0.500 0.250 v0.250 0.500 0.250 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
-DEAL:: v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  117 118 119 120 121 122 153 154 155 156 157 158 159 160 126 161 167
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.250 v0.250 0.500 0.250 v0.250 0.250 0.500 v0.250 0.500 0.500 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
-DEAL:: v0.500 0.250 0.250 v0.500 0.500 0.250 v0.500 0.250 0.500 v0.500 0.500 0.500 dofs  52 53 54 98 99 100 140 141 142 169 170 171 147 174 103 172 175
-DEAL:: v0.250 0.250 0.250 v0.250 0.250 0.500 v0.500 0.250 0.250 v0.500 0.250 0.500 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
-DEAL:: v0.250 0.500 0.250 v0.250 0.500 0.500 v0.500 0.500 0.250 v0.500 0.500 0.500 dofs  78 79 80 156 157 158 98 99 100 169 170 171 104 173 163 174 176
-DEAL:: v0.250 0.250 0.250 v0.500 0.250 0.250 v0.250 0.500 0.250 v0.500 0.500 0.250 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
-DEAL:: v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  120 121 122 140 141 142 156 157 158 169 170 171 160 172 145 173 177
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.00 v0.500 0.250 0.00 v0.500 0.00 0.250 v0.500 0.250 0.250 dofs  43 44 45 46 47 48 49 50 51 52 53 54 61 62 55 58 63
-DEAL:: v0.750 0.00 0.00 v0.750 0.250 0.00 v0.750 0.00 0.250 v0.750 0.250 0.250 dofs  179 180 181 182 183 184 185 186 187 188 189 190 197 198 191 194 199
-DEAL:: v0.500 0.00 0.00 v0.500 0.00 0.250 v0.750 0.00 0.00 v0.750 0.00 0.250 dofs  43 44 45 49 50 51 179 180 181 185 186 187 192 195 61 197 200
-DEAL:: v0.500 0.250 0.00 v0.500 0.250 0.250 v0.750 0.250 0.00 v0.750 0.250 0.250 dofs  46 47 48 52 53 54 182 183 184 188 189 190 193 196 62 198 201
-DEAL:: v0.500 0.00 0.00 v0.750 0.00 0.00 v0.500 0.250 0.00 v0.750 0.250 0.00 dofs  43 44 45 179 180 181 46 47 48 182 183 184 55 191 192 193 202
-DEAL:: v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  49 50 51 185 186 187 52 53 54 188 189 190 58 194 195 196 203
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.00 v0.750 0.250 0.00 v0.750 0.00 0.250 v0.750 0.250 0.250 dofs  179 180 181 182 183 184 185 186 187 188 189 190 197 198 191 194 199
-DEAL:: v1.00 0.00 0.00 v1.00 0.250 0.00 v1.00 0.00 0.250 v1.00 0.250 0.250 dofs  205 206 207 208 209 210 211 212 213 214 215 216 223 224 217 220 225
-DEAL:: v0.750 0.00 0.00 v0.750 0.00 0.250 v1.00 0.00 0.00 v1.00 0.00 0.250 dofs  179 180 181 185 186 187 205 206 207 211 212 213 218 221 197 223 226
-DEAL:: v0.750 0.250 0.00 v0.750 0.250 0.250 v1.00 0.250 0.00 v1.00 0.250 0.250 dofs  182 183 184 188 189 190 208 209 210 214 215 216 219 222 198 224 227
-DEAL:: v0.750 0.00 0.00 v1.00 0.00 0.00 v0.750 0.250 0.00 v1.00 0.250 0.00 dofs  179 180 181 205 206 207 182 183 184 208 209 210 191 217 218 219 228
-DEAL:: v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  185 186 187 211 212 213 188 189 190 214 215 216 194 220 221 222 229
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.00 v0.500 0.500 0.00 v0.500 0.250 0.250 v0.500 0.500 0.250 dofs  46 47 48 95 96 97 52 53 54 98 99 100 62 105 101 103 106
-DEAL:: v0.750 0.250 0.00 v0.750 0.500 0.00 v0.750 0.250 0.250 v0.750 0.500 0.250 dofs  182 183 184 231 232 233 188 189 190 234 235 236 198 241 237 239 242
-DEAL:: v0.500 0.250 0.00 v0.500 0.250 0.250 v0.750 0.250 0.00 v0.750 0.250 0.250 dofs  46 47 48 52 53 54 182 183 184 188 189 190 193 196 62 198 201
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.250 v0.750 0.500 0.00 v0.750 0.500 0.250 dofs  95 96 97 98 99 100 231 232 233 234 235 236 238 240 105 241 243
-DEAL:: v0.500 0.250 0.00 v0.750 0.250 0.00 v0.500 0.500 0.00 v0.750 0.500 0.00 dofs  46 47 48 182 183 184 95 96 97 231 232 233 101 237 193 238 244
-DEAL:: v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  52 53 54 188 189 190 98 99 100 234 235 236 103 239 196 240 245
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.00 v0.750 0.500 0.00 v0.750 0.250 0.250 v0.750 0.500 0.250 dofs  182 183 184 231 232 233 188 189 190 234 235 236 198 241 237 239 242
-DEAL:: v1.00 0.250 0.00 v1.00 0.500 0.00 v1.00 0.250 0.250 v1.00 0.500 0.250 dofs  208 209 210 247 248 249 214 215 216 250 251 252 224 257 253 255 258
-DEAL:: v0.750 0.250 0.00 v0.750 0.250 0.250 v1.00 0.250 0.00 v1.00 0.250 0.250 dofs  182 183 184 188 189 190 208 209 210 214 215 216 219 222 198 224 227
-DEAL:: v0.750 0.500 0.00 v0.750 0.500 0.250 v1.00 0.500 0.00 v1.00 0.500 0.250 dofs  231 232 233 234 235 236 247 248 249 250 251 252 254 256 241 257 259
-DEAL:: v0.750 0.250 0.00 v1.00 0.250 0.00 v0.750 0.500 0.00 v1.00 0.500 0.00 dofs  182 183 184 208 209 210 231 232 233 247 248 249 237 253 219 254 260
-DEAL:: v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  188 189 190 214 215 216 234 235 236 250 251 252 239 255 222 256 261
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.250 v0.500 0.250 0.250 v0.500 0.00 0.500 v0.500 0.250 0.500 dofs  49 50 51 52 53 54 137 138 139 140 141 142 146 147 58 143 148
-DEAL:: v0.750 0.00 0.250 v0.750 0.250 0.250 v0.750 0.00 0.500 v0.750 0.250 0.500 dofs  185 186 187 188 189 190 263 264 265 266 267 268 272 273 194 269 274
-DEAL:: v0.500 0.00 0.250 v0.500 0.00 0.500 v0.750 0.00 0.250 v0.750 0.00 0.500 dofs  49 50 51 137 138 139 185 186 187 263 264 265 195 270 146 272 275
-DEAL:: v0.500 0.250 0.250 v0.500 0.250 0.500 v0.750 0.250 0.250 v0.750 0.250 0.500 dofs  52 53 54 140 141 142 188 189 190 266 267 268 196 271 147 273 276
-DEAL:: v0.500 0.00 0.250 v0.750 0.00 0.250 v0.500 0.250 0.250 v0.750 0.250 0.250 dofs  49 50 51 185 186 187 52 53 54 188 189 190 58 194 195 196 203
-DEAL:: v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  137 138 139 263 264 265 140 141 142 266 267 268 143 269 270 271 277
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.250 v0.750 0.250 0.250 v0.750 0.00 0.500 v0.750 0.250 0.500 dofs  185 186 187 188 189 190 263 264 265 266 267 268 272 273 194 269 274
-DEAL:: v1.00 0.00 0.250 v1.00 0.250 0.250 v1.00 0.00 0.500 v1.00 0.250 0.500 dofs  211 212 213 214 215 216 279 280 281 282 283 284 288 289 220 285 290
-DEAL:: v0.750 0.00 0.250 v0.750 0.00 0.500 v1.00 0.00 0.250 v1.00 0.00 0.500 dofs  185 186 187 263 264 265 211 212 213 279 280 281 221 286 272 288 291
-DEAL:: v0.750 0.250 0.250 v0.750 0.250 0.500 v1.00 0.250 0.250 v1.00 0.250 0.500 dofs  188 189 190 266 267 268 214 215 216 282 283 284 222 287 273 289 292
-DEAL:: v0.750 0.00 0.250 v1.00 0.00 0.250 v0.750 0.250 0.250 v1.00 0.250 0.250 dofs  185 186 187 211 212 213 188 189 190 214 215 216 194 220 221 222 229
-DEAL:: v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  263 264 265 279 280 281 266 267 268 282 283 284 269 285 286 287 293
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.250 v0.500 0.500 0.250 v0.500 0.250 0.500 v0.500 0.500 0.500 dofs  52 53 54 98 99 100 140 141 142 169 170 171 147 174 103 172 175
-DEAL:: v0.750 0.250 0.250 v0.750 0.500 0.250 v0.750 0.250 0.500 v0.750 0.500 0.500 dofs  188 189 190 234 235 236 266 267 268 295 296 297 273 300 239 298 301
-DEAL:: v0.500 0.250 0.250 v0.500 0.250 0.500 v0.750 0.250 0.250 v0.750 0.250 0.500 dofs  52 53 54 140 141 142 188 189 190 266 267 268 196 271 147 273 276
-DEAL:: v0.500 0.500 0.250 v0.500 0.500 0.500 v0.750 0.500 0.250 v0.750 0.500 0.500 dofs  98 99 100 169 170 171 234 235 236 295 296 297 240 299 174 300 302
-DEAL:: v0.500 0.250 0.250 v0.750 0.250 0.250 v0.500 0.500 0.250 v0.750 0.500 0.250 dofs  52 53 54 188 189 190 98 99 100 234 235 236 103 239 196 240 245
-DEAL:: v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  140 141 142 266 267 268 169 170 171 295 296 297 172 298 271 299 303
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.250 v0.750 0.500 0.250 v0.750 0.250 0.500 v0.750 0.500 0.500 dofs  188 189 190 234 235 236 266 267 268 295 296 297 273 300 239 298 301
-DEAL:: v1.00 0.250 0.250 v1.00 0.500 0.250 v1.00 0.250 0.500 v1.00 0.500 0.500 dofs  214 215 216 250 251 252 282 283 284 305 306 307 289 310 255 308 311
-DEAL:: v0.750 0.250 0.250 v0.750 0.250 0.500 v1.00 0.250 0.250 v1.00 0.250 0.500 dofs  188 189 190 266 267 268 214 215 216 282 283 284 222 287 273 289 292
-DEAL:: v0.750 0.500 0.250 v0.750 0.500 0.500 v1.00 0.500 0.250 v1.00 0.500 0.500 dofs  234 235 236 295 296 297 250 251 252 305 306 307 256 309 300 310 312
-DEAL:: v0.750 0.250 0.250 v1.00 0.250 0.250 v0.750 0.500 0.250 v1.00 0.500 0.250 dofs  188 189 190 214 215 216 234 235 236 250 251 252 239 255 222 256 261
-DEAL:: v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  266 267 268 282 283 284 295 296 297 305 306 307 298 308 287 309 313
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.00 v0.00 0.750 0.00 v0.00 0.500 0.250 v0.00 0.750 0.250 dofs  69 70 71 315 316 317 75 76 77 321 322 323 87 333 327 330 335
-DEAL:: v0.250 0.500 0.00 v0.250 0.750 0.00 v0.250 0.500 0.250 v0.250 0.750 0.250 dofs  72 73 74 318 319 320 78 79 80 324 325 326 88 334 328 331 336
-DEAL:: v0.00 0.500 0.00 v0.00 0.500 0.250 v0.250 0.500 0.00 v0.250 0.500 0.250 dofs  69 70 71 75 76 77 72 73 74 78 79 80 83 86 87 88 91
-DEAL:: v0.00 0.750 0.00 v0.00 0.750 0.250 v0.250 0.750 0.00 v0.250 0.750 0.250 dofs  315 316 317 321 322 323 318 319 320 324 325 326 329 332 333 334 337
-DEAL:: v0.00 0.500 0.00 v0.250 0.500 0.00 v0.00 0.750 0.00 v0.250 0.750 0.00 dofs  69 70 71 72 73 74 315 316 317 318 319 320 327 328 83 329 338
-DEAL:: v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  75 76 77 78 79 80 321 322 323 324 325 326 330 331 86 332 339
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.00 v0.250 0.750 0.00 v0.250 0.500 0.250 v0.250 0.750 0.250 dofs  72 73 74 318 319 320 78 79 80 324 325 326 88 334 328 331 336
-DEAL:: v0.500 0.500 0.00 v0.500 0.750 0.00 v0.500 0.500 0.250 v0.500 0.750 0.250 dofs  95 96 97 341 342 343 98 99 100 344 345 346 105 351 347 349 352
-DEAL:: v0.250 0.500 0.00 v0.250 0.500 0.250 v0.500 0.500 0.00 v0.500 0.500 0.250 dofs  72 73 74 78 79 80 95 96 97 98 99 100 102 104 88 105 107
-DEAL:: v0.250 0.750 0.00 v0.250 0.750 0.250 v0.500 0.750 0.00 v0.500 0.750 0.250 dofs  318 319 320 324 325 326 341 342 343 344 345 346 348 350 334 351 353
-DEAL:: v0.250 0.500 0.00 v0.500 0.500 0.00 v0.250 0.750 0.00 v0.500 0.750 0.00 dofs  72 73 74 95 96 97 318 319 320 341 342 343 328 347 102 348 354
-DEAL:: v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  78 79 80 98 99 100 324 325 326 344 345 346 331 349 104 350 355
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.00 v0.00 1.00 0.00 v0.00 0.750 0.250 v0.00 1.00 0.250 dofs  315 316 317 357 358 359 321 322 323 363 364 365 333 375 369 372 377
-DEAL:: v0.250 0.750 0.00 v0.250 1.00 0.00 v0.250 0.750 0.250 v0.250 1.00 0.250 dofs  318 319 320 360 361 362 324 325 326 366 367 368 334 376 370 373 378
-DEAL:: v0.00 0.750 0.00 v0.00 0.750 0.250 v0.250 0.750 0.00 v0.250 0.750 0.250 dofs  315 316 317 321 322 323 318 319 320 324 325 326 329 332 333 334 337
-DEAL:: v0.00 1.00 0.00 v0.00 1.00 0.250 v0.250 1.00 0.00 v0.250 1.00 0.250 dofs  357 358 359 363 364 365 360 361 362 366 367 368 371 374 375 376 379
-DEAL:: v0.00 0.750 0.00 v0.250 0.750 0.00 v0.00 1.00 0.00 v0.250 1.00 0.00 dofs  315 316 317 318 319 320 357 358 359 360 361 362 369 370 329 371 380
-DEAL:: v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  321 322 323 324 325 326 363 364 365 366 367 368 372 373 332 374 381
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.00 v0.250 1.00 0.00 v0.250 0.750 0.250 v0.250 1.00 0.250 dofs  318 319 320 360 361 362 324 325 326 366 367 368 334 376 370 373 378
-DEAL:: v0.500 0.750 0.00 v0.500 1.00 0.00 v0.500 0.750 0.250 v0.500 1.00 0.250 dofs  341 342 343 383 384 385 344 345 346 386 387 388 351 393 389 391 394
-DEAL:: v0.250 0.750 0.00 v0.250 0.750 0.250 v0.500 0.750 0.00 v0.500 0.750 0.250 dofs  318 319 320 324 325 326 341 342 343 344 345 346 348 350 334 351 353
-DEAL:: v0.250 1.00 0.00 v0.250 1.00 0.250 v0.500 1.00 0.00 v0.500 1.00 0.250 dofs  360 361 362 366 367 368 383 384 385 386 387 388 390 392 376 393 395
-DEAL:: v0.250 0.750 0.00 v0.500 0.750 0.00 v0.250 1.00 0.00 v0.500 1.00 0.00 dofs  318 319 320 341 342 343 360 361 362 383 384 385 370 389 348 390 396
-DEAL:: v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  324 325 326 344 345 346 366 367 368 386 387 388 373 391 350 392 397
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.250 v0.00 0.750 0.250 v0.00 0.500 0.500 v0.00 0.750 0.500 dofs  75 76 77 321 322 323 153 154 155 399 400 401 162 408 330 405 410
-DEAL:: v0.250 0.500 0.250 v0.250 0.750 0.250 v0.250 0.500 0.500 v0.250 0.750 0.500 dofs  78 79 80 324 325 326 156 157 158 402 403 404 163 409 331 406 411
-DEAL:: v0.00 0.500 0.250 v0.00 0.500 0.500 v0.250 0.500 0.250 v0.250 0.500 0.500 dofs  75 76 77 153 154 155 78 79 80 156 157 158 86 161 162 163 166
-DEAL:: v0.00 0.750 0.250 v0.00 0.750 0.500 v0.250 0.750 0.250 v0.250 0.750 0.500 dofs  321 322 323 399 400 401 324 325 326 402 403 404 332 407 408 409 412
-DEAL:: v0.00 0.500 0.250 v0.250 0.500 0.250 v0.00 0.750 0.250 v0.250 0.750 0.250 dofs  75 76 77 78 79 80 321 322 323 324 325 326 330 331 86 332 339
-DEAL:: v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  153 154 155 156 157 158 399 400 401 402 403 404 405 406 161 407 413
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.250 v0.250 0.750 0.250 v0.250 0.500 0.500 v0.250 0.750 0.500 dofs  78 79 80 324 325 326 156 157 158 402 403 404 163 409 331 406 411
-DEAL:: v0.500 0.500 0.250 v0.500 0.750 0.250 v0.500 0.500 0.500 v0.500 0.750 0.500 dofs  98 99 100 344 345 346 169 170 171 415 416 417 174 420 349 418 421
-DEAL:: v0.250 0.500 0.250 v0.250 0.500 0.500 v0.500 0.500 0.250 v0.500 0.500 0.500 dofs  78 79 80 156 157 158 98 99 100 169 170 171 104 173 163 174 176
-DEAL:: v0.250 0.750 0.250 v0.250 0.750 0.500 v0.500 0.750 0.250 v0.500 0.750 0.500 dofs  324 325 326 402 403 404 344 345 346 415 416 417 350 419 409 420 422
-DEAL:: v0.250 0.500 0.250 v0.500 0.500 0.250 v0.250 0.750 0.250 v0.500 0.750 0.250 dofs  78 79 80 98 99 100 324 325 326 344 345 346 331 349 104 350 355
-DEAL:: v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  156 157 158 169 170 171 402 403 404 415 416 417 406 418 173 419 423
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.250 v0.00 1.00 0.250 v0.00 0.750 0.500 v0.00 1.00 0.500 dofs  321 322 323 363 364 365 399 400 401 425 426 427 408 434 372 431 436
-DEAL:: v0.250 0.750 0.250 v0.250 1.00 0.250 v0.250 0.750 0.500 v0.250 1.00 0.500 dofs  324 325 326 366 367 368 402 403 404 428 429 430 409 435 373 432 437
-DEAL:: v0.00 0.750 0.250 v0.00 0.750 0.500 v0.250 0.750 0.250 v0.250 0.750 0.500 dofs  321 322 323 399 400 401 324 325 326 402 403 404 332 407 408 409 412
-DEAL:: v0.00 1.00 0.250 v0.00 1.00 0.500 v0.250 1.00 0.250 v0.250 1.00 0.500 dofs  363 364 365 425 426 427 366 367 368 428 429 430 374 433 434 435 438
-DEAL:: v0.00 0.750 0.250 v0.250 0.750 0.250 v0.00 1.00 0.250 v0.250 1.00 0.250 dofs  321 322 323 324 325 326 363 364 365 366 367 368 372 373 332 374 381
-DEAL:: v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  399 400 401 402 403 404 425 426 427 428 429 430 431 432 407 433 439
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.250 v0.250 1.00 0.250 v0.250 0.750 0.500 v0.250 1.00 0.500 dofs  324 325 326 366 367 368 402 403 404 428 429 430 409 435 373 432 437
-DEAL:: v0.500 0.750 0.250 v0.500 1.00 0.250 v0.500 0.750 0.500 v0.500 1.00 0.500 dofs  344 345 346 386 387 388 415 416 417 441 442 443 420 446 391 444 447
-DEAL:: v0.250 0.750 0.250 v0.250 0.750 0.500 v0.500 0.750 0.250 v0.500 0.750 0.500 dofs  324 325 326 402 403 404 344 345 346 415 416 417 350 419 409 420 422
-DEAL:: v0.250 1.00 0.250 v0.250 1.00 0.500 v0.500 1.00 0.250 v0.500 1.00 0.500 dofs  366 367 368 428 429 430 386 387 388 441 442 443 392 445 435 446 448
-DEAL:: v0.250 0.750 0.250 v0.500 0.750 0.250 v0.250 1.00 0.250 v0.500 1.00 0.250 dofs  324 325 326 344 345 346 366 367 368 386 387 388 373 391 350 392 397
-DEAL:: v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  402 403 404 415 416 417 428 429 430 441 442 443 432 444 419 445 449
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.00 v0.500 0.750 0.00 v0.500 0.500 0.250 v0.500 0.750 0.250 dofs  95 96 97 341 342 343 98 99 100 344 345 346 105 351 347 349 352
-DEAL:: v0.750 0.500 0.00 v0.750 0.750 0.00 v0.750 0.500 0.250 v0.750 0.750 0.250 dofs  231 232 233 451 452 453 234 235 236 454 455 456 241 461 457 459 462
-DEAL:: v0.500 0.500 0.00 v0.500 0.500 0.250 v0.750 0.500 0.00 v0.750 0.500 0.250 dofs  95 96 97 98 99 100 231 232 233 234 235 236 238 240 105 241 243
-DEAL:: v0.500 0.750 0.00 v0.500 0.750 0.250 v0.750 0.750 0.00 v0.750 0.750 0.250 dofs  341 342 343 344 345 346 451 452 453 454 455 456 458 460 351 461 463
-DEAL:: v0.500 0.500 0.00 v0.750 0.500 0.00 v0.500 0.750 0.00 v0.750 0.750 0.00 dofs  95 96 97 231 232 233 341 342 343 451 452 453 347 457 238 458 464
-DEAL:: v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  98 99 100 234 235 236 344 345 346 454 455 456 349 459 240 460 465
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.00 v0.750 0.750 0.00 v0.750 0.500 0.250 v0.750 0.750 0.250 dofs  231 232 233 451 452 453 234 235 236 454 455 456 241 461 457 459 462
-DEAL:: v1.00 0.500 0.00 v1.00 0.750 0.00 v1.00 0.500 0.250 v1.00 0.750 0.250 dofs  247 248 249 467 468 469 250 251 252 470 471 472 257 477 473 475 478
-DEAL:: v0.750 0.500 0.00 v0.750 0.500 0.250 v1.00 0.500 0.00 v1.00 0.500 0.250 dofs  231 232 233 234 235 236 247 248 249 250 251 252 254 256 241 257 259
-DEAL:: v0.750 0.750 0.00 v0.750 0.750 0.250 v1.00 0.750 0.00 v1.00 0.750 0.250 dofs  451 452 453 454 455 456 467 468 469 470 471 472 474 476 461 477 479
-DEAL:: v0.750 0.500 0.00 v1.00 0.500 0.00 v0.750 0.750 0.00 v1.00 0.750 0.00 dofs  231 232 233 247 248 249 451 452 453 467 468 469 457 473 254 474 480
-DEAL:: v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  234 235 236 250 251 252 454 455 456 470 471 472 459 475 256 476 481
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.00 v0.500 1.00 0.00 v0.500 0.750 0.250 v0.500 1.00 0.250 dofs  341 342 343 383 384 385 344 345 346 386 387 388 351 393 389 391 394
-DEAL:: v0.750 0.750 0.00 v0.750 1.00 0.00 v0.750 0.750 0.250 v0.750 1.00 0.250 dofs  451 452 453 483 484 485 454 455 456 486 487 488 461 493 489 491 494
-DEAL:: v0.500 0.750 0.00 v0.500 0.750 0.250 v0.750 0.750 0.00 v0.750 0.750 0.250 dofs  341 342 343 344 345 346 451 452 453 454 455 456 458 460 351 461 463
-DEAL:: v0.500 1.00 0.00 v0.500 1.00 0.250 v0.750 1.00 0.00 v0.750 1.00 0.250 dofs  383 384 385 386 387 388 483 484 485 486 487 488 490 492 393 493 495
-DEAL:: v0.500 0.750 0.00 v0.750 0.750 0.00 v0.500 1.00 0.00 v0.750 1.00 0.00 dofs  341 342 343 451 452 453 383 384 385 483 484 485 389 489 458 490 496
-DEAL:: v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  344 345 346 454 455 456 386 387 388 486 487 488 391 491 460 492 497
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.00 v0.750 1.00 0.00 v0.750 0.750 0.250 v0.750 1.00 0.250 dofs  451 452 453 483 484 485 454 455 456 486 487 488 461 493 489 491 494
-DEAL:: v1.00 0.750 0.00 v1.00 1.00 0.00 v1.00 0.750 0.250 v1.00 1.00 0.250 dofs  467 468 469 499 500 501 470 471 472 502 503 504 477 509 505 507 510
-DEAL:: v0.750 0.750 0.00 v0.750 0.750 0.250 v1.00 0.750 0.00 v1.00 0.750 0.250 dofs  451 452 453 454 455 456 467 468 469 470 471 472 474 476 461 477 479
-DEAL:: v0.750 1.00 0.00 v0.750 1.00 0.250 v1.00 1.00 0.00 v1.00 1.00 0.250 dofs  483 484 485 486 487 488 499 500 501 502 503 504 506 508 493 509 511
-DEAL:: v0.750 0.750 0.00 v1.00 0.750 0.00 v0.750 1.00 0.00 v1.00 1.00 0.00 dofs  451 452 453 467 468 469 483 484 485 499 500 501 489 505 474 506 512
-DEAL:: v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  454 455 456 470 471 472 486 487 488 502 503 504 491 507 476 508 513
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.250 v0.500 0.750 0.250 v0.500 0.500 0.500 v0.500 0.750 0.500 dofs  98 99 100 344 345 346 169 170 171 415 416 417 174 420 349 418 421
-DEAL:: v0.750 0.500 0.250 v0.750 0.750 0.250 v0.750 0.500 0.500 v0.750 0.750 0.500 dofs  234 235 236 454 455 456 295 296 297 515 516 517 300 520 459 518 521
-DEAL:: v0.500 0.500 0.250 v0.500 0.500 0.500 v0.750 0.500 0.250 v0.750 0.500 0.500 dofs  98 99 100 169 170 171 234 235 236 295 296 297 240 299 174 300 302
-DEAL:: v0.500 0.750 0.250 v0.500 0.750 0.500 v0.750 0.750 0.250 v0.750 0.750 0.500 dofs  344 345 346 415 416 417 454 455 456 515 516 517 460 519 420 520 522
-DEAL:: v0.500 0.500 0.250 v0.750 0.500 0.250 v0.500 0.750 0.250 v0.750 0.750 0.250 dofs  98 99 100 234 235 236 344 345 346 454 455 456 349 459 240 460 465
-DEAL:: v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  169 170 171 295 296 297 415 416 417 515 516 517 418 518 299 519 523
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.250 v0.750 0.750 0.250 v0.750 0.500 0.500 v0.750 0.750 0.500 dofs  234 235 236 454 455 456 295 296 297 515 516 517 300 520 459 518 521
-DEAL:: v1.00 0.500 0.250 v1.00 0.750 0.250 v1.00 0.500 0.500 v1.00 0.750 0.500 dofs  250 251 252 470 471 472 305 306 307 525 526 527 310 530 475 528 531
-DEAL:: v0.750 0.500 0.250 v0.750 0.500 0.500 v1.00 0.500 0.250 v1.00 0.500 0.500 dofs  234 235 236 295 296 297 250 251 252 305 306 307 256 309 300 310 312
-DEAL:: v0.750 0.750 0.250 v0.750 0.750 0.500 v1.00 0.750 0.250 v1.00 0.750 0.500 dofs  454 455 456 515 516 517 470 471 472 525 526 527 476 529 520 530 532
-DEAL:: v0.750 0.500 0.250 v1.00 0.500 0.250 v0.750 0.750 0.250 v1.00 0.750 0.250 dofs  234 235 236 250 251 252 454 455 456 470 471 472 459 475 256 476 481
-DEAL:: v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  295 296 297 305 306 307 515 516 517 525 526 527 518 528 309 529 533
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.250 v0.500 1.00 0.250 v0.500 0.750 0.500 v0.500 1.00 0.500 dofs  344 345 346 386 387 388 415 416 417 441 442 443 420 446 391 444 447
-DEAL:: v0.750 0.750 0.250 v0.750 1.00 0.250 v0.750 0.750 0.500 v0.750 1.00 0.500 dofs  454 455 456 486 487 488 515 516 517 535 536 537 520 540 491 538 541
-DEAL:: v0.500 0.750 0.250 v0.500 0.750 0.500 v0.750 0.750 0.250 v0.750 0.750 0.500 dofs  344 345 346 415 416 417 454 455 456 515 516 517 460 519 420 520 522
-DEAL:: v0.500 1.00 0.250 v0.500 1.00 0.500 v0.750 1.00 0.250 v0.750 1.00 0.500 dofs  386 387 388 441 442 443 486 487 488 535 536 537 492 539 446 540 542
-DEAL:: v0.500 0.750 0.250 v0.750 0.750 0.250 v0.500 1.00 0.250 v0.750 1.00 0.250 dofs  344 345 346 454 455 456 386 387 388 486 487 488 391 491 460 492 497
-DEAL:: v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  415 416 417 515 516 517 441 442 443 535 536 537 444 538 519 539 543
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.250 v0.750 1.00 0.250 v0.750 0.750 0.500 v0.750 1.00 0.500 dofs  454 455 456 486 487 488 515 516 517 535 536 537 520 540 491 538 541
-DEAL:: v1.00 0.750 0.250 v1.00 1.00 0.250 v1.00 0.750 0.500 v1.00 1.00 0.500 dofs  470 471 472 502 503 504 525 526 527 545 546 547 530 550 507 548 551
-DEAL:: v0.750 0.750 0.250 v0.750 0.750 0.500 v1.00 0.750 0.250 v1.00 0.750 0.500 dofs  454 455 456 515 516 517 470 471 472 525 526 527 476 529 520 530 532
-DEAL:: v0.750 1.00 0.250 v0.750 1.00 0.500 v1.00 1.00 0.250 v1.00 1.00 0.500 dofs  486 487 488 535 536 537 502 503 504 545 546 547 508 549 540 550 552
-DEAL:: v0.750 0.750 0.250 v1.00 0.750 0.250 v0.750 1.00 0.250 v1.00 1.00 0.250 dofs  454 455 456 470 471 472 486 487 488 502 503 504 491 507 476 508 513
-DEAL:: v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  515 516 517 525 526 527 535 536 537 545 546 547 538 548 529 549 553
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.500 v0.00 0.250 0.500 v0.00 0.00 0.750 v0.00 0.250 0.750 dofs  111 112 113 117 118 119 555 556 557 561 562 563 571 573 123 567 575
-DEAL:: v0.250 0.00 0.500 v0.250 0.250 0.500 v0.250 0.00 0.750 v0.250 0.250 0.750 dofs  114 115 116 120 121 122 558 559 560 564 565 566 572 574 124 568 576
-DEAL:: v0.00 0.00 0.500 v0.00 0.00 0.750 v0.250 0.00 0.500 v0.250 0.00 0.750 dofs  111 112 113 555 556 557 114 115 116 558 559 560 125 569 571 572 577
-DEAL:: v0.00 0.250 0.500 v0.00 0.250 0.750 v0.250 0.250 0.500 v0.250 0.250 0.750 dofs  117 118 119 561 562 563 120 121 122 564 565 566 126 570 573 574 578
-DEAL:: v0.00 0.00 0.500 v0.250 0.00 0.500 v0.00 0.250 0.500 v0.250 0.250 0.500 dofs  111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 135
-DEAL:: v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 579
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.500 v0.250 0.250 0.500 v0.250 0.00 0.750 v0.250 0.250 0.750 dofs  114 115 116 120 121 122 558 559 560 564 565 566 572 574 124 568 576
-DEAL:: v0.500 0.00 0.500 v0.500 0.250 0.500 v0.500 0.00 0.750 v0.500 0.250 0.750 dofs  137 138 139 140 141 142 581 582 583 584 585 586 590 591 143 587 592
-DEAL:: v0.250 0.00 0.500 v0.250 0.00 0.750 v0.500 0.00 0.500 v0.500 0.00 0.750 dofs  114 115 116 558 559 560 137 138 139 581 582 583 144 588 572 590 593
-DEAL:: v0.250 0.250 0.500 v0.250 0.250 0.750 v0.500 0.250 0.500 v0.500 0.250 0.750 dofs  120 121 122 564 565 566 140 141 142 584 585 586 145 589 574 591 594
-DEAL:: v0.250 0.00 0.500 v0.500 0.00 0.500 v0.250 0.250 0.500 v0.500 0.250 0.500 dofs  114 115 116 137 138 139 120 121 122 140 141 142 124 143 144 145 151
-DEAL:: v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  558 559 560 581 582 583 564 565 566 584 585 586 568 587 588 589 595
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.500 v0.00 0.500 0.500 v0.00 0.250 0.750 v0.00 0.500 0.750 dofs  117 118 119 153 154 155 561 562 563 597 598 599 573 606 159 603 608
-DEAL:: v0.250 0.250 0.500 v0.250 0.500 0.500 v0.250 0.250 0.750 v0.250 0.500 0.750 dofs  120 121 122 156 157 158 564 565 566 600 601 602 574 607 160 604 609
-DEAL:: v0.00 0.250 0.500 v0.00 0.250 0.750 v0.250 0.250 0.500 v0.250 0.250 0.750 dofs  117 118 119 561 562 563 120 121 122 564 565 566 126 570 573 574 578
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 0.750 v0.250 0.500 0.500 v0.250 0.500 0.750 dofs  153 154 155 597 598 599 156 157 158 600 601 602 161 605 606 607 610
-DEAL:: v0.00 0.250 0.500 v0.250 0.250 0.500 v0.00 0.500 0.500 v0.250 0.500 0.500 dofs  117 118 119 120 121 122 153 154 155 156 157 158 159 160 126 161 167
-DEAL:: v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  561 562 563 564 565 566 597 598 599 600 601 602 603 604 570 605 611
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.500 v0.250 0.500 0.500 v0.250 0.250 0.750 v0.250 0.500 0.750 dofs  120 121 122 156 157 158 564 565 566 600 601 602 574 607 160 604 609
-DEAL:: v0.500 0.250 0.500 v0.500 0.500 0.500 v0.500 0.250 0.750 v0.500 0.500 0.750 dofs  140 141 142 169 170 171 584 585 586 613 614 615 591 618 172 616 619
-DEAL:: v0.250 0.250 0.500 v0.250 0.250 0.750 v0.500 0.250 0.500 v0.500 0.250 0.750 dofs  120 121 122 564 565 566 140 141 142 584 585 586 145 589 574 591 594
-DEAL:: v0.250 0.500 0.500 v0.250 0.500 0.750 v0.500 0.500 0.500 v0.500 0.500 0.750 dofs  156 157 158 600 601 602 169 170 171 613 614 615 173 617 607 618 620
-DEAL:: v0.250 0.250 0.500 v0.500 0.250 0.500 v0.250 0.500 0.500 v0.500 0.500 0.500 dofs  120 121 122 140 141 142 156 157 158 169 170 171 160 172 145 173 177
-DEAL:: v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  564 565 566 584 585 586 600 601 602 613 614 615 604 616 589 617 621
-DEAL::Level 2
-DEAL:: v0.00 0.00 0.750 v0.00 0.250 0.750 v0.00 0.00 1.00 v0.00 0.250 1.00 dofs  555 556 557 561 562 563 623 624 625 629 630 631 639 641 567 635 643
-DEAL:: v0.250 0.00 0.750 v0.250 0.250 0.750 v0.250 0.00 1.00 v0.250 0.250 1.00 dofs  558 559 560 564 565 566 626 627 628 632 633 634 640 642 568 636 644
-DEAL:: v0.00 0.00 0.750 v0.00 0.00 1.00 v0.250 0.00 0.750 v0.250 0.00 1.00 dofs  555 556 557 623 624 625 558 559 560 626 627 628 569 637 639 640 645
-DEAL:: v0.00 0.250 0.750 v0.00 0.250 1.00 v0.250 0.250 0.750 v0.250 0.250 1.00 dofs  561 562 563 629 630 631 564 565 566 632 633 634 570 638 641 642 646
-DEAL:: v0.00 0.00 0.750 v0.250 0.00 0.750 v0.00 0.250 0.750 v0.250 0.250 0.750 dofs  555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 579
-DEAL:: v0.00 0.00 1.00 v0.250 0.00 1.00 v0.00 0.250 1.00 v0.250 0.250 1.00 dofs  623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 647
-DEAL::Level 2
-DEAL:: v0.250 0.00 0.750 v0.250 0.250 0.750 v0.250 0.00 1.00 v0.250 0.250 1.00 dofs  558 559 560 564 565 566 626 627 628 632 633 634 640 642 568 636 644
-DEAL:: v0.500 0.00 0.750 v0.500 0.250 0.750 v0.500 0.00 1.00 v0.500 0.250 1.00 dofs  581 582 583 584 585 586 649 650 651 652 653 654 658 659 587 655 660
-DEAL:: v0.250 0.00 0.750 v0.250 0.00 1.00 v0.500 0.00 0.750 v0.500 0.00 1.00 dofs  558 559 560 626 627 628 581 582 583 649 650 651 588 656 640 658 661
-DEAL:: v0.250 0.250 0.750 v0.250 0.250 1.00 v0.500 0.250 0.750 v0.500 0.250 1.00 dofs  564 565 566 632 633 634 584 585 586 652 653 654 589 657 642 659 662
-DEAL:: v0.250 0.00 0.750 v0.500 0.00 0.750 v0.250 0.250 0.750 v0.500 0.250 0.750 dofs  558 559 560 581 582 583 564 565 566 584 585 586 568 587 588 589 595
-DEAL:: v0.250 0.00 1.00 v0.500 0.00 1.00 v0.250 0.250 1.00 v0.500 0.250 1.00 dofs  626 627 628 649 650 651 632 633 634 652 653 654 636 655 656 657 663
-DEAL::Level 2
-DEAL:: v0.00 0.250 0.750 v0.00 0.500 0.750 v0.00 0.250 1.00 v0.00 0.500 1.00 dofs  561 562 563 597 598 599 629 630 631 665 666 667 641 674 603 671 676
-DEAL:: v0.250 0.250 0.750 v0.250 0.500 0.750 v0.250 0.250 1.00 v0.250 0.500 1.00 dofs  564 565 566 600 601 602 632 633 634 668 669 670 642 675 604 672 677
-DEAL:: v0.00 0.250 0.750 v0.00 0.250 1.00 v0.250 0.250 0.750 v0.250 0.250 1.00 dofs  561 562 563 629 630 631 564 565 566 632 633 634 570 638 641 642 646
-DEAL:: v0.00 0.500 0.750 v0.00 0.500 1.00 v0.250 0.500 0.750 v0.250 0.500 1.00 dofs  597 598 599 665 666 667 600 601 602 668 669 670 605 673 674 675 678
-DEAL:: v0.00 0.250 0.750 v0.250 0.250 0.750 v0.00 0.500 0.750 v0.250 0.500 0.750 dofs  561 562 563 564 565 566 597 598 599 600 601 602 603 604 570 605 611
-DEAL:: v0.00 0.250 1.00 v0.250 0.250 1.00 v0.00 0.500 1.00 v0.250 0.500 1.00 dofs  629 630 631 632 633 634 665 666 667 668 669 670 671 672 638 673 679
-DEAL::Level 2
-DEAL:: v0.250 0.250 0.750 v0.250 0.500 0.750 v0.250 0.250 1.00 v0.250 0.500 1.00 dofs  564 565 566 600 601 602 632 633 634 668 669 670 642 675 604 672 677
-DEAL:: v0.500 0.250 0.750 v0.500 0.500 0.750 v0.500 0.250 1.00 v0.500 0.500 1.00 dofs  584 585 586 613 614 615 652 653 654 681 682 683 659 686 616 684 687
-DEAL:: v0.250 0.250 0.750 v0.250 0.250 1.00 v0.500 0.250 0.750 v0.500 0.250 1.00 dofs  564 565 566 632 633 634 584 585 586 652 653 654 589 657 642 659 662
-DEAL:: v0.250 0.500 0.750 v0.250 0.500 1.00 v0.500 0.500 0.750 v0.500 0.500 1.00 dofs  600 601 602 668 669 670 613 614 615 681 682 683 617 685 675 686 688
-DEAL:: v0.250 0.250 0.750 v0.500 0.250 0.750 v0.250 0.500 0.750 v0.500 0.500 0.750 dofs  564 565 566 584 585 586 600 601 602 613 614 615 604 616 589 617 621
-DEAL:: v0.250 0.250 1.00 v0.500 0.250 1.00 v0.250 0.500 1.00 v0.500 0.500 1.00 dofs  632 633 634 652 653 654 668 669 670 681 682 683 672 684 657 685 689
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.500 v0.500 0.250 0.500 v0.500 0.00 0.750 v0.500 0.250 0.750 dofs  137 138 139 140 141 142 581 582 583 584 585 586 590 591 143 587 592
-DEAL:: v0.750 0.00 0.500 v0.750 0.250 0.500 v0.750 0.00 0.750 v0.750 0.250 0.750 dofs  263 264 265 266 267 268 691 692 693 694 695 696 700 701 269 697 702
-DEAL:: v0.500 0.00 0.500 v0.500 0.00 0.750 v0.750 0.00 0.500 v0.750 0.00 0.750 dofs  137 138 139 581 582 583 263 264 265 691 692 693 270 698 590 700 703
-DEAL:: v0.500 0.250 0.500 v0.500 0.250 0.750 v0.750 0.250 0.500 v0.750 0.250 0.750 dofs  140 141 142 584 585 586 266 267 268 694 695 696 271 699 591 701 704
-DEAL:: v0.500 0.00 0.500 v0.750 0.00 0.500 v0.500 0.250 0.500 v0.750 0.250 0.500 dofs  137 138 139 263 264 265 140 141 142 266 267 268 143 269 270 271 277
-DEAL:: v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  581 582 583 691 692 693 584 585 586 694 695 696 587 697 698 699 705
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.500 v0.750 0.250 0.500 v0.750 0.00 0.750 v0.750 0.250 0.750 dofs  263 264 265 266 267 268 691 692 693 694 695 696 700 701 269 697 702
-DEAL:: v1.00 0.00 0.500 v1.00 0.250 0.500 v1.00 0.00 0.750 v1.00 0.250 0.750 dofs  279 280 281 282 283 284 707 708 709 710 711 712 716 717 285 713 718
-DEAL:: v0.750 0.00 0.500 v0.750 0.00 0.750 v1.00 0.00 0.500 v1.00 0.00 0.750 dofs  263 264 265 691 692 693 279 280 281 707 708 709 286 714 700 716 719
-DEAL:: v0.750 0.250 0.500 v0.750 0.250 0.750 v1.00 0.250 0.500 v1.00 0.250 0.750 dofs  266 267 268 694 695 696 282 283 284 710 711 712 287 715 701 717 720
-DEAL:: v0.750 0.00 0.500 v1.00 0.00 0.500 v0.750 0.250 0.500 v1.00 0.250 0.500 dofs  263 264 265 279 280 281 266 267 268 282 283 284 269 285 286 287 293
-DEAL:: v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  691 692 693 707 708 709 694 695 696 710 711 712 697 713 714 715 721
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.500 v0.500 0.500 0.500 v0.500 0.250 0.750 v0.500 0.500 0.750 dofs  140 141 142 169 170 171 584 585 586 613 614 615 591 618 172 616 619
-DEAL:: v0.750 0.250 0.500 v0.750 0.500 0.500 v0.750 0.250 0.750 v0.750 0.500 0.750 dofs  266 267 268 295 296 297 694 695 696 723 724 725 701 728 298 726 729
-DEAL:: v0.500 0.250 0.500 v0.500 0.250 0.750 v0.750 0.250 0.500 v0.750 0.250 0.750 dofs  140 141 142 584 585 586 266 267 268 694 695 696 271 699 591 701 704
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 0.750 v0.750 0.500 0.500 v0.750 0.500 0.750 dofs  169 170 171 613 614 615 295 296 297 723 724 725 299 727 618 728 730
-DEAL:: v0.500 0.250 0.500 v0.750 0.250 0.500 v0.500 0.500 0.500 v0.750 0.500 0.500 dofs  140 141 142 266 267 268 169 170 171 295 296 297 172 298 271 299 303
-DEAL:: v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  584 585 586 694 695 696 613 614 615 723 724 725 616 726 699 727 731
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.500 v0.750 0.500 0.500 v0.750 0.250 0.750 v0.750 0.500 0.750 dofs  266 267 268 295 296 297 694 695 696 723 724 725 701 728 298 726 729
-DEAL:: v1.00 0.250 0.500 v1.00 0.500 0.500 v1.00 0.250 0.750 v1.00 0.500 0.750 dofs  282 283 284 305 306 307 710 711 712 733 734 735 717 738 308 736 739
-DEAL:: v0.750 0.250 0.500 v0.750 0.250 0.750 v1.00 0.250 0.500 v1.00 0.250 0.750 dofs  266 267 268 694 695 696 282 283 284 710 711 712 287 715 701 717 720
-DEAL:: v0.750 0.500 0.500 v0.750 0.500 0.750 v1.00 0.500 0.500 v1.00 0.500 0.750 dofs  295 296 297 723 724 725 305 306 307 733 734 735 309 737 728 738 740
-DEAL:: v0.750 0.250 0.500 v1.00 0.250 0.500 v0.750 0.500 0.500 v1.00 0.500 0.500 dofs  266 267 268 282 283 284 295 296 297 305 306 307 298 308 287 309 313
-DEAL:: v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  694 695 696 710 711 712 723 724 725 733 734 735 726 736 715 737 741
-DEAL::Level 2
-DEAL:: v0.500 0.00 0.750 v0.500 0.250 0.750 v0.500 0.00 1.00 v0.500 0.250 1.00 dofs  581 582 583 584 585 586 649 650 651 652 653 654 658 659 587 655 660
-DEAL:: v0.750 0.00 0.750 v0.750 0.250 0.750 v0.750 0.00 1.00 v0.750 0.250 1.00 dofs  691 692 693 694 695 696 743 744 745 746 747 748 752 753 697 749 754
-DEAL:: v0.500 0.00 0.750 v0.500 0.00 1.00 v0.750 0.00 0.750 v0.750 0.00 1.00 dofs  581 582 583 649 650 651 691 692 693 743 744 745 698 750 658 752 755
-DEAL:: v0.500 0.250 0.750 v0.500 0.250 1.00 v0.750 0.250 0.750 v0.750 0.250 1.00 dofs  584 585 586 652 653 654 694 695 696 746 747 748 699 751 659 753 756
-DEAL:: v0.500 0.00 0.750 v0.750 0.00 0.750 v0.500 0.250 0.750 v0.750 0.250 0.750 dofs  581 582 583 691 692 693 584 585 586 694 695 696 587 697 698 699 705
-DEAL:: v0.500 0.00 1.00 v0.750 0.00 1.00 v0.500 0.250 1.00 v0.750 0.250 1.00 dofs  649 650 651 743 744 745 652 653 654 746 747 748 655 749 750 751 757
-DEAL::Level 2
-DEAL:: v0.750 0.00 0.750 v0.750 0.250 0.750 v0.750 0.00 1.00 v0.750 0.250 1.00 dofs  691 692 693 694 695 696 743 744 745 746 747 748 752 753 697 749 754
-DEAL:: v1.00 0.00 0.750 v1.00 0.250 0.750 v1.00 0.00 1.00 v1.00 0.250 1.00 dofs  707 708 709 710 711 712 759 760 761 762 763 764 768 769 713 765 770
-DEAL:: v0.750 0.00 0.750 v0.750 0.00 1.00 v1.00 0.00 0.750 v1.00 0.00 1.00 dofs  691 692 693 743 744 745 707 708 709 759 760 761 714 766 752 768 771
-DEAL:: v0.750 0.250 0.750 v0.750 0.250 1.00 v1.00 0.250 0.750 v1.00 0.250 1.00 dofs  694 695 696 746 747 748 710 711 712 762 763 764 715 767 753 769 772
-DEAL:: v0.750 0.00 0.750 v1.00 0.00 0.750 v0.750 0.250 0.750 v1.00 0.250 0.750 dofs  691 692 693 707 708 709 694 695 696 710 711 712 697 713 714 715 721
-DEAL:: v0.750 0.00 1.00 v1.00 0.00 1.00 v0.750 0.250 1.00 v1.00 0.250 1.00 dofs  743 744 745 759 760 761 746 747 748 762 763 764 749 765 766 767 773
-DEAL::Level 2
-DEAL:: v0.500 0.250 0.750 v0.500 0.500 0.750 v0.500 0.250 1.00 v0.500 0.500 1.00 dofs  584 585 586 613 614 615 652 653 654 681 682 683 659 686 616 684 687
-DEAL:: v0.750 0.250 0.750 v0.750 0.500 0.750 v0.750 0.250 1.00 v0.750 0.500 1.00 dofs  694 695 696 723 724 725 746 747 748 775 776 777 753 780 726 778 781
-DEAL:: v0.500 0.250 0.750 v0.500 0.250 1.00 v0.750 0.250 0.750 v0.750 0.250 1.00 dofs  584 585 586 652 653 654 694 695 696 746 747 748 699 751 659 753 756
-DEAL:: v0.500 0.500 0.750 v0.500 0.500 1.00 v0.750 0.500 0.750 v0.750 0.500 1.00 dofs  613 614 615 681 682 683 723 724 725 775 776 777 727 779 686 780 782
-DEAL:: v0.500 0.250 0.750 v0.750 0.250 0.750 v0.500 0.500 0.750 v0.750 0.500 0.750 dofs  584 585 586 694 695 696 613 614 615 723 724 725 616 726 699 727 731
-DEAL:: v0.500 0.250 1.00 v0.750 0.250 1.00 v0.500 0.500 1.00 v0.750 0.500 1.00 dofs  652 653 654 746 747 748 681 682 683 775 776 777 684 778 751 779 783
-DEAL::Level 2
-DEAL:: v0.750 0.250 0.750 v0.750 0.500 0.750 v0.750 0.250 1.00 v0.750 0.500 1.00 dofs  694 695 696 723 724 725 746 747 748 775 776 777 753 780 726 778 781
-DEAL:: v1.00 0.250 0.750 v1.00 0.500 0.750 v1.00 0.250 1.00 v1.00 0.500 1.00 dofs  710 711 712 733 734 735 762 763 764 785 786 787 769 790 736 788 791
-DEAL:: v0.750 0.250 0.750 v0.750 0.250 1.00 v1.00 0.250 0.750 v1.00 0.250 1.00 dofs  694 695 696 746 747 748 710 711 712 762 763 764 715 767 753 769 772
-DEAL:: v0.750 0.500 0.750 v0.750 0.500 1.00 v1.00 0.500 0.750 v1.00 0.500 1.00 dofs  723 724 725 775 776 777 733 734 735 785 786 787 737 789 780 790 792
-DEAL:: v0.750 0.250 0.750 v1.00 0.250 0.750 v0.750 0.500 0.750 v1.00 0.500 0.750 dofs  694 695 696 710 711 712 723 724 725 733 734 735 726 736 715 737 741
-DEAL:: v0.750 0.250 1.00 v1.00 0.250 1.00 v0.750 0.500 1.00 v1.00 0.500 1.00 dofs  746 747 748 762 763 764 775 776 777 785 786 787 778 788 767 789 793
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.500 v0.00 0.750 0.500 v0.00 0.500 0.750 v0.00 0.750 0.750 dofs  153 154 155 399 400 401 597 598 599 795 796 797 606 804 405 801 806
-DEAL:: v0.250 0.500 0.500 v0.250 0.750 0.500 v0.250 0.500 0.750 v0.250 0.750 0.750 dofs  156 157 158 402 403 404 600 601 602 798 799 800 607 805 406 802 807
-DEAL:: v0.00 0.500 0.500 v0.00 0.500 0.750 v0.250 0.500 0.500 v0.250 0.500 0.750 dofs  153 154 155 597 598 599 156 157 158 600 601 602 161 605 606 607 610
-DEAL:: v0.00 0.750 0.500 v0.00 0.750 0.750 v0.250 0.750 0.500 v0.250 0.750 0.750 dofs  399 400 401 795 796 797 402 403 404 798 799 800 407 803 804 805 808
-DEAL:: v0.00 0.500 0.500 v0.250 0.500 0.500 v0.00 0.750 0.500 v0.250 0.750 0.500 dofs  153 154 155 156 157 158 399 400 401 402 403 404 405 406 161 407 413
-DEAL:: v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  597 598 599 600 601 602 795 796 797 798 799 800 801 802 605 803 809
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.500 v0.250 0.750 0.500 v0.250 0.500 0.750 v0.250 0.750 0.750 dofs  156 157 158 402 403 404 600 601 602 798 799 800 607 805 406 802 807
-DEAL:: v0.500 0.500 0.500 v0.500 0.750 0.500 v0.500 0.500 0.750 v0.500 0.750 0.750 dofs  169 170 171 415 416 417 613 614 615 811 812 813 618 816 418 814 817
-DEAL:: v0.250 0.500 0.500 v0.250 0.500 0.750 v0.500 0.500 0.500 v0.500 0.500 0.750 dofs  156 157 158 600 601 602 169 170 171 613 614 615 173 617 607 618 620
-DEAL:: v0.250 0.750 0.500 v0.250 0.750 0.750 v0.500 0.750 0.500 v0.500 0.750 0.750 dofs  402 403 404 798 799 800 415 416 417 811 812 813 419 815 805 816 818
-DEAL:: v0.250 0.500 0.500 v0.500 0.500 0.500 v0.250 0.750 0.500 v0.500 0.750 0.500 dofs  156 157 158 169 170 171 402 403 404 415 416 417 406 418 173 419 423
-DEAL:: v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  600 601 602 613 614 615 798 799 800 811 812 813 802 814 617 815 819
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.500 v0.00 1.00 0.500 v0.00 0.750 0.750 v0.00 1.00 0.750 dofs  399 400 401 425 426 427 795 796 797 821 822 823 804 830 431 827 832
-DEAL:: v0.250 0.750 0.500 v0.250 1.00 0.500 v0.250 0.750 0.750 v0.250 1.00 0.750 dofs  402 403 404 428 429 430 798 799 800 824 825 826 805 831 432 828 833
-DEAL:: v0.00 0.750 0.500 v0.00 0.750 0.750 v0.250 0.750 0.500 v0.250 0.750 0.750 dofs  399 400 401 795 796 797 402 403 404 798 799 800 407 803 804 805 808
-DEAL:: v0.00 1.00 0.500 v0.00 1.00 0.750 v0.250 1.00 0.500 v0.250 1.00 0.750 dofs  425 426 427 821 822 823 428 429 430 824 825 826 433 829 830 831 834
-DEAL:: v0.00 0.750 0.500 v0.250 0.750 0.500 v0.00 1.00 0.500 v0.250 1.00 0.500 dofs  399 400 401 402 403 404 425 426 427 428 429 430 431 432 407 433 439
-DEAL:: v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  795 796 797 798 799 800 821 822 823 824 825 826 827 828 803 829 835
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.500 v0.250 1.00 0.500 v0.250 0.750 0.750 v0.250 1.00 0.750 dofs  402 403 404 428 429 430 798 799 800 824 825 826 805 831 432 828 833
-DEAL:: v0.500 0.750 0.500 v0.500 1.00 0.500 v0.500 0.750 0.750 v0.500 1.00 0.750 dofs  415 416 417 441 442 443 811 812 813 837 838 839 816 842 444 840 843
-DEAL:: v0.250 0.750 0.500 v0.250 0.750 0.750 v0.500 0.750 0.500 v0.500 0.750 0.750 dofs  402 403 404 798 799 800 415 416 417 811 812 813 419 815 805 816 818
-DEAL:: v0.250 1.00 0.500 v0.250 1.00 0.750 v0.500 1.00 0.500 v0.500 1.00 0.750 dofs  428 429 430 824 825 826 441 442 443 837 838 839 445 841 831 842 844
-DEAL:: v0.250 0.750 0.500 v0.500 0.750 0.500 v0.250 1.00 0.500 v0.500 1.00 0.500 dofs  402 403 404 415 416 417 428 429 430 441 442 443 432 444 419 445 449
-DEAL:: v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  798 799 800 811 812 813 824 825 826 837 838 839 828 840 815 841 845
-DEAL::Level 2
-DEAL:: v0.00 0.500 0.750 v0.00 0.750 0.750 v0.00 0.500 1.00 v0.00 0.750 1.00 dofs  597 598 599 795 796 797 665 666 667 847 848 849 674 856 801 853 858
-DEAL:: v0.250 0.500 0.750 v0.250 0.750 0.750 v0.250 0.500 1.00 v0.250 0.750 1.00 dofs  600 601 602 798 799 800 668 669 670 850 851 852 675 857 802 854 859
-DEAL:: v0.00 0.500 0.750 v0.00 0.500 1.00 v0.250 0.500 0.750 v0.250 0.500 1.00 dofs  597 598 599 665 666 667 600 601 602 668 669 670 605 673 674 675 678
-DEAL:: v0.00 0.750 0.750 v0.00 0.750 1.00 v0.250 0.750 0.750 v0.250 0.750 1.00 dofs  795 796 797 847 848 849 798 799 800 850 851 852 803 855 856 857 860
-DEAL:: v0.00 0.500 0.750 v0.250 0.500 0.750 v0.00 0.750 0.750 v0.250 0.750 0.750 dofs  597 598 599 600 601 602 795 796 797 798 799 800 801 802 605 803 809
-DEAL:: v0.00 0.500 1.00 v0.250 0.500 1.00 v0.00 0.750 1.00 v0.250 0.750 1.00 dofs  665 666 667 668 669 670 847 848 849 850 851 852 853 854 673 855 861
-DEAL::Level 2
-DEAL:: v0.250 0.500 0.750 v0.250 0.750 0.750 v0.250 0.500 1.00 v0.250 0.750 1.00 dofs  600 601 602 798 799 800 668 669 670 850 851 852 675 857 802 854 859
-DEAL:: v0.500 0.500 0.750 v0.500 0.750 0.750 v0.500 0.500 1.00 v0.500 0.750 1.00 dofs  613 614 615 811 812 813 681 682 683 863 864 865 686 868 814 866 869
-DEAL:: v0.250 0.500 0.750 v0.250 0.500 1.00 v0.500 0.500 0.750 v0.500 0.500 1.00 dofs  600 601 602 668 669 670 613 614 615 681 682 683 617 685 675 686 688
-DEAL:: v0.250 0.750 0.750 v0.250 0.750 1.00 v0.500 0.750 0.750 v0.500 0.750 1.00 dofs  798 799 800 850 851 852 811 812 813 863 864 865 815 867 857 868 870
-DEAL:: v0.250 0.500 0.750 v0.500 0.500 0.750 v0.250 0.750 0.750 v0.500 0.750 0.750 dofs  600 601 602 613 614 615 798 799 800 811 812 813 802 814 617 815 819
-DEAL:: v0.250 0.500 1.00 v0.500 0.500 1.00 v0.250 0.750 1.00 v0.500 0.750 1.00 dofs  668 669 670 681 682 683 850 851 852 863 864 865 854 866 685 867 871
-DEAL::Level 2
-DEAL:: v0.00 0.750 0.750 v0.00 1.00 0.750 v0.00 0.750 1.00 v0.00 1.00 1.00 dofs  795 796 797 821 822 823 847 848 849 873 874 875 856 882 827 879 884
-DEAL:: v0.250 0.750 0.750 v0.250 1.00 0.750 v0.250 0.750 1.00 v0.250 1.00 1.00 dofs  798 799 800 824 825 826 850 851 852 876 877 878 857 883 828 880 885
-DEAL:: v0.00 0.750 0.750 v0.00 0.750 1.00 v0.250 0.750 0.750 v0.250 0.750 1.00 dofs  795 796 797 847 848 849 798 799 800 850 851 852 803 855 856 857 860
-DEAL:: v0.00 1.00 0.750 v0.00 1.00 1.00 v0.250 1.00 0.750 v0.250 1.00 1.00 dofs  821 822 823 873 874 875 824 825 826 876 877 878 829 881 882 883 886
-DEAL:: v0.00 0.750 0.750 v0.250 0.750 0.750 v0.00 1.00 0.750 v0.250 1.00 0.750 dofs  795 796 797 798 799 800 821 822 823 824 825 826 827 828 803 829 835
-DEAL:: v0.00 0.750 1.00 v0.250 0.750 1.00 v0.00 1.00 1.00 v0.250 1.00 1.00 dofs  847 848 849 850 851 852 873 874 875 876 877 878 879 880 855 881 887
-DEAL::Level 2
-DEAL:: v0.250 0.750 0.750 v0.250 1.00 0.750 v0.250 0.750 1.00 v0.250 1.00 1.00 dofs  798 799 800 824 825 826 850 851 852 876 877 878 857 883 828 880 885
-DEAL:: v0.500 0.750 0.750 v0.500 1.00 0.750 v0.500 0.750 1.00 v0.500 1.00 1.00 dofs  811 812 813 837 838 839 863 864 865 889 890 891 868 894 840 892 895
-DEAL:: v0.250 0.750 0.750 v0.250 0.750 1.00 v0.500 0.750 0.750 v0.500 0.750 1.00 dofs  798 799 800 850 851 852 811 812 813 863 864 865 815 867 857 868 870
-DEAL:: v0.250 1.00 0.750 v0.250 1.00 1.00 v0.500 1.00 0.750 v0.500 1.00 1.00 dofs  824 825 826 876 877 878 837 838 839 889 890 891 841 893 883 894 896
-DEAL:: v0.250 0.750 0.750 v0.500 0.750 0.750 v0.250 1.00 0.750 v0.500 1.00 0.750 dofs  798 799 800 811 812 813 824 825 826 837 838 839 828 840 815 841 845
-DEAL:: v0.250 0.750 1.00 v0.500 0.750 1.00 v0.250 1.00 1.00 v0.500 1.00 1.00 dofs  850 851 852 863 864 865 876 877 878 889 890 891 880 892 867 893 897
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.500 v0.500 0.750 0.500 v0.500 0.500 0.750 v0.500 0.750 0.750 dofs  169 170 171 415 416 417 613 614 615 811 812 813 618 816 418 814 817
-DEAL:: v0.750 0.500 0.500 v0.750 0.750 0.500 v0.750 0.500 0.750 v0.750 0.750 0.750 dofs  295 296 297 515 516 517 723 724 725 899 900 901 728 904 518 902 905
-DEAL:: v0.500 0.500 0.500 v0.500 0.500 0.750 v0.750 0.500 0.500 v0.750 0.500 0.750 dofs  169 170 171 613 614 615 295 296 297 723 724 725 299 727 618 728 730
-DEAL:: v0.500 0.750 0.500 v0.500 0.750 0.750 v0.750 0.750 0.500 v0.750 0.750 0.750 dofs  415 416 417 811 812 813 515 516 517 899 900 901 519 903 816 904 906
-DEAL:: v0.500 0.500 0.500 v0.750 0.500 0.500 v0.500 0.750 0.500 v0.750 0.750 0.500 dofs  169 170 171 295 296 297 415 416 417 515 516 517 418 518 299 519 523
-DEAL:: v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  613 614 615 723 724 725 811 812 813 899 900 901 814 902 727 903 907
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.500 v0.750 0.750 0.500 v0.750 0.500 0.750 v0.750 0.750 0.750 dofs  295 296 297 515 516 517 723 724 725 899 900 901 728 904 518 902 905
-DEAL:: v1.00 0.500 0.500 v1.00 0.750 0.500 v1.00 0.500 0.750 v1.00 0.750 0.750 dofs  305 306 307 525 526 527 733 734 735 909 910 911 738 914 528 912 915
-DEAL:: v0.750 0.500 0.500 v0.750 0.500 0.750 v1.00 0.500 0.500 v1.00 0.500 0.750 dofs  295 296 297 723 724 725 305 306 307 733 734 735 309 737 728 738 740
-DEAL:: v0.750 0.750 0.500 v0.750 0.750 0.750 v1.00 0.750 0.500 v1.00 0.750 0.750 dofs  515 516 517 899 900 901 525 526 527 909 910 911 529 913 904 914 916
-DEAL:: v0.750 0.500 0.500 v1.00 0.500 0.500 v0.750 0.750 0.500 v1.00 0.750 0.500 dofs  295 296 297 305 306 307 515 516 517 525 526 527 518 528 309 529 533
-DEAL:: v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  723 724 725 733 734 735 899 900 901 909 910 911 902 912 737 913 917
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.500 v0.500 1.00 0.500 v0.500 0.750 0.750 v0.500 1.00 0.750 dofs  415 416 417 441 442 443 811 812 813 837 838 839 816 842 444 840 843
-DEAL:: v0.750 0.750 0.500 v0.750 1.00 0.500 v0.750 0.750 0.750 v0.750 1.00 0.750 dofs  515 516 517 535 536 537 899 900 901 919 920 921 904 924 538 922 925
-DEAL:: v0.500 0.750 0.500 v0.500 0.750 0.750 v0.750 0.750 0.500 v0.750 0.750 0.750 dofs  415 416 417 811 812 813 515 516 517 899 900 901 519 903 816 904 906
-DEAL:: v0.500 1.00 0.500 v0.500 1.00 0.750 v0.750 1.00 0.500 v0.750 1.00 0.750 dofs  441 442 443 837 838 839 535 536 537 919 920 921 539 923 842 924 926
-DEAL:: v0.500 0.750 0.500 v0.750 0.750 0.500 v0.500 1.00 0.500 v0.750 1.00 0.500 dofs  415 416 417 515 516 517 441 442 443 535 536 537 444 538 519 539 543
-DEAL:: v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  811 812 813 899 900 901 837 838 839 919 920 921 840 922 903 923 927
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.500 v0.750 1.00 0.500 v0.750 0.750 0.750 v0.750 1.00 0.750 dofs  515 516 517 535 536 537 899 900 901 919 920 921 904 924 538 922 925
-DEAL:: v1.00 0.750 0.500 v1.00 1.00 0.500 v1.00 0.750 0.750 v1.00 1.00 0.750 dofs  525 526 527 545 546 547 909 910 911 929 930 931 914 934 548 932 935
-DEAL:: v0.750 0.750 0.500 v0.750 0.750 0.750 v1.00 0.750 0.500 v1.00 0.750 0.750 dofs  515 516 517 899 900 901 525 526 527 909 910 911 529 913 904 914 916
-DEAL:: v0.750 1.00 0.500 v0.750 1.00 0.750 v1.00 1.00 0.500 v1.00 1.00 0.750 dofs  535 536 537 919 920 921 545 546 547 929 930 931 549 933 924 934 936
-DEAL:: v0.750 0.750 0.500 v1.00 0.750 0.500 v0.750 1.00 0.500 v1.00 1.00 0.500 dofs  515 516 517 525 526 527 535 536 537 545 546 547 538 548 529 549 553
-DEAL:: v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  899 900 901 909 910 911 919 920 921 929 930 931 922 932 913 933 937
-DEAL::Level 2
-DEAL:: v0.500 0.500 0.750 v0.500 0.750 0.750 v0.500 0.500 1.00 v0.500 0.750 1.00 dofs  613 614 615 811 812 813 681 682 683 863 864 865 686 868 814 866 869
-DEAL:: v0.750 0.500 0.750 v0.750 0.750 0.750 v0.750 0.500 1.00 v0.750 0.750 1.00 dofs  723 724 725 899 900 901 775 776 777 939 940 941 780 944 902 942 945
-DEAL:: v0.500 0.500 0.750 v0.500 0.500 1.00 v0.750 0.500 0.750 v0.750 0.500 1.00 dofs  613 614 615 681 682 683 723 724 725 775 776 777 727 779 686 780 782
-DEAL:: v0.500 0.750 0.750 v0.500 0.750 1.00 v0.750 0.750 0.750 v0.750 0.750 1.00 dofs  811 812 813 863 864 865 899 900 901 939 940 941 903 943 868 944 946
-DEAL:: v0.500 0.500 0.750 v0.750 0.500 0.750 v0.500 0.750 0.750 v0.750 0.750 0.750 dofs  613 614 615 723 724 725 811 812 813 899 900 901 814 902 727 903 907
-DEAL:: v0.500 0.500 1.00 v0.750 0.500 1.00 v0.500 0.750 1.00 v0.750 0.750 1.00 dofs  681 682 683 775 776 777 863 864 865 939 940 941 866 942 779 943 947
-DEAL::Level 2
-DEAL:: v0.750 0.500 0.750 v0.750 0.750 0.750 v0.750 0.500 1.00 v0.750 0.750 1.00 dofs  723 724 725 899 900 901 775 776 777 939 940 941 780 944 902 942 945
-DEAL:: v1.00 0.500 0.750 v1.00 0.750 0.750 v1.00 0.500 1.00 v1.00 0.750 1.00 dofs  733 734 735 909 910 911 785 786 787 949 950 951 790 954 912 952 955
-DEAL:: v0.750 0.500 0.750 v0.750 0.500 1.00 v1.00 0.500 0.750 v1.00 0.500 1.00 dofs  723 724 725 775 776 777 733 734 735 785 786 787 737 789 780 790 792
-DEAL:: v0.750 0.750 0.750 v0.750 0.750 1.00 v1.00 0.750 0.750 v1.00 0.750 1.00 dofs  899 900 901 939 940 941 909 910 911 949 950 951 913 953 944 954 956
-DEAL:: v0.750 0.500 0.750 v1.00 0.500 0.750 v0.750 0.750 0.750 v1.00 0.750 0.750 dofs  723 724 725 733 734 735 899 900 901 909 910 911 902 912 737 913 917
-DEAL:: v0.750 0.500 1.00 v1.00 0.500 1.00 v0.750 0.750 1.00 v1.00 0.750 1.00 dofs  775 776 777 785 786 787 939 940 941 949 950 951 942 952 789 953 957
-DEAL::Level 2
-DEAL:: v0.500 0.750 0.750 v0.500 1.00 0.750 v0.500 0.750 1.00 v0.500 1.00 1.00 dofs  811 812 813 837 838 839 863 864 865 889 890 891 868 894 840 892 895
-DEAL:: v0.750 0.750 0.750 v0.750 1.00 0.750 v0.750 0.750 1.00 v0.750 1.00 1.00 dofs  899 900 901 919 920 921 939 940 941 959 960 961 944 964 922 962 965
-DEAL:: v0.500 0.750 0.750 v0.500 0.750 1.00 v0.750 0.750 0.750 v0.750 0.750 1.00 dofs  811 812 813 863 864 865 899 900 901 939 940 941 903 943 868 944 946
-DEAL:: v0.500 1.00 0.750 v0.500 1.00 1.00 v0.750 1.00 0.750 v0.750 1.00 1.00 dofs  837 838 839 889 890 891 919 920 921 959 960 961 923 963 894 964 966
-DEAL:: v0.500 0.750 0.750 v0.750 0.750 0.750 v0.500 1.00 0.750 v0.750 1.00 0.750 dofs  811 812 813 899 900 901 837 838 839 919 920 921 840 922 903 923 927
-DEAL:: v0.500 0.750 1.00 v0.750 0.750 1.00 v0.500 1.00 1.00 v0.750 1.00 1.00 dofs  863 864 865 939 940 941 889 890 891 959 960 961 892 962 943 963 967
-DEAL::Level 2
-DEAL:: v0.750 0.750 0.750 v0.750 1.00 0.750 v0.750 0.750 1.00 v0.750 1.00 1.00 dofs  899 900 901 919 920 921 939 940 941 959 960 961 944 964 922 962 965
-DEAL:: v1.00 0.750 0.750 v1.00 1.00 0.750 v1.00 0.750 1.00 v1.00 1.00 1.00 dofs  909 910 911 929 930 931 949 950 951 969 970 971 954 974 932 972 975
-DEAL:: v0.750 0.750 0.750 v0.750 0.750 1.00 v1.00 0.750 0.750 v1.00 0.750 1.00 dofs  899 900 901 939 940 941 909 910 911 949 950 951 913 953 944 954 956
-DEAL:: v0.750 1.00 0.750 v0.750 1.00 1.00 v1.00 1.00 0.750 v1.00 1.00 1.00 dofs  919 920 921 959 960 961 929 930 931 969 970 971 933 973 964 974 976
-DEAL:: v0.750 0.750 0.750 v1.00 0.750 0.750 v0.750 1.00 0.750 v1.00 1.00 0.750 dofs  899 900 901 909 910 911 919 920 921 929 930 931 922 932 913 933 937
-DEAL:: v0.750 0.750 1.00 v1.00 0.750 1.00 v0.750 1.00 1.00 v1.00 1.00 1.00 dofs  939 940 941 949 950 951 959 960 961 969 970 971 962 972 953 973 977
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.500000 1.00000 v0.500000 1.00000 1.00000 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
+DEAL:: v1.00000 0.500000 0.500000 v1.00000 1.00000 0.500000 v1.00000 0.500000 1.00000 v1.00000 1.00000 1.00000 dofs  52 53 54 98 99 100 140 141 142 169 170 171 147 174 103 172 175
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 1.00000 v1.00000 0.500000 0.500000 v1.00000 0.500000 1.00000 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
+DEAL:: v0.500000 1.00000 0.500000 v0.500000 1.00000 1.00000 v1.00000 1.00000 0.500000 v1.00000 1.00000 1.00000 dofs  78 79 80 156 157 158 98 99 100 169 170 171 104 173 163 174 176
+DEAL:: v0.500000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.500000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
+DEAL:: v0.500000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.500000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  120 121 122 140 141 142 156 157 158 169 170 171 160 172 145 173 177
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.00000 0.00000 0.250000 v0.00000 0.250000 0.250000 dofs  0 1 2 6 7 8 12 13 14 18 19 20 32 34 24 28 36
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
+DEAL:: v0.00000 0.00000 0.00000 v0.00000 0.00000 0.250000 v0.250000 0.00000 0.00000 v0.250000 0.00000 0.250000 dofs  0 1 2 12 13 14 3 4 5 15 16 17 26 30 32 33 38
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
+DEAL:: v0.00000 0.00000 0.00000 v0.250000 0.00000 0.00000 v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 dofs  0 1 2 3 4 5 6 7 8 9 10 11 24 25 26 27 40
+DEAL:: v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 dofs  3 4 5 9 10 11 15 16 17 21 22 23 33 35 25 29 37
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 dofs  43 44 45 46 47 48 49 50 51 52 53 54 61 62 55 58 63
+DEAL:: v0.250000 0.00000 0.00000 v0.250000 0.00000 0.250000 v0.500000 0.00000 0.00000 v0.500000 0.00000 0.250000 dofs  3 4 5 15 16 17 43 44 45 49 50 51 56 59 33 61 64
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
+DEAL:: v0.250000 0.00000 0.00000 v0.500000 0.00000 0.00000 v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 dofs  3 4 5 43 44 45 9 10 11 46 47 48 25 55 56 57 66
+DEAL:: v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.00000 0.250000 0.250000 v0.00000 0.500000 0.250000 dofs  6 7 8 69 70 71 18 19 20 75 76 77 34 87 81 84 89
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
+DEAL:: v0.00000 0.250000 0.00000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 dofs  6 7 8 18 19 20 9 10 11 21 22 23 27 31 34 35 39
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 dofs  69 70 71 75 76 77 72 73 74 78 79 80 83 86 87 88 91
+DEAL:: v0.00000 0.250000 0.00000 v0.250000 0.250000 0.00000 v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 dofs  6 7 8 9 10 11 69 70 71 72 73 74 81 82 27 83 92
+DEAL:: v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 dofs  9 10 11 72 73 74 21 22 23 78 79 80 35 88 82 85 90
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 dofs  46 47 48 95 96 97 52 53 54 98 99 100 62 105 101 103 106
+DEAL:: v0.250000 0.250000 0.00000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 dofs  9 10 11 21 22 23 46 47 48 52 53 54 57 60 35 62 65
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 dofs  72 73 74 78 79 80 95 96 97 98 99 100 102 104 88 105 107
+DEAL:: v0.250000 0.250000 0.00000 v0.500000 0.250000 0.00000 v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 dofs  9 10 11 46 47 48 72 73 74 95 96 97 82 101 57 102 108
+DEAL:: v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.00000 0.00000 0.500000 v0.00000 0.250000 0.500000 dofs  12 13 14 18 19 20 111 112 113 117 118 119 127 129 28 123 131
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
+DEAL:: v0.00000 0.00000 0.250000 v0.00000 0.00000 0.500000 v0.250000 0.00000 0.250000 v0.250000 0.00000 0.500000 dofs  12 13 14 111 112 113 15 16 17 114 115 116 30 125 127 128 133
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
+DEAL:: v0.00000 0.00000 0.250000 v0.250000 0.00000 0.250000 v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 dofs  12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 41
+DEAL:: v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 135
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 dofs  15 16 17 21 22 23 114 115 116 120 121 122 128 130 29 124 132
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 dofs  49 50 51 52 53 54 137 138 139 140 141 142 146 147 58 143 148
+DEAL:: v0.250000 0.00000 0.250000 v0.250000 0.00000 0.500000 v0.500000 0.00000 0.250000 v0.500000 0.00000 0.500000 dofs  15 16 17 114 115 116 49 50 51 137 138 139 59 144 128 146 149
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
+DEAL:: v0.250000 0.00000 0.250000 v0.500000 0.00000 0.250000 v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 dofs  15 16 17 49 50 51 21 22 23 52 53 54 29 58 59 60 67
+DEAL:: v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  114 115 116 137 138 139 120 121 122 140 141 142 124 143 144 145 151
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.00000 0.250000 0.500000 v0.00000 0.500000 0.500000 dofs  18 19 20 75 76 77 117 118 119 153 154 155 129 162 84 159 164
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
+DEAL:: v0.00000 0.250000 0.250000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 dofs  18 19 20 117 118 119 21 22 23 120 121 122 31 126 129 130 134
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 dofs  75 76 77 153 154 155 78 79 80 156 157 158 86 161 162 163 166
+DEAL:: v0.00000 0.250000 0.250000 v0.250000 0.250000 0.250000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 dofs  18 19 20 21 22 23 75 76 77 78 79 80 84 85 31 86 93
+DEAL:: v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  117 118 119 120 121 122 153 154 155 156 157 158 159 160 126 161 167
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 dofs  21 22 23 78 79 80 120 121 122 156 157 158 130 163 85 160 165
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 dofs  52 53 54 98 99 100 140 141 142 169 170 171 147 174 103 172 175
+DEAL:: v0.250000 0.250000 0.250000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 dofs  21 22 23 120 121 122 52 53 54 140 141 142 60 145 130 147 150
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 dofs  78 79 80 156 157 158 98 99 100 169 170 171 104 173 163 174 176
+DEAL:: v0.250000 0.250000 0.250000 v0.500000 0.250000 0.250000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 dofs  21 22 23 52 53 54 78 79 80 98 99 100 85 103 60 104 109
+DEAL:: v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  120 121 122 140 141 142 156 157 158 169 170 171 160 172 145 173 177
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 dofs  43 44 45 46 47 48 49 50 51 52 53 54 61 62 55 58 63
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.250000 0.00000 v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 dofs  179 180 181 182 183 184 185 186 187 188 189 190 197 198 191 194 199
+DEAL:: v0.500000 0.00000 0.00000 v0.500000 0.00000 0.250000 v0.750000 0.00000 0.00000 v0.750000 0.00000 0.250000 dofs  43 44 45 49 50 51 179 180 181 185 186 187 192 195 61 197 200
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 dofs  46 47 48 52 53 54 182 183 184 188 189 190 193 196 62 198 201
+DEAL:: v0.500000 0.00000 0.00000 v0.750000 0.00000 0.00000 v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 dofs  43 44 45 179 180 181 46 47 48 182 183 184 55 191 192 193 202
+DEAL:: v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  49 50 51 185 186 187 52 53 54 188 189 190 58 194 195 196 203
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.250000 0.00000 v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 dofs  179 180 181 182 183 184 185 186 187 188 189 190 197 198 191 194 199
+DEAL:: v1.00000 0.00000 0.00000 v1.00000 0.250000 0.00000 v1.00000 0.00000 0.250000 v1.00000 0.250000 0.250000 dofs  205 206 207 208 209 210 211 212 213 214 215 216 223 224 217 220 225
+DEAL:: v0.750000 0.00000 0.00000 v0.750000 0.00000 0.250000 v1.00000 0.00000 0.00000 v1.00000 0.00000 0.250000 dofs  179 180 181 185 186 187 205 206 207 211 212 213 218 221 197 223 226
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.00000 v1.00000 0.250000 0.250000 dofs  182 183 184 188 189 190 208 209 210 214 215 216 219 222 198 224 227
+DEAL:: v0.750000 0.00000 0.00000 v1.00000 0.00000 0.00000 v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 dofs  179 180 181 205 206 207 182 183 184 208 209 210 191 217 218 219 228
+DEAL:: v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  185 186 187 211 212 213 188 189 190 214 215 216 194 220 221 222 229
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 dofs  46 47 48 95 96 97 52 53 54 98 99 100 62 105 101 103 106
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.500000 0.00000 v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 dofs  182 183 184 231 232 233 188 189 190 234 235 236 198 241 237 239 242
+DEAL:: v0.500000 0.250000 0.00000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 dofs  46 47 48 52 53 54 182 183 184 188 189 190 193 196 62 198 201
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 dofs  95 96 97 98 99 100 231 232 233 234 235 236 238 240 105 241 243
+DEAL:: v0.500000 0.250000 0.00000 v0.750000 0.250000 0.00000 v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 dofs  46 47 48 182 183 184 95 96 97 231 232 233 101 237 193 238 244
+DEAL:: v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  52 53 54 188 189 190 98 99 100 234 235 236 103 239 196 240 245
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.500000 0.00000 v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 dofs  182 183 184 231 232 233 188 189 190 234 235 236 198 241 237 239 242
+DEAL:: v1.00000 0.250000 0.00000 v1.00000 0.500000 0.00000 v1.00000 0.250000 0.250000 v1.00000 0.500000 0.250000 dofs  208 209 210 247 248 249 214 215 216 250 251 252 224 257 253 255 258
+DEAL:: v0.750000 0.250000 0.00000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.00000 v1.00000 0.250000 0.250000 dofs  182 183 184 188 189 190 208 209 210 214 215 216 219 222 198 224 227
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.250000 dofs  231 232 233 234 235 236 247 248 249 250 251 252 254 256 241 257 259
+DEAL:: v0.750000 0.250000 0.00000 v1.00000 0.250000 0.00000 v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 dofs  182 183 184 208 209 210 231 232 233 247 248 249 237 253 219 254 260
+DEAL:: v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  188 189 190 214 215 216 234 235 236 250 251 252 239 255 222 256 261
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 dofs  49 50 51 52 53 54 137 138 139 140 141 142 146 147 58 143 148
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 dofs  185 186 187 188 189 190 263 264 265 266 267 268 272 273 194 269 274
+DEAL:: v0.500000 0.00000 0.250000 v0.500000 0.00000 0.500000 v0.750000 0.00000 0.250000 v0.750000 0.00000 0.500000 dofs  49 50 51 137 138 139 185 186 187 263 264 265 195 270 146 272 275
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 dofs  52 53 54 140 141 142 188 189 190 266 267 268 196 271 147 273 276
+DEAL:: v0.500000 0.00000 0.250000 v0.750000 0.00000 0.250000 v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 dofs  49 50 51 185 186 187 52 53 54 188 189 190 58 194 195 196 203
+DEAL:: v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  137 138 139 263 264 265 140 141 142 266 267 268 143 269 270 271 277
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.250000 0.250000 v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 dofs  185 186 187 188 189 190 263 264 265 266 267 268 272 273 194 269 274
+DEAL:: v1.00000 0.00000 0.250000 v1.00000 0.250000 0.250000 v1.00000 0.00000 0.500000 v1.00000 0.250000 0.500000 dofs  211 212 213 214 215 216 279 280 281 282 283 284 288 289 220 285 290
+DEAL:: v0.750000 0.00000 0.250000 v0.750000 0.00000 0.500000 v1.00000 0.00000 0.250000 v1.00000 0.00000 0.500000 dofs  185 186 187 263 264 265 211 212 213 279 280 281 221 286 272 288 291
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.250000 v1.00000 0.250000 0.500000 dofs  188 189 190 266 267 268 214 215 216 282 283 284 222 287 273 289 292
+DEAL:: v0.750000 0.00000 0.250000 v1.00000 0.00000 0.250000 v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 dofs  185 186 187 211 212 213 188 189 190 214 215 216 194 220 221 222 229
+DEAL:: v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  263 264 265 279 280 281 266 267 268 282 283 284 269 285 286 287 293
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 dofs  52 53 54 98 99 100 140 141 142 169 170 171 147 174 103 172 175
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 dofs  188 189 190 234 235 236 266 267 268 295 296 297 273 300 239 298 301
+DEAL:: v0.500000 0.250000 0.250000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 dofs  52 53 54 140 141 142 188 189 190 266 267 268 196 271 147 273 276
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 dofs  98 99 100 169 170 171 234 235 236 295 296 297 240 299 174 300 302
+DEAL:: v0.500000 0.250000 0.250000 v0.750000 0.250000 0.250000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 dofs  52 53 54 188 189 190 98 99 100 234 235 236 103 239 196 240 245
+DEAL:: v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  140 141 142 266 267 268 169 170 171 295 296 297 172 298 271 299 303
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.500000 0.250000 v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 dofs  188 189 190 234 235 236 266 267 268 295 296 297 273 300 239 298 301
+DEAL:: v1.00000 0.250000 0.250000 v1.00000 0.500000 0.250000 v1.00000 0.250000 0.500000 v1.00000 0.500000 0.500000 dofs  214 215 216 250 251 252 282 283 284 305 306 307 289 310 255 308 311
+DEAL:: v0.750000 0.250000 0.250000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.250000 v1.00000 0.250000 0.500000 dofs  188 189 190 266 267 268 214 215 216 282 283 284 222 287 273 289 292
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.250000 v1.00000 0.500000 0.500000 dofs  234 235 236 295 296 297 250 251 252 305 306 307 256 309 300 310 312
+DEAL:: v0.750000 0.250000 0.250000 v1.00000 0.250000 0.250000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 dofs  188 189 190 214 215 216 234 235 236 250 251 252 239 255 222 256 261
+DEAL:: v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  266 267 268 282 283 284 295 296 297 305 306 307 298 308 287 309 313
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.00000 0.500000 0.250000 v0.00000 0.750000 0.250000 dofs  69 70 71 315 316 317 75 76 77 321 322 323 87 333 327 330 335
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 dofs  72 73 74 318 319 320 78 79 80 324 325 326 88 334 328 331 336
+DEAL:: v0.00000 0.500000 0.00000 v0.00000 0.500000 0.250000 v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 dofs  69 70 71 75 76 77 72 73 74 78 79 80 83 86 87 88 91
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 dofs  315 316 317 321 322 323 318 319 320 324 325 326 329 332 333 334 337
+DEAL:: v0.00000 0.500000 0.00000 v0.250000 0.500000 0.00000 v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 dofs  69 70 71 72 73 74 315 316 317 318 319 320 327 328 83 329 338
+DEAL:: v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  75 76 77 78 79 80 321 322 323 324 325 326 330 331 86 332 339
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 dofs  72 73 74 318 319 320 78 79 80 324 325 326 88 334 328 331 336
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 dofs  95 96 97 341 342 343 98 99 100 344 345 346 105 351 347 349 352
+DEAL:: v0.250000 0.500000 0.00000 v0.250000 0.500000 0.250000 v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 dofs  72 73 74 78 79 80 95 96 97 98 99 100 102 104 88 105 107
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 dofs  318 319 320 324 325 326 341 342 343 344 345 346 348 350 334 351 353
+DEAL:: v0.250000 0.500000 0.00000 v0.500000 0.500000 0.00000 v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 dofs  72 73 74 95 96 97 318 319 320 341 342 343 328 347 102 348 354
+DEAL:: v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  78 79 80 98 99 100 324 325 326 344 345 346 331 349 104 350 355
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.00000 0.750000 0.250000 v0.00000 1.00000 0.250000 dofs  315 316 317 357 358 359 321 322 323 363 364 365 333 375 369 372 377
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 dofs  318 319 320 360 361 362 324 325 326 366 367 368 334 376 370 373 378
+DEAL:: v0.00000 0.750000 0.00000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 dofs  315 316 317 321 322 323 318 319 320 324 325 326 329 332 333 334 337
+DEAL:: v0.00000 1.00000 0.00000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.00000 v0.250000 1.00000 0.250000 dofs  357 358 359 363 364 365 360 361 362 366 367 368 371 374 375 376 379
+DEAL:: v0.00000 0.750000 0.00000 v0.250000 0.750000 0.00000 v0.00000 1.00000 0.00000 v0.250000 1.00000 0.00000 dofs  315 316 317 318 319 320 357 358 359 360 361 362 369 370 329 371 380
+DEAL:: v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  321 322 323 324 325 326 363 364 365 366 367 368 372 373 332 374 381
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 dofs  318 319 320 360 361 362 324 325 326 366 367 368 334 376 370 373 378
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 dofs  341 342 343 383 384 385 344 345 346 386 387 388 351 393 389 391 394
+DEAL:: v0.250000 0.750000 0.00000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 dofs  318 319 320 324 325 326 341 342 343 344 345 346 348 350 334 351 353
+DEAL:: v0.250000 1.00000 0.00000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.00000 v0.500000 1.00000 0.250000 dofs  360 361 362 366 367 368 383 384 385 386 387 388 390 392 376 393 395
+DEAL:: v0.250000 0.750000 0.00000 v0.500000 0.750000 0.00000 v0.250000 1.00000 0.00000 v0.500000 1.00000 0.00000 dofs  318 319 320 341 342 343 360 361 362 383 384 385 370 389 348 390 396
+DEAL:: v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  324 325 326 344 345 346 366 367 368 386 387 388 373 391 350 392 397
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.00000 0.500000 0.500000 v0.00000 0.750000 0.500000 dofs  75 76 77 321 322 323 153 154 155 399 400 401 162 408 330 405 410
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 dofs  78 79 80 324 325 326 156 157 158 402 403 404 163 409 331 406 411
+DEAL:: v0.00000 0.500000 0.250000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 dofs  75 76 77 153 154 155 78 79 80 156 157 158 86 161 162 163 166
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 dofs  321 322 323 399 400 401 324 325 326 402 403 404 332 407 408 409 412
+DEAL:: v0.00000 0.500000 0.250000 v0.250000 0.500000 0.250000 v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 dofs  75 76 77 78 79 80 321 322 323 324 325 326 330 331 86 332 339
+DEAL:: v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  153 154 155 156 157 158 399 400 401 402 403 404 405 406 161 407 413
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 dofs  78 79 80 324 325 326 156 157 158 402 403 404 163 409 331 406 411
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 dofs  98 99 100 344 345 346 169 170 171 415 416 417 174 420 349 418 421
+DEAL:: v0.250000 0.500000 0.250000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 dofs  78 79 80 156 157 158 98 99 100 169 170 171 104 173 163 174 176
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 dofs  324 325 326 402 403 404 344 345 346 415 416 417 350 419 409 420 422
+DEAL:: v0.250000 0.500000 0.250000 v0.500000 0.500000 0.250000 v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 dofs  78 79 80 98 99 100 324 325 326 344 345 346 331 349 104 350 355
+DEAL:: v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  156 157 158 169 170 171 402 403 404 415 416 417 406 418 173 419 423
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.00000 0.750000 0.500000 v0.00000 1.00000 0.500000 dofs  321 322 323 363 364 365 399 400 401 425 426 427 408 434 372 431 436
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 dofs  324 325 326 366 367 368 402 403 404 428 429 430 409 435 373 432 437
+DEAL:: v0.00000 0.750000 0.250000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 dofs  321 322 323 399 400 401 324 325 326 402 403 404 332 407 408 409 412
+DEAL:: v0.00000 1.00000 0.250000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.250000 v0.250000 1.00000 0.500000 dofs  363 364 365 425 426 427 366 367 368 428 429 430 374 433 434 435 438
+DEAL:: v0.00000 0.750000 0.250000 v0.250000 0.750000 0.250000 v0.00000 1.00000 0.250000 v0.250000 1.00000 0.250000 dofs  321 322 323 324 325 326 363 364 365 366 367 368 372 373 332 374 381
+DEAL:: v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  399 400 401 402 403 404 425 426 427 428 429 430 431 432 407 433 439
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 dofs  324 325 326 366 367 368 402 403 404 428 429 430 409 435 373 432 437
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 dofs  344 345 346 386 387 388 415 416 417 441 442 443 420 446 391 444 447
+DEAL:: v0.250000 0.750000 0.250000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 dofs  324 325 326 402 403 404 344 345 346 415 416 417 350 419 409 420 422
+DEAL:: v0.250000 1.00000 0.250000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.250000 v0.500000 1.00000 0.500000 dofs  366 367 368 428 429 430 386 387 388 441 442 443 392 445 435 446 448
+DEAL:: v0.250000 0.750000 0.250000 v0.500000 0.750000 0.250000 v0.250000 1.00000 0.250000 v0.500000 1.00000 0.250000 dofs  324 325 326 344 345 346 366 367 368 386 387 388 373 391 350 392 397
+DEAL:: v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  402 403 404 415 416 417 428 429 430 441 442 443 432 444 419 445 449
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 dofs  95 96 97 341 342 343 98 99 100 344 345 346 105 351 347 349 352
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.750000 0.00000 v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 dofs  231 232 233 451 452 453 234 235 236 454 455 456 241 461 457 459 462
+DEAL:: v0.500000 0.500000 0.00000 v0.500000 0.500000 0.250000 v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 dofs  95 96 97 98 99 100 231 232 233 234 235 236 238 240 105 241 243
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 dofs  341 342 343 344 345 346 451 452 453 454 455 456 458 460 351 461 463
+DEAL:: v0.500000 0.500000 0.00000 v0.750000 0.500000 0.00000 v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 dofs  95 96 97 231 232 233 341 342 343 451 452 453 347 457 238 458 464
+DEAL:: v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  98 99 100 234 235 236 344 345 346 454 455 456 349 459 240 460 465
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.750000 0.00000 v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 dofs  231 232 233 451 452 453 234 235 236 454 455 456 241 461 457 459 462
+DEAL:: v1.00000 0.500000 0.00000 v1.00000 0.750000 0.00000 v1.00000 0.500000 0.250000 v1.00000 0.750000 0.250000 dofs  247 248 249 467 468 469 250 251 252 470 471 472 257 477 473 475 478
+DEAL:: v0.750000 0.500000 0.00000 v0.750000 0.500000 0.250000 v1.00000 0.500000 0.00000 v1.00000 0.500000 0.250000 dofs  231 232 233 234 235 236 247 248 249 250 251 252 254 256 241 257 259
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.00000 v1.00000 0.750000 0.250000 dofs  451 452 453 454 455 456 467 468 469 470 471 472 474 476 461 477 479
+DEAL:: v0.750000 0.500000 0.00000 v1.00000 0.500000 0.00000 v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 dofs  231 232 233 247 248 249 451 452 453 467 468 469 457 473 254 474 480
+DEAL:: v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  234 235 236 250 251 252 454 455 456 470 471 472 459 475 256 476 481
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 dofs  341 342 343 383 384 385 344 345 346 386 387 388 351 393 389 391 394
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 1.00000 0.00000 v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 dofs  451 452 453 483 484 485 454 455 456 486 487 488 461 493 489 491 494
+DEAL:: v0.500000 0.750000 0.00000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 dofs  341 342 343 344 345 346 451 452 453 454 455 456 458 460 351 461 463
+DEAL:: v0.500000 1.00000 0.00000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.00000 v0.750000 1.00000 0.250000 dofs  383 384 385 386 387 388 483 484 485 486 487 488 490 492 393 493 495
+DEAL:: v0.500000 0.750000 0.00000 v0.750000 0.750000 0.00000 v0.500000 1.00000 0.00000 v0.750000 1.00000 0.00000 dofs  341 342 343 451 452 453 383 384 385 483 484 485 389 489 458 490 496
+DEAL:: v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  344 345 346 454 455 456 386 387 388 486 487 488 391 491 460 492 497
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 1.00000 0.00000 v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 dofs  451 452 453 483 484 485 454 455 456 486 487 488 461 493 489 491 494
+DEAL:: v1.00000 0.750000 0.00000 v1.00000 1.00000 0.00000 v1.00000 0.750000 0.250000 v1.00000 1.00000 0.250000 dofs  467 468 469 499 500 501 470 471 472 502 503 504 477 509 505 507 510
+DEAL:: v0.750000 0.750000 0.00000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.00000 v1.00000 0.750000 0.250000 dofs  451 452 453 454 455 456 467 468 469 470 471 472 474 476 461 477 479
+DEAL:: v0.750000 1.00000 0.00000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.00000 v1.00000 1.00000 0.250000 dofs  483 484 485 486 487 488 499 500 501 502 503 504 506 508 493 509 511
+DEAL:: v0.750000 0.750000 0.00000 v1.00000 0.750000 0.00000 v0.750000 1.00000 0.00000 v1.00000 1.00000 0.00000 dofs  451 452 453 467 468 469 483 484 485 499 500 501 489 505 474 506 512
+DEAL:: v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  454 455 456 470 471 472 486 487 488 502 503 504 491 507 476 508 513
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 dofs  98 99 100 344 345 346 169 170 171 415 416 417 174 420 349 418 421
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 dofs  234 235 236 454 455 456 295 296 297 515 516 517 300 520 459 518 521
+DEAL:: v0.500000 0.500000 0.250000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 dofs  98 99 100 169 170 171 234 235 236 295 296 297 240 299 174 300 302
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 dofs  344 345 346 415 416 417 454 455 456 515 516 517 460 519 420 520 522
+DEAL:: v0.500000 0.500000 0.250000 v0.750000 0.500000 0.250000 v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 dofs  98 99 100 234 235 236 344 345 346 454 455 456 349 459 240 460 465
+DEAL:: v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  169 170 171 295 296 297 415 416 417 515 516 517 418 518 299 519 523
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.750000 0.250000 v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 dofs  234 235 236 454 455 456 295 296 297 515 516 517 300 520 459 518 521
+DEAL:: v1.00000 0.500000 0.250000 v1.00000 0.750000 0.250000 v1.00000 0.500000 0.500000 v1.00000 0.750000 0.500000 dofs  250 251 252 470 471 472 305 306 307 525 526 527 310 530 475 528 531
+DEAL:: v0.750000 0.500000 0.250000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.250000 v1.00000 0.500000 0.500000 dofs  234 235 236 295 296 297 250 251 252 305 306 307 256 309 300 310 312
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.250000 v1.00000 0.750000 0.500000 dofs  454 455 456 515 516 517 470 471 472 525 526 527 476 529 520 530 532
+DEAL:: v0.750000 0.500000 0.250000 v1.00000 0.500000 0.250000 v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 dofs  234 235 236 250 251 252 454 455 456 470 471 472 459 475 256 476 481
+DEAL:: v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  295 296 297 305 306 307 515 516 517 525 526 527 518 528 309 529 533
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 dofs  344 345 346 386 387 388 415 416 417 441 442 443 420 446 391 444 447
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 dofs  454 455 456 486 487 488 515 516 517 535 536 537 520 540 491 538 541
+DEAL:: v0.500000 0.750000 0.250000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 dofs  344 345 346 415 416 417 454 455 456 515 516 517 460 519 420 520 522
+DEAL:: v0.500000 1.00000 0.250000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.250000 v0.750000 1.00000 0.500000 dofs  386 387 388 441 442 443 486 487 488 535 536 537 492 539 446 540 542
+DEAL:: v0.500000 0.750000 0.250000 v0.750000 0.750000 0.250000 v0.500000 1.00000 0.250000 v0.750000 1.00000 0.250000 dofs  344 345 346 454 455 456 386 387 388 486 487 488 391 491 460 492 497
+DEAL:: v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  415 416 417 515 516 517 441 442 443 535 536 537 444 538 519 539 543
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 1.00000 0.250000 v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 dofs  454 455 456 486 487 488 515 516 517 535 536 537 520 540 491 538 541
+DEAL:: v1.00000 0.750000 0.250000 v1.00000 1.00000 0.250000 v1.00000 0.750000 0.500000 v1.00000 1.00000 0.500000 dofs  470 471 472 502 503 504 525 526 527 545 546 547 530 550 507 548 551
+DEAL:: v0.750000 0.750000 0.250000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.250000 v1.00000 0.750000 0.500000 dofs  454 455 456 515 516 517 470 471 472 525 526 527 476 529 520 530 532
+DEAL:: v0.750000 1.00000 0.250000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.250000 v1.00000 1.00000 0.500000 dofs  486 487 488 535 536 537 502 503 504 545 546 547 508 549 540 550 552
+DEAL:: v0.750000 0.750000 0.250000 v1.00000 0.750000 0.250000 v0.750000 1.00000 0.250000 v1.00000 1.00000 0.250000 dofs  454 455 456 470 471 472 486 487 488 502 503 504 491 507 476 508 513
+DEAL:: v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  515 516 517 525 526 527 535 536 537 545 546 547 538 548 529 549 553
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.00000 0.00000 0.750000 v0.00000 0.250000 0.750000 dofs  111 112 113 117 118 119 555 556 557 561 562 563 571 573 123 567 575
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 dofs  114 115 116 120 121 122 558 559 560 564 565 566 572 574 124 568 576
+DEAL:: v0.00000 0.00000 0.500000 v0.00000 0.00000 0.750000 v0.250000 0.00000 0.500000 v0.250000 0.00000 0.750000 dofs  111 112 113 555 556 557 114 115 116 558 559 560 125 569 571 572 577
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 dofs  117 118 119 561 562 563 120 121 122 564 565 566 126 570 573 574 578
+DEAL:: v0.00000 0.00000 0.500000 v0.250000 0.00000 0.500000 v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 dofs  111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 135
+DEAL:: v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 579
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 dofs  114 115 116 120 121 122 558 559 560 564 565 566 572 574 124 568 576
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 dofs  137 138 139 140 141 142 581 582 583 584 585 586 590 591 143 587 592
+DEAL:: v0.250000 0.00000 0.500000 v0.250000 0.00000 0.750000 v0.500000 0.00000 0.500000 v0.500000 0.00000 0.750000 dofs  114 115 116 558 559 560 137 138 139 581 582 583 144 588 572 590 593
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 dofs  120 121 122 564 565 566 140 141 142 584 585 586 145 589 574 591 594
+DEAL:: v0.250000 0.00000 0.500000 v0.500000 0.00000 0.500000 v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 dofs  114 115 116 137 138 139 120 121 122 140 141 142 124 143 144 145 151
+DEAL:: v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  558 559 560 581 582 583 564 565 566 584 585 586 568 587 588 589 595
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.00000 0.250000 0.750000 v0.00000 0.500000 0.750000 dofs  117 118 119 153 154 155 561 562 563 597 598 599 573 606 159 603 608
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 dofs  120 121 122 156 157 158 564 565 566 600 601 602 574 607 160 604 609
+DEAL:: v0.00000 0.250000 0.500000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 dofs  117 118 119 561 562 563 120 121 122 564 565 566 126 570 573 574 578
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 dofs  153 154 155 597 598 599 156 157 158 600 601 602 161 605 606 607 610
+DEAL:: v0.00000 0.250000 0.500000 v0.250000 0.250000 0.500000 v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 dofs  117 118 119 120 121 122 153 154 155 156 157 158 159 160 126 161 167
+DEAL:: v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  561 562 563 564 565 566 597 598 599 600 601 602 603 604 570 605 611
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 dofs  120 121 122 156 157 158 564 565 566 600 601 602 574 607 160 604 609
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 dofs  140 141 142 169 170 171 584 585 586 613 614 615 591 618 172 616 619
+DEAL:: v0.250000 0.250000 0.500000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 dofs  120 121 122 564 565 566 140 141 142 584 585 586 145 589 574 591 594
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 dofs  156 157 158 600 601 602 169 170 171 613 614 615 173 617 607 618 620
+DEAL:: v0.250000 0.250000 0.500000 v0.500000 0.250000 0.500000 v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 dofs  120 121 122 140 141 142 156 157 158 169 170 171 160 172 145 173 177
+DEAL:: v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  564 565 566 584 585 586 600 601 602 613 614 615 604 616 589 617 621
+DEAL::Level 2
+DEAL:: v0.00000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.00000 0.00000 1.00000 v0.00000 0.250000 1.00000 dofs  555 556 557 561 562 563 623 624 625 629 630 631 639 641 567 635 643
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.250000 0.250000 1.00000 dofs  558 559 560 564 565 566 626 627 628 632 633 634 640 642 568 636 644
+DEAL:: v0.00000 0.00000 0.750000 v0.00000 0.00000 1.00000 v0.250000 0.00000 0.750000 v0.250000 0.00000 1.00000 dofs  555 556 557 623 624 625 558 559 560 626 627 628 569 637 639 640 645
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 dofs  561 562 563 629 630 631 564 565 566 632 633 634 570 638 641 642 646
+DEAL:: v0.00000 0.00000 0.750000 v0.250000 0.00000 0.750000 v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 dofs  555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 579
+DEAL:: v0.00000 0.00000 1.00000 v0.250000 0.00000 1.00000 v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 dofs  623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 647
+DEAL::Level 2
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.250000 0.00000 1.00000 v0.250000 0.250000 1.00000 dofs  558 559 560 564 565 566 626 627 628 632 633 634 640 642 568 636 644
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.500000 0.250000 1.00000 dofs  581 582 583 584 585 586 649 650 651 652 653 654 658 659 587 655 660
+DEAL:: v0.250000 0.00000 0.750000 v0.250000 0.00000 1.00000 v0.500000 0.00000 0.750000 v0.500000 0.00000 1.00000 dofs  558 559 560 626 627 628 581 582 583 649 650 651 588 656 640 658 661
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 dofs  564 565 566 632 633 634 584 585 586 652 653 654 589 657 642 659 662
+DEAL:: v0.250000 0.00000 0.750000 v0.500000 0.00000 0.750000 v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 dofs  558 559 560 581 582 583 564 565 566 584 585 586 568 587 588 589 595
+DEAL:: v0.250000 0.00000 1.00000 v0.500000 0.00000 1.00000 v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 dofs  626 627 628 649 650 651 632 633 634 652 653 654 636 655 656 657 663
+DEAL::Level 2
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.00000 0.250000 1.00000 v0.00000 0.500000 1.00000 dofs  561 562 563 597 598 599 629 630 631 665 666 667 641 674 603 671 676
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.250000 0.500000 1.00000 dofs  564 565 566 600 601 602 632 633 634 668 669 670 642 675 604 672 677
+DEAL:: v0.00000 0.250000 0.750000 v0.00000 0.250000 1.00000 v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 dofs  561 562 563 629 630 631 564 565 566 632 633 634 570 638 641 642 646
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 dofs  597 598 599 665 666 667 600 601 602 668 669 670 605 673 674 675 678
+DEAL:: v0.00000 0.250000 0.750000 v0.250000 0.250000 0.750000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 dofs  561 562 563 564 565 566 597 598 599 600 601 602 603 604 570 605 611
+DEAL:: v0.00000 0.250000 1.00000 v0.250000 0.250000 1.00000 v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 dofs  629 630 631 632 633 634 665 666 667 668 669 670 671 672 638 673 679
+DEAL::Level 2
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.250000 0.250000 1.00000 v0.250000 0.500000 1.00000 dofs  564 565 566 600 601 602 632 633 634 668 669 670 642 675 604 672 677
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.500000 0.500000 1.00000 dofs  584 585 586 613 614 615 652 653 654 681 682 683 659 686 616 684 687
+DEAL:: v0.250000 0.250000 0.750000 v0.250000 0.250000 1.00000 v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 dofs  564 565 566 632 633 634 584 585 586 652 653 654 589 657 642 659 662
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 dofs  600 601 602 668 669 670 613 614 615 681 682 683 617 685 675 686 688
+DEAL:: v0.250000 0.250000 0.750000 v0.500000 0.250000 0.750000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 dofs  564 565 566 584 585 586 600 601 602 613 614 615 604 616 589 617 621
+DEAL:: v0.250000 0.250000 1.00000 v0.500000 0.250000 1.00000 v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 dofs  632 633 634 652 653 654 668 669 670 681 682 683 672 684 657 685 689
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 dofs  137 138 139 140 141 142 581 582 583 584 585 586 590 591 143 587 592
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 dofs  263 264 265 266 267 268 691 692 693 694 695 696 700 701 269 697 702
+DEAL:: v0.500000 0.00000 0.500000 v0.500000 0.00000 0.750000 v0.750000 0.00000 0.500000 v0.750000 0.00000 0.750000 dofs  137 138 139 581 582 583 263 264 265 691 692 693 270 698 590 700 703
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 dofs  140 141 142 584 585 586 266 267 268 694 695 696 271 699 591 701 704
+DEAL:: v0.500000 0.00000 0.500000 v0.750000 0.00000 0.500000 v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 dofs  137 138 139 263 264 265 140 141 142 266 267 268 143 269 270 271 277
+DEAL:: v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  581 582 583 691 692 693 584 585 586 694 695 696 587 697 698 699 705
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.250000 0.500000 v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 dofs  263 264 265 266 267 268 691 692 693 694 695 696 700 701 269 697 702
+DEAL:: v1.00000 0.00000 0.500000 v1.00000 0.250000 0.500000 v1.00000 0.00000 0.750000 v1.00000 0.250000 0.750000 dofs  279 280 281 282 283 284 707 708 709 710 711 712 716 717 285 713 718
+DEAL:: v0.750000 0.00000 0.500000 v0.750000 0.00000 0.750000 v1.00000 0.00000 0.500000 v1.00000 0.00000 0.750000 dofs  263 264 265 691 692 693 279 280 281 707 708 709 286 714 700 716 719
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.500000 v1.00000 0.250000 0.750000 dofs  266 267 268 694 695 696 282 283 284 710 711 712 287 715 701 717 720
+DEAL:: v0.750000 0.00000 0.500000 v1.00000 0.00000 0.500000 v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 dofs  263 264 265 279 280 281 266 267 268 282 283 284 269 285 286 287 293
+DEAL:: v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  691 692 693 707 708 709 694 695 696 710 711 712 697 713 714 715 721
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 dofs  140 141 142 169 170 171 584 585 586 613 614 615 591 618 172 616 619
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 dofs  266 267 268 295 296 297 694 695 696 723 724 725 701 728 298 726 729
+DEAL:: v0.500000 0.250000 0.500000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 dofs  140 141 142 584 585 586 266 267 268 694 695 696 271 699 591 701 704
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 dofs  169 170 171 613 614 615 295 296 297 723 724 725 299 727 618 728 730
+DEAL:: v0.500000 0.250000 0.500000 v0.750000 0.250000 0.500000 v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 dofs  140 141 142 266 267 268 169 170 171 295 296 297 172 298 271 299 303
+DEAL:: v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  584 585 586 694 695 696 613 614 615 723 724 725 616 726 699 727 731
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.500000 0.500000 v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 dofs  266 267 268 295 296 297 694 695 696 723 724 725 701 728 298 726 729
+DEAL:: v1.00000 0.250000 0.500000 v1.00000 0.500000 0.500000 v1.00000 0.250000 0.750000 v1.00000 0.500000 0.750000 dofs  282 283 284 305 306 307 710 711 712 733 734 735 717 738 308 736 739
+DEAL:: v0.750000 0.250000 0.500000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.500000 v1.00000 0.250000 0.750000 dofs  266 267 268 694 695 696 282 283 284 710 711 712 287 715 701 717 720
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.500000 v1.00000 0.500000 0.750000 dofs  295 296 297 723 724 725 305 306 307 733 734 735 309 737 728 738 740
+DEAL:: v0.750000 0.250000 0.500000 v1.00000 0.250000 0.500000 v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 dofs  266 267 268 282 283 284 295 296 297 305 306 307 298 308 287 309 313
+DEAL:: v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  694 695 696 710 711 712 723 724 725 733 734 735 726 736 715 737 741
+DEAL::Level 2
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.500000 0.00000 1.00000 v0.500000 0.250000 1.00000 dofs  581 582 583 584 585 586 649 650 651 652 653 654 658 659 587 655 660
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 v0.750000 0.00000 1.00000 v0.750000 0.250000 1.00000 dofs  691 692 693 694 695 696 743 744 745 746 747 748 752 753 697 749 754
+DEAL:: v0.500000 0.00000 0.750000 v0.500000 0.00000 1.00000 v0.750000 0.00000 0.750000 v0.750000 0.00000 1.00000 dofs  581 582 583 649 650 651 691 692 693 743 744 745 698 750 658 752 755
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 dofs  584 585 586 652 653 654 694 695 696 746 747 748 699 751 659 753 756
+DEAL:: v0.500000 0.00000 0.750000 v0.750000 0.00000 0.750000 v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 dofs  581 582 583 691 692 693 584 585 586 694 695 696 587 697 698 699 705
+DEAL:: v0.500000 0.00000 1.00000 v0.750000 0.00000 1.00000 v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 dofs  649 650 651 743 744 745 652 653 654 746 747 748 655 749 750 751 757
+DEAL::Level 2
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.250000 0.750000 v0.750000 0.00000 1.00000 v0.750000 0.250000 1.00000 dofs  691 692 693 694 695 696 743 744 745 746 747 748 752 753 697 749 754
+DEAL:: v1.00000 0.00000 0.750000 v1.00000 0.250000 0.750000 v1.00000 0.00000 1.00000 v1.00000 0.250000 1.00000 dofs  707 708 709 710 711 712 759 760 761 762 763 764 768 769 713 765 770
+DEAL:: v0.750000 0.00000 0.750000 v0.750000 0.00000 1.00000 v1.00000 0.00000 0.750000 v1.00000 0.00000 1.00000 dofs  691 692 693 743 744 745 707 708 709 759 760 761 714 766 752 768 771
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 0.750000 v1.00000 0.250000 1.00000 dofs  694 695 696 746 747 748 710 711 712 762 763 764 715 767 753 769 772
+DEAL:: v0.750000 0.00000 0.750000 v1.00000 0.00000 0.750000 v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 dofs  691 692 693 707 708 709 694 695 696 710 711 712 697 713 714 715 721
+DEAL:: v0.750000 0.00000 1.00000 v1.00000 0.00000 1.00000 v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 dofs  743 744 745 759 760 761 746 747 748 762 763 764 749 765 766 767 773
+DEAL::Level 2
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.500000 0.250000 1.00000 v0.500000 0.500000 1.00000 dofs  584 585 586 613 614 615 652 653 654 681 682 683 659 686 616 684 687
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 v0.750000 0.250000 1.00000 v0.750000 0.500000 1.00000 dofs  694 695 696 723 724 725 746 747 748 775 776 777 753 780 726 778 781
+DEAL:: v0.500000 0.250000 0.750000 v0.500000 0.250000 1.00000 v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 dofs  584 585 586 652 653 654 694 695 696 746 747 748 699 751 659 753 756
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 dofs  613 614 615 681 682 683 723 724 725 775 776 777 727 779 686 780 782
+DEAL:: v0.500000 0.250000 0.750000 v0.750000 0.250000 0.750000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 dofs  584 585 586 694 695 696 613 614 615 723 724 725 616 726 699 727 731
+DEAL:: v0.500000 0.250000 1.00000 v0.750000 0.250000 1.00000 v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 dofs  652 653 654 746 747 748 681 682 683 775 776 777 684 778 751 779 783
+DEAL::Level 2
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.500000 0.750000 v0.750000 0.250000 1.00000 v0.750000 0.500000 1.00000 dofs  694 695 696 723 724 725 746 747 748 775 776 777 753 780 726 778 781
+DEAL:: v1.00000 0.250000 0.750000 v1.00000 0.500000 0.750000 v1.00000 0.250000 1.00000 v1.00000 0.500000 1.00000 dofs  710 711 712 733 734 735 762 763 764 785 786 787 769 790 736 788 791
+DEAL:: v0.750000 0.250000 0.750000 v0.750000 0.250000 1.00000 v1.00000 0.250000 0.750000 v1.00000 0.250000 1.00000 dofs  694 695 696 746 747 748 710 711 712 762 763 764 715 767 753 769 772
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 0.750000 v1.00000 0.500000 1.00000 dofs  723 724 725 775 776 777 733 734 735 785 786 787 737 789 780 790 792
+DEAL:: v0.750000 0.250000 0.750000 v1.00000 0.250000 0.750000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 dofs  694 695 696 710 711 712 723 724 725 733 734 735 726 736 715 737 741
+DEAL:: v0.750000 0.250000 1.00000 v1.00000 0.250000 1.00000 v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 dofs  746 747 748 762 763 764 775 776 777 785 786 787 778 788 767 789 793
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.00000 0.500000 0.750000 v0.00000 0.750000 0.750000 dofs  153 154 155 399 400 401 597 598 599 795 796 797 606 804 405 801 806
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 dofs  156 157 158 402 403 404 600 601 602 798 799 800 607 805 406 802 807
+DEAL:: v0.00000 0.500000 0.500000 v0.00000 0.500000 0.750000 v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 dofs  153 154 155 597 598 599 156 157 158 600 601 602 161 605 606 607 610
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 dofs  399 400 401 795 796 797 402 403 404 798 799 800 407 803 804 805 808
+DEAL:: v0.00000 0.500000 0.500000 v0.250000 0.500000 0.500000 v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 dofs  153 154 155 156 157 158 399 400 401 402 403 404 405 406 161 407 413
+DEAL:: v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  597 598 599 600 601 602 795 796 797 798 799 800 801 802 605 803 809
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 dofs  156 157 158 402 403 404 600 601 602 798 799 800 607 805 406 802 807
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 dofs  169 170 171 415 416 417 613 614 615 811 812 813 618 816 418 814 817
+DEAL:: v0.250000 0.500000 0.500000 v0.250000 0.500000 0.750000 v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 dofs  156 157 158 600 601 602 169 170 171 613 614 615 173 617 607 618 620
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 dofs  402 403 404 798 799 800 415 416 417 811 812 813 419 815 805 816 818
+DEAL:: v0.250000 0.500000 0.500000 v0.500000 0.500000 0.500000 v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 dofs  156 157 158 169 170 171 402 403 404 415 416 417 406 418 173 419 423
+DEAL:: v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  600 601 602 613 614 615 798 799 800 811 812 813 802 814 617 815 819
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.00000 0.750000 0.750000 v0.00000 1.00000 0.750000 dofs  399 400 401 425 426 427 795 796 797 821 822 823 804 830 431 827 832
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 dofs  402 403 404 428 429 430 798 799 800 824 825 826 805 831 432 828 833
+DEAL:: v0.00000 0.750000 0.500000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 dofs  399 400 401 795 796 797 402 403 404 798 799 800 407 803 804 805 808
+DEAL:: v0.00000 1.00000 0.500000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.500000 v0.250000 1.00000 0.750000 dofs  425 426 427 821 822 823 428 429 430 824 825 826 433 829 830 831 834
+DEAL:: v0.00000 0.750000 0.500000 v0.250000 0.750000 0.500000 v0.00000 1.00000 0.500000 v0.250000 1.00000 0.500000 dofs  399 400 401 402 403 404 425 426 427 428 429 430 431 432 407 433 439
+DEAL:: v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  795 796 797 798 799 800 821 822 823 824 825 826 827 828 803 829 835
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 dofs  402 403 404 428 429 430 798 799 800 824 825 826 805 831 432 828 833
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 dofs  415 416 417 441 442 443 811 812 813 837 838 839 816 842 444 840 843
+DEAL:: v0.250000 0.750000 0.500000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 dofs  402 403 404 798 799 800 415 416 417 811 812 813 419 815 805 816 818
+DEAL:: v0.250000 1.00000 0.500000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.500000 v0.500000 1.00000 0.750000 dofs  428 429 430 824 825 826 441 442 443 837 838 839 445 841 831 842 844
+DEAL:: v0.250000 0.750000 0.500000 v0.500000 0.750000 0.500000 v0.250000 1.00000 0.500000 v0.500000 1.00000 0.500000 dofs  402 403 404 415 416 417 428 429 430 441 442 443 432 444 419 445 449
+DEAL:: v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  798 799 800 811 812 813 824 825 826 837 838 839 828 840 815 841 845
+DEAL::Level 2
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.00000 0.500000 1.00000 v0.00000 0.750000 1.00000 dofs  597 598 599 795 796 797 665 666 667 847 848 849 674 856 801 853 858
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.250000 0.750000 1.00000 dofs  600 601 602 798 799 800 668 669 670 850 851 852 675 857 802 854 859
+DEAL:: v0.00000 0.500000 0.750000 v0.00000 0.500000 1.00000 v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 dofs  597 598 599 665 666 667 600 601 602 668 669 670 605 673 674 675 678
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 dofs  795 796 797 847 848 849 798 799 800 850 851 852 803 855 856 857 860
+DEAL:: v0.00000 0.500000 0.750000 v0.250000 0.500000 0.750000 v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 dofs  597 598 599 600 601 602 795 796 797 798 799 800 801 802 605 803 809
+DEAL:: v0.00000 0.500000 1.00000 v0.250000 0.500000 1.00000 v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 dofs  665 666 667 668 669 670 847 848 849 850 851 852 853 854 673 855 861
+DEAL::Level 2
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.250000 0.500000 1.00000 v0.250000 0.750000 1.00000 dofs  600 601 602 798 799 800 668 669 670 850 851 852 675 857 802 854 859
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.500000 0.750000 1.00000 dofs  613 614 615 811 812 813 681 682 683 863 864 865 686 868 814 866 869
+DEAL:: v0.250000 0.500000 0.750000 v0.250000 0.500000 1.00000 v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 dofs  600 601 602 668 669 670 613 614 615 681 682 683 617 685 675 686 688
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 dofs  798 799 800 850 851 852 811 812 813 863 864 865 815 867 857 868 870
+DEAL:: v0.250000 0.500000 0.750000 v0.500000 0.500000 0.750000 v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 dofs  600 601 602 613 614 615 798 799 800 811 812 813 802 814 617 815 819
+DEAL:: v0.250000 0.500000 1.00000 v0.500000 0.500000 1.00000 v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 dofs  668 669 670 681 682 683 850 851 852 863 864 865 854 866 685 867 871
+DEAL::Level 2
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.00000 0.750000 1.00000 v0.00000 1.00000 1.00000 dofs  795 796 797 821 822 823 847 848 849 873 874 875 856 882 827 879 884
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.250000 1.00000 1.00000 dofs  798 799 800 824 825 826 850 851 852 876 877 878 857 883 828 880 885
+DEAL:: v0.00000 0.750000 0.750000 v0.00000 0.750000 1.00000 v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 dofs  795 796 797 847 848 849 798 799 800 850 851 852 803 855 856 857 860
+DEAL:: v0.00000 1.00000 0.750000 v0.00000 1.00000 1.00000 v0.250000 1.00000 0.750000 v0.250000 1.00000 1.00000 dofs  821 822 823 873 874 875 824 825 826 876 877 878 829 881 882 883 886
+DEAL:: v0.00000 0.750000 0.750000 v0.250000 0.750000 0.750000 v0.00000 1.00000 0.750000 v0.250000 1.00000 0.750000 dofs  795 796 797 798 799 800 821 822 823 824 825 826 827 828 803 829 835
+DEAL:: v0.00000 0.750000 1.00000 v0.250000 0.750000 1.00000 v0.00000 1.00000 1.00000 v0.250000 1.00000 1.00000 dofs  847 848 849 850 851 852 873 874 875 876 877 878 879 880 855 881 887
+DEAL::Level 2
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.250000 0.750000 1.00000 v0.250000 1.00000 1.00000 dofs  798 799 800 824 825 826 850 851 852 876 877 878 857 883 828 880 885
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.500000 1.00000 1.00000 dofs  811 812 813 837 838 839 863 864 865 889 890 891 868 894 840 892 895
+DEAL:: v0.250000 0.750000 0.750000 v0.250000 0.750000 1.00000 v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 dofs  798 799 800 850 851 852 811 812 813 863 864 865 815 867 857 868 870
+DEAL:: v0.250000 1.00000 0.750000 v0.250000 1.00000 1.00000 v0.500000 1.00000 0.750000 v0.500000 1.00000 1.00000 dofs  824 825 826 876 877 878 837 838 839 889 890 891 841 893 883 894 896
+DEAL:: v0.250000 0.750000 0.750000 v0.500000 0.750000 0.750000 v0.250000 1.00000 0.750000 v0.500000 1.00000 0.750000 dofs  798 799 800 811 812 813 824 825 826 837 838 839 828 840 815 841 845
+DEAL:: v0.250000 0.750000 1.00000 v0.500000 0.750000 1.00000 v0.250000 1.00000 1.00000 v0.500000 1.00000 1.00000 dofs  850 851 852 863 864 865 876 877 878 889 890 891 880 892 867 893 897
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 dofs  169 170 171 415 416 417 613 614 615 811 812 813 618 816 418 814 817
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 dofs  295 296 297 515 516 517 723 724 725 899 900 901 728 904 518 902 905
+DEAL:: v0.500000 0.500000 0.500000 v0.500000 0.500000 0.750000 v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 dofs  169 170 171 613 614 615 295 296 297 723 724 725 299 727 618 728 730
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 dofs  415 416 417 811 812 813 515 516 517 899 900 901 519 903 816 904 906
+DEAL:: v0.500000 0.500000 0.500000 v0.750000 0.500000 0.500000 v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 dofs  169 170 171 295 296 297 415 416 417 515 516 517 418 518 299 519 523
+DEAL:: v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  613 614 615 723 724 725 811 812 813 899 900 901 814 902 727 903 907
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.750000 0.500000 v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 dofs  295 296 297 515 516 517 723 724 725 899 900 901 728 904 518 902 905
+DEAL:: v1.00000 0.500000 0.500000 v1.00000 0.750000 0.500000 v1.00000 0.500000 0.750000 v1.00000 0.750000 0.750000 dofs  305 306 307 525 526 527 733 734 735 909 910 911 738 914 528 912 915
+DEAL:: v0.750000 0.500000 0.500000 v0.750000 0.500000 0.750000 v1.00000 0.500000 0.500000 v1.00000 0.500000 0.750000 dofs  295 296 297 723 724 725 305 306 307 733 734 735 309 737 728 738 740
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.500000 v1.00000 0.750000 0.750000 dofs  515 516 517 899 900 901 525 526 527 909 910 911 529 913 904 914 916
+DEAL:: v0.750000 0.500000 0.500000 v1.00000 0.500000 0.500000 v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 dofs  295 296 297 305 306 307 515 516 517 525 526 527 518 528 309 529 533
+DEAL:: v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  723 724 725 733 734 735 899 900 901 909 910 911 902 912 737 913 917
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 dofs  415 416 417 441 442 443 811 812 813 837 838 839 816 842 444 840 843
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 dofs  515 516 517 535 536 537 899 900 901 919 920 921 904 924 538 922 925
+DEAL:: v0.500000 0.750000 0.500000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 dofs  415 416 417 811 812 813 515 516 517 899 900 901 519 903 816 904 906
+DEAL:: v0.500000 1.00000 0.500000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.500000 v0.750000 1.00000 0.750000 dofs  441 442 443 837 838 839 535 536 537 919 920 921 539 923 842 924 926
+DEAL:: v0.500000 0.750000 0.500000 v0.750000 0.750000 0.500000 v0.500000 1.00000 0.500000 v0.750000 1.00000 0.500000 dofs  415 416 417 515 516 517 441 442 443 535 536 537 444 538 519 539 543
+DEAL:: v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  811 812 813 899 900 901 837 838 839 919 920 921 840 922 903 923 927
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 1.00000 0.500000 v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 dofs  515 516 517 535 536 537 899 900 901 919 920 921 904 924 538 922 925
+DEAL:: v1.00000 0.750000 0.500000 v1.00000 1.00000 0.500000 v1.00000 0.750000 0.750000 v1.00000 1.00000 0.750000 dofs  525 526 527 545 546 547 909 910 911 929 930 931 914 934 548 932 935
+DEAL:: v0.750000 0.750000 0.500000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.500000 v1.00000 0.750000 0.750000 dofs  515 516 517 899 900 901 525 526 527 909 910 911 529 913 904 914 916
+DEAL:: v0.750000 1.00000 0.500000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.500000 v1.00000 1.00000 0.750000 dofs  535 536 537 919 920 921 545 546 547 929 930 931 549 933 924 934 936
+DEAL:: v0.750000 0.750000 0.500000 v1.00000 0.750000 0.500000 v0.750000 1.00000 0.500000 v1.00000 1.00000 0.500000 dofs  515 516 517 525 526 527 535 536 537 545 546 547 538 548 529 549 553
+DEAL:: v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  899 900 901 909 910 911 919 920 921 929 930 931 922 932 913 933 937
+DEAL::Level 2
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.500000 0.500000 1.00000 v0.500000 0.750000 1.00000 dofs  613 614 615 811 812 813 681 682 683 863 864 865 686 868 814 866 869
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 v0.750000 0.500000 1.00000 v0.750000 0.750000 1.00000 dofs  723 724 725 899 900 901 775 776 777 939 940 941 780 944 902 942 945
+DEAL:: v0.500000 0.500000 0.750000 v0.500000 0.500000 1.00000 v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 dofs  613 614 615 681 682 683 723 724 725 775 776 777 727 779 686 780 782
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 dofs  811 812 813 863 864 865 899 900 901 939 940 941 903 943 868 944 946
+DEAL:: v0.500000 0.500000 0.750000 v0.750000 0.500000 0.750000 v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 dofs  613 614 615 723 724 725 811 812 813 899 900 901 814 902 727 903 907
+DEAL:: v0.500000 0.500000 1.00000 v0.750000 0.500000 1.00000 v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 dofs  681 682 683 775 776 777 863 864 865 939 940 941 866 942 779 943 947
+DEAL::Level 2
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.750000 0.750000 v0.750000 0.500000 1.00000 v0.750000 0.750000 1.00000 dofs  723 724 725 899 900 901 775 776 777 939 940 941 780 944 902 942 945
+DEAL:: v1.00000 0.500000 0.750000 v1.00000 0.750000 0.750000 v1.00000 0.500000 1.00000 v1.00000 0.750000 1.00000 dofs  733 734 735 909 910 911 785 786 787 949 950 951 790 954 912 952 955
+DEAL:: v0.750000 0.500000 0.750000 v0.750000 0.500000 1.00000 v1.00000 0.500000 0.750000 v1.00000 0.500000 1.00000 dofs  723 724 725 775 776 777 733 734 735 785 786 787 737 789 780 790 792
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 0.750000 v1.00000 0.750000 1.00000 dofs  899 900 901 939 940 941 909 910 911 949 950 951 913 953 944 954 956
+DEAL:: v0.750000 0.500000 0.750000 v1.00000 0.500000 0.750000 v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 dofs  723 724 725 733 734 735 899 900 901 909 910 911 902 912 737 913 917
+DEAL:: v0.750000 0.500000 1.00000 v1.00000 0.500000 1.00000 v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 dofs  775 776 777 785 786 787 939 940 941 949 950 951 942 952 789 953 957
+DEAL::Level 2
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.500000 0.750000 1.00000 v0.500000 1.00000 1.00000 dofs  811 812 813 837 838 839 863 864 865 889 890 891 868 894 840 892 895
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 v0.750000 0.750000 1.00000 v0.750000 1.00000 1.00000 dofs  899 900 901 919 920 921 939 940 941 959 960 961 944 964 922 962 965
+DEAL:: v0.500000 0.750000 0.750000 v0.500000 0.750000 1.00000 v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 dofs  811 812 813 863 864 865 899 900 901 939 940 941 903 943 868 944 946
+DEAL:: v0.500000 1.00000 0.750000 v0.500000 1.00000 1.00000 v0.750000 1.00000 0.750000 v0.750000 1.00000 1.00000 dofs  837 838 839 889 890 891 919 920 921 959 960 961 923 963 894 964 966
+DEAL:: v0.500000 0.750000 0.750000 v0.750000 0.750000 0.750000 v0.500000 1.00000 0.750000 v0.750000 1.00000 0.750000 dofs  811 812 813 899 900 901 837 838 839 919 920 921 840 922 903 923 927
+DEAL:: v0.500000 0.750000 1.00000 v0.750000 0.750000 1.00000 v0.500000 1.00000 1.00000 v0.750000 1.00000 1.00000 dofs  863 864 865 939 940 941 889 890 891 959 960 961 892 962 943 963 967
+DEAL::Level 2
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 1.00000 0.750000 v0.750000 0.750000 1.00000 v0.750000 1.00000 1.00000 dofs  899 900 901 919 920 921 939 940 941 959 960 961 944 964 922 962 965
+DEAL:: v1.00000 0.750000 0.750000 v1.00000 1.00000 0.750000 v1.00000 0.750000 1.00000 v1.00000 1.00000 1.00000 dofs  909 910 911 929 930 931 949 950 951 969 970 971 954 974 932 972 975
+DEAL:: v0.750000 0.750000 0.750000 v0.750000 0.750000 1.00000 v1.00000 0.750000 0.750000 v1.00000 0.750000 1.00000 dofs  899 900 901 939 940 941 909 910 911 949 950 951 913 953 944 954 956
+DEAL:: v0.750000 1.00000 0.750000 v0.750000 1.00000 1.00000 v1.00000 1.00000 0.750000 v1.00000 1.00000 1.00000 dofs  919 920 921 959 960 961 929 930 931 969 970 971 933 973 964 974 976
+DEAL:: v0.750000 0.750000 0.750000 v1.00000 0.750000 0.750000 v0.750000 1.00000 0.750000 v1.00000 1.00000 0.750000 dofs  899 900 901 909 910 911 919 920 921 929 930 931 922 932 913 933 937
+DEAL:: v0.750000 0.750000 1.00000 v1.00000 0.750000 1.00000 v0.750000 1.00000 1.00000 v1.00000 1.00000 1.00000 dofs  939 940 941 949 950 951 959 960 961 969 970 971 962 972 953 973 977
diff --git a/tests/multigrid/dof_03.cc b/tests/multigrid/dof_03.cc
new file mode 100644 (file)
index 0000000..348737d
--- /dev/null
@@ -0,0 +1,104 @@
+//----------------------------------------------------------------------------
+//    $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.
+//
+//----------------------------------------------------------------------------
+
+// check DoFHandler::has_level_dofs and DoFHandler::has_active_dofs
+
+#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/fe/fe_q.h>
+#include <deal.II/multigrid/mg_dof_handler.h>
+
+#include <fstream>
+#include <iomanip>
+#include <iomanip>
+#include <algorithm>
+
+
+
+template <int dim>
+void check()
+{
+  FE_Q<dim> fe(1);
+
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(1);
+
+                                  // check the two functions mentioned above
+                                  // in their natural order
+  {
+    DoFHandler<dim> dof(tr);
+    deallog << "check " << dim << " before distribute "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+
+    dof.distribute_dofs(fe);
+    deallog << "check " << dim << " after  distribute "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+
+
+    dof.distribute_mg_dofs(fe);
+    deallog << "check " << dim << " level  distribute "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+
+    dof.clear();
+    deallog << "check " << dim << " after  clear      "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+  }
+
+                                  // now check them the other way around
+  {
+    DoFHandler<dim> dof(tr);
+    deallog << "check " << dim << " before distribute "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+
+    dof.distribute_mg_dofs(fe);
+    deallog << "check " << dim << " level  distribute "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+
+    dof.distribute_dofs(fe);
+    deallog << "check " << dim << " after  distribute "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+
+    dof.clear();
+    deallog << "check " << dim << " after  clear      "
+           << dof.has_active_dofs() << ' '
+           << dof.has_level_dofs()
+           << std::endl;
+  }
+}
+
+int main()
+{
+  initlog(__FILE__);
+  check<1> ();
+  check<2> ();
+  check<3> ();
+}
diff --git a/tests/multigrid/dof_03/cmp/generic b/tests/multigrid/dof_03/cmp/generic
new file mode 100644 (file)
index 0000000..6485ddd
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL::check 1 before distribute 0 0
+DEAL::check 1 after  distribute 1 0
+DEAL::check 1 level  distribute 1 1
+DEAL::check 1 after  clear      0 0
+DEAL::check 1 before distribute 0 0
+DEAL::check 1 level  distribute 0 1
+DEAL::check 1 after  distribute 1 1
+DEAL::check 1 after  clear      0 0
+DEAL::check 2 before distribute 0 0
+DEAL::check 2 after  distribute 1 0
+DEAL::check 2 level  distribute 1 1
+DEAL::check 2 after  clear      0 0
+DEAL::check 2 before distribute 0 0
+DEAL::check 2 level  distribute 0 1
+DEAL::check 2 after  distribute 1 1
+DEAL::check 2 after  clear      0 0
+DEAL::check 3 before distribute 0 0
+DEAL::check 3 after  distribute 1 0
+DEAL::check 3 level  distribute 1 1
+DEAL::check 3 after  clear      0 0
+DEAL::check 3 before distribute 0 0
+DEAL::check 3 level  distribute 0 1
+DEAL::check 3 after  distribute 1 1
+DEAL::check 3 after  clear      0 0
index e96ea4f0afb96ed22d17286719b5cbd19b2d78e6..3a9351226c9ae816e75410f1e8f5d725e5a52af9 100644 (file)
@@ -1,7 +1,7 @@
 //----------------------------------------------------------------------------
 //    $Id$
 //
-//    Copyright (C) 2000 - 2006, 2010 by the deal.II authors
+//    Copyright (C) 2000 - 2006, 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
@@ -93,12 +93,7 @@ void check()
 
 int main()
 {
-  std::ofstream logfile("renumbering_01/output");
-  deallog << std::setprecision(3);
-  deallog.attach(logfile);
-  deallog.depth_console(0);
-  deallog.threshold_double(1.e-10);
-
+  initlog(__FILE__);
   check<1> ();
   check<2> ();
   check<3> ();
index ef06b334b0e9d44435fcd652a807250392290597..620d406d0fa4dbc12fe085a7b6397a0c3184acea 100644 (file)
@@ -1,7 +1,7 @@
 //----------------------------------------------------------------------------
 //    $Id$
 //
-//    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors
+//    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 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
@@ -60,10 +60,7 @@ void check()
 
 int main()
 {
-  std::ofstream logfile("renumbering_02/output");
-  deallog.attach(logfile);
-  deallog.depth_console(0);
-
+  initlog(__FILE__);
   check<1> ();
   check<2> ();
   check<3> ();
index f77d24206e97ccc866464101431c20d424c9938d..e868d70130a0af22529b9757d621eaf74ab65bc4 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2000 - 2006 by the deal.II authors
+//    Copyright (C) 2000 - 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
@@ -68,10 +68,7 @@ void check()
 
 int main()
 {
-  std::ofstream logfile("renumbering_03/output");
-  deallog.attach(logfile);
-  deallog.depth_console(0);
-
+  initlog(__FILE__);
   check<1> ();
   check<2> ();
   check<3> ();
diff --git a/tests/trilinos/mg_transfer_prebuilt_01.cc b/tests/trilinos/mg_transfer_prebuilt_01.cc
new file mode 100644 (file)
index 0000000..7a7bab7
--- /dev/null
@@ -0,0 +1,166 @@
+//----------------------------------------------------------------------------
+//    transfer.cc,v 1.13 2005/12/30 16:07:03 guido Exp
+//    Version:
+//
+//    Copyright (C) 2000 - 2007, 2009, 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.
+//
+//----------------------------------------------------------------------------
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/mg_level_object.h>
+#include <deal.II/lac/trilinos_vector.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_renumbering.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/multigrid/mg_dof_handler.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_tools.h>
+
+#include <fstream>
+#include <iomanip>
+#include <iomanip>
+#include <algorithm>
+
+using namespace std;
+
+template <int dim, int spacedim>
+void
+reinit_vector (const dealii::MGDoFHandler<dim,spacedim> &mg_dof,
+              MGLevelObject<TrilinosWrappers::MPI::Vector> &v)
+{
+  const dealii::parallel::distributed::Triangulation<dim,spacedim> * tria =
+    (dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim>*>
+     (&mg_dof.get_tria()));
+  AssertThrow(tria!=NULL, ExcMessage("multigrid with Trilinos vectors only works with distributed Triangulation!"));
+  
+  for (unsigned int level=v.get_minlevel();
+       level<=v.get_maxlevel();++level)
+    {
+      v[level].reinit(mg_dof.locally_owned_mg_dofs(level), tria->get_communicator());
+    }
+}
+
+
+template <int dim>
+void check_simple(const FiniteElement<dim>& fe)
+{
+  deallog << fe.get_name() << std::endl;
+
+  parallel::distributed::Triangulation<dim> tr(
+    MPI_COMM_WORLD,Triangulation<dim>::
+    limit_level_difference_at_vertices);
+  
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(2);
+
+  MGDoFHandler<dim> mgdof(tr);
+  mgdof.distribute_dofs(fe);
+
+  MGTransferPrebuilt<TrilinosWrappers::MPI::Vector> transfer;
+  transfer.build_matrices(mgdof);
+
+  MGLevelObject<TrilinosWrappers::MPI::Vector> u(0, tr.n_levels()-1);
+  reinit_vector(mgdof, u);
+                                  // First prolongate the constant
+                                  // vector.  For Lagrange elements,
+                                  // the values are just the number
+                                  // of degrees of freedom.
+  u[0] = 1.;
+  transfer.prolongate(1,u[1],u[0]);
+  transfer.prolongate(2,u[2],u[1]);
+  deallog << "u0\t" <<  (u[0]*u[0]+.5) << std::endl
+         << "u1\t" <<  (u[1]*u[1]+.5) << std::endl
+         << "u2\t" <<  (u[2]*u[2]+.5) << std::endl;
+                                  // Now restrict the same vectors.
+  u[1] = 0.;
+  u[0] = 0.;
+  transfer.restrict_and_add(2,u[1],u[2]);
+  transfer.restrict_and_add(1,u[0],u[1]);
+  deallog << "u1\t" <<  (u[1]*u[1]+.5) << std::endl
+         << "u0\t" <<  (u[0]*u[0]+.5) << std::endl;
+
+                                  // Now the same for a non-constant
+                                  // vector
+  for (unsigned int i=0;i<u[0].size();++i)
+    u[0](i) = i;
+  transfer.prolongate(1,u[1],u[0]);
+  transfer.prolongate(2,u[2],u[1]);
+  deallog << "u0\t" <<  (u[0]*u[0]+.5) << std::endl
+         << "u1\t" <<  (u[1]*u[1]+.5) << std::endl
+         << "u2\t" <<  (u[2]*u[2]+.5) << std::endl;
+                                  // Now restrict the same vectors.
+  u[1] = 0.;
+  u[0] = 0.;
+  transfer.restrict_and_add(2,u[1],u[2]);
+  transfer.restrict_and_add(1,u[0],u[1]);
+  deallog << "u1\t" <<  (u[1]*u[1]+.5) << std::endl
+         << "u0\t" <<  (u[0]*u[0]+.5) << std::endl;
+
+                                  // Fill a global vector by counting
+                                  // from one up
+  TrilinosWrappers::MPI::Vector v;
+  v.reinit(mgdof.locally_owned_dofs(), MPI_COMM_WORLD);
+  for (unsigned int i=0;i<v.size();++i)
+    v(i) = i+1;
+
+  transfer.copy_to_mg(mgdof, u, v);
+  for (unsigned int i=0; i<u[2].size();++i)
+    deallog << ' ' << (int) u[2](i);
+  deallog << std::endl;
+
+                                  // Now do the opposite: fill a
+                                  // multigrid vector counting the
+                                  // dofs and see where the numbers go
+  v = 0.;
+  for (unsigned int i=0;i<u[2].size();++i)
+    u[2](i) = i+1;
+  transfer.copy_from_mg(mgdof, v, u);
+  for (unsigned int i=0; i<v.size();++i)
+    deallog << ' ' << (int) v(i);
+  deallog << std::endl;
+  v.equ(-1., v);
+  transfer.copy_from_mg_add(mgdof, v, u);
+  deallog << "diff " << v.l2_norm() << std::endl;
+}
+
+
+int main(int argc, char** argv)
+{
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+  
+  const std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog << std::setprecision(6);
+  deallog.threshold_double(1.e-10);
+  deallog.attach(logfile);
+//  deallog.depth_console (0);  
+  
+  check_simple (FE_DGP<2>(0));
+  check_simple (FE_DGP<2>(1));
+  check_simple (FE_DGQ<2>(1));
+  check_simple (FE_DGQ<2>(2));
+  check_simple (FE_Q<2>(1));
+  check_simple (FE_Q<2>(2));
+  check_simple (FESystem<2>(FE_DGQ<2>(1), 2));
+  check_simple (FESystem<2>(FE_DGP<2>(1), 2, FE_DGQ<2>(1), 3));
+
+  check_simple (FE_RaviartThomasNodal<2>(1));
+  check_simple (FESystem<2>(FE_RaviartThomas<2>(1),1,FE_DGQ<2>(0),2));
+
+//TODO: Reenable after implementing renumber_dofs in 3D
+  
+  // check_simple (FE_DGQ<3>(1));
+  // check_simple (FE_Q<3>(2));
+}
diff --git a/tests/trilinos/mg_transfer_prebuilt_01/cmp/generic b/tests/trilinos/mg_transfer_prebuilt_01/cmp/generic
new file mode 100644 (file)
index 0000000..a1c5f76
--- /dev/null
@@ -0,0 +1,169 @@
+
+DEAL::FE_DGP<2>(0)
+DEAL::u0       1.50000
+DEAL::u1       4.50000
+DEAL::u2       16.5000
+DEAL::u1       64.5000
+DEAL::u0       256.500
+DEAL::u0       0.500000
+DEAL::u1       0.500000
+DEAL::u2       0.500000
+DEAL::u1       0.500000
+DEAL::u0       0.500000
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+DEAL::diff 0
+DEAL::FE_DGP<2>(1)
+DEAL::u0       3.50000
+DEAL::u1       12.5000
+DEAL::u2       48.5000
+DEAL::u1       192.500
+DEAL::u0       768.500
+DEAL::u0       5.50000
+DEAL::u1       20.5000
+DEAL::u2       80.5000
+DEAL::u1       320.500
+DEAL::u0       1280.50
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
+DEAL::diff 0
+DEAL::FE_DGQ<2>(1)
+DEAL::u0       4.50000
+DEAL::u1       16.5000
+DEAL::u2       64.5000
+DEAL::u1       256.500
+DEAL::u0       1024.50
+DEAL::u0       14.5000
+DEAL::u1       46.5000
+DEAL::u2       174.500
+DEAL::u1       676.500
+DEAL::u0       2484.50
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
+DEAL::diff 0
+DEAL::FE_DGQ<2>(2)
+DEAL::u0       9.50000
+DEAL::u1       36.5000
+DEAL::u2       144.500
+DEAL::u1       946.062
+DEAL::u0       4774.45
+DEAL::u0       204.500
+DEAL::u1       726.500
+DEAL::u2       2814.50
+DEAL::u1       17973.9
+DEAL::u0       82623.7
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
+DEAL::diff 0
+DEAL::FE_Q<2>(1)
+DEAL::u0       4.50000
+DEAL::u1       9.50000
+DEAL::u2       25.5000
+DEAL::u1       72.7500
+DEAL::u0       156.750
+DEAL::u0       14.5000
+DEAL::u1       28.2500
+DEAL::u2       72.3750
+DEAL::u1       196.266
+DEAL::u0       400.891
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
+DEAL::diff 0
+DEAL::FE_Q<2>(2)
+DEAL::u0       9.50000
+DEAL::u1       25.5000
+DEAL::u2       81.5000
+DEAL::u1       320.016
+DEAL::u0       1197.23
+DEAL::u0       204.500
+DEAL::u1       770.738
+DEAL::u2       2854.85
+DEAL::u1       12165.9
+DEAL::u0       49857.5
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+DEAL::diff 0
+DEAL::FESystem<2>[FE_DGQ<2>(1)^2]
+DEAL::u0       8.50000
+DEAL::u1       32.5000
+DEAL::u2       128.500
+DEAL::u1       512.500
+DEAL::u0       2048.50
+DEAL::u0       140.500
+DEAL::u1       540.500
+DEAL::u2       2140.50
+DEAL::u1       8520.50
+DEAL::u0       33640.5
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
+DEAL::diff 0
+DEAL::FESystem<2>[FE_DGP<2>(1)^2-FE_DGQ<2>(1)^3]
+DEAL::u0       18.5000
+DEAL::u1       72.5000
+DEAL::u2       288.500
+DEAL::u1       1152.50
+DEAL::u0       4608.50
+DEAL::u0       1785.50
+DEAL::u1       7110.50
+DEAL::u2       28410.5
+DEAL::u1       113581.
+DEAL::u0       453661.
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
+DEAL::diff 0
+DEAL::FE_RaviartThomasNodal<2>(1)
+DEAL::u0       12.5000
+DEAL::u1       10.5000
+DEAL::u2       9.50000
+DEAL::u1       9.43750
+DEAL::u0       9.14844
+DEAL::u0       506.500
+DEAL::u1       517.750
+DEAL::u2       510.078
+DEAL::u1       532.428
+DEAL::u0       548.030
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
+DEAL::diff 0
+DEAL::FESystem<2>[FE_RaviartThomas<2>(1)-FE_DGQ<2>(0)^2]
+DEAL::u0       14.5000
+DEAL::u1       18.5000
+DEAL::u2       41.5000
+DEAL::u1       141.438
+DEAL::u0       527.711
+DEAL::u0       819.500
+DEAL::u1       2005.25
+DEAL::u2       5803.36
+DEAL::u1       21285.4
+DEAL::u0       81885.5
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
+DEAL::diff 0
+DEAL::FE_DGQ<3>(1)
+DEAL::u0       8.50000
+DEAL::u1       64.5000
+DEAL::u2       512.500
+DEAL::u1       4096.50
+DEAL::u0       32768.5
+DEAL::u0       140.500
+DEAL::u1       952.500
+DEAL::u2       7280.50
+DEAL::u1       56896.5
+DEAL::u0       425600.
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512
+DEAL::diff 0
+DEAL::FE_Q<3>(2)
+DEAL::u0       27.5000
+DEAL::u1       125.500
+DEAL::u2       729.500
+DEAL::u1       5711.84
+DEAL::u0       41399.8
+DEAL::u0       6201.50
+DEAL::u1       41649.9
+DEAL::u2       283615.
+DEAL::u1       2.42888e+06
+DEAL::u0       1.94204e+07
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729
+DEAL:: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729
+DEAL::diff 0
diff --git a/tests/trilinos/sparse_matrix_iterator.cc b/tests/trilinos/sparse_matrix_iterator.cc
new file mode 100644 (file)
index 0000000..3d3500b
--- /dev/null
@@ -0,0 +1,77 @@
+//----------------------------------------------------------------------
+//    $Id: functional_01.cc 23753 2011-05-30 00:22:23Z bangerth $
+//
+//    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.
+//
+//----------------------------------------------------------------------
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+
+int main(int argc, char ** argv)
+{
+  const std::string logname = JobIdentifier::base_name(__FILE__) + std::string("/output");
+  std::ofstream logfile(logname.c_str());
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+  
+  TrilinosWrappers::SparsityPattern pattern(4,5,2);
+  pattern.add(0,2);
+  pattern.add(0,0);
+  pattern.add(1,0);
+  pattern.add(1,3);
+  pattern.add(2,4);
+  pattern.add(2,2);
+  pattern.add(3,0);
+  pattern.add(3,4);
+  pattern.compress();
+  
+  TrilinosWrappers::SparseMatrix matrix(pattern);
+  matrix.set(0,2, 3.5);
+  matrix.set(0,0, 1.);
+  matrix.set(1,0, -2.);
+  matrix.set(1,3, 1.5);
+  matrix.set(2,4, -2.25);
+  matrix.set(2,2, -0.5);
+  matrix.set(3,0, 2.);
+  matrix.set(3,4, 0.);
+
+                                  // Print the matrix
+  for (TrilinosWrappers::SparseMatrix::const_iterator i=matrix.begin(); i != matrix.end();++i)
+    deallog << i->row() << ' ' << i->column() << ' ' << i->value() << std::endl;
+  deallog << std::endl;
+  
+                                  // Add 0.5 to each element
+  for (TrilinosWrappers::SparseMatrix::iterator i=matrix.begin(); i != matrix.end();++i)
+    i->value() += .5;
+  
+                                  // Print the matrix
+  for (TrilinosWrappers::SparseMatrix::const_iterator i=matrix.begin(); i != matrix.end();++i)
+    deallog << i->row() << ' ' << i->column() << ' ' << i->value() << std::endl;
+  deallog << std::endl;
+  
+                                  // Subtract 1 from each element in row 2
+  for (TrilinosWrappers::SparseMatrix::iterator i=matrix.begin(2); i != matrix.end(2);++i)
+    i->value() -= 1.;
+
+                                  //  Double each element in row 1
+  for (TrilinosWrappers::SparseMatrix::iterator i=matrix.begin(1); i != matrix.end(1);++i)
+    i->value() *= 2;
+
+                                  // Set the first entry to zero
+  matrix.begin()->value() = 0;
+  
+                                  // Print the matrix
+  for (TrilinosWrappers::SparseMatrix::const_iterator i=matrix.begin(); i != matrix.end();++i)
+    deallog << i->row() << ' ' << i->column() << ' ' << i->value() << std::endl;
+  deallog << std::endl;
+}
diff --git a/tests/trilinos/sparse_matrix_iterator/cmp/generic b/tests/trilinos/sparse_matrix_iterator/cmp/generic
new file mode 100644 (file)
index 0000000..403adcd
--- /dev/null
@@ -0,0 +1,28 @@
+
+DEAL::0 0 1.00000
+DEAL::0 2 3.50000
+DEAL::1 0 -2.00000
+DEAL::1 3 1.50000
+DEAL::2 2 -0.500000
+DEAL::2 4 -2.25000
+DEAL::3 0 2.00000
+DEAL::3 4 0.00000
+DEAL::
+DEAL::0 0 1.50000
+DEAL::0 2 4.00000
+DEAL::1 0 -1.50000
+DEAL::1 3 2.00000
+DEAL::2 2 0.00000
+DEAL::2 4 -1.75000
+DEAL::3 0 2.50000
+DEAL::3 4 0.500000
+DEAL::
+DEAL::0 0 0.00000
+DEAL::0 2 4.00000
+DEAL::1 0 -3.00000
+DEAL::1 3 4.00000
+DEAL::2 2 -1.00000
+DEAL::2 4 -2.75000
+DEAL::3 0 2.50000
+DEAL::3 4 0.500000
+DEAL::
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_01.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_01.cc
new file mode 100644 (file)
index 0000000..15be982
--- /dev/null
@@ -0,0 +1,84 @@
+//----------------------------  trilinos_sparse_matrix_iterator_01.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_01.cc  ---------------------------
+
+
+// TrilinosWrappers::SparseMatrix::const_iterator::operator++(int) was declared but not defined
+// for some time, leading to a linker error
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if ((i+2*j+1) % 3 == 0)
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  TrilinosWrappers::SparseMatrix::const_iterator i = m.begin();
+  deallog << i->value() << std::endl;
+  ++i;
+  deallog << i->value() << std::endl;
+  i++;
+  deallog << i->value() << std::endl;
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_01/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_01/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_01/cmp/generic
new file mode 100644 (file)
index 0000000..df15178
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL::0
+DEAL::0
+DEAL::0
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_02.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_02.cc
new file mode 100644 (file)
index 0000000..4a9ba63
--- /dev/null
@@ -0,0 +1,95 @@
+//----------------------------  trilinos_sparse_matrix_iterator_02.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_02.cc  ---------------------------
+
+
+// test setting some elements and reading them back from a const matrix
+// iterator
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        m.set (i,j, i*j);
+
+  TrilinosWrappers::SparseMatrix::const_iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    {
+      deallog << i->row() << ' ' << i->column() << ' '
+              << i->value() << std::endl;
+      Assert (std::fabs(i->value() - i->row()*i->column()) < 1e-14,
+              ExcInternalError());
+    }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_02/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_02/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_02/cmp/generic
new file mode 100644 (file)
index 0000000..3262f31
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 0
+DEAL::0 1 0
+DEAL::0 4 0
+DEAL::1 1 1.00000
+DEAL::1 2 2.00000
+DEAL::2 0 0
+DEAL::2 2 4.00000
+DEAL::2 3 6.00000
+DEAL::3 1 3.00000
+DEAL::3 3 9.00000
+DEAL::3 4 12.0000
+DEAL::4 2 8.00000
+DEAL::4 4 16.0000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_03.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_03.cc
new file mode 100644 (file)
index 0000000..71f660e
--- /dev/null
@@ -0,0 +1,95 @@
+//----------------------------  trilinos_sparse_matrix_iterator_03.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_03.cc  ---------------------------
+
+
+// test setting some elements and reading them back from a non-const matrix
+// iterator
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        m.set (i,j, i*j);
+
+  TrilinosWrappers::SparseMatrix::iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    {
+      deallog << i->row() << ' ' << i->column() << ' '
+              << i->value() << std::endl;
+      Assert (std::fabs(i->value() - i->row()*i->column()) < 1e-14,
+              ExcInternalError());
+    }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_03/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_03/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_03/cmp/generic
new file mode 100644 (file)
index 0000000..50fad50
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 0.00000
+DEAL::0 1 0.00000
+DEAL::0 4 0.00000
+DEAL::1 1 1.00000
+DEAL::1 2 2.00000
+DEAL::2 0 0.00000
+DEAL::2 2 4.00000
+DEAL::2 3 6.00000
+DEAL::3 1 3.00000
+DEAL::3 3 9.00000
+DEAL::3 4 12.0000
+DEAL::4 2 8.00000
+DEAL::4 4 16.0000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_04.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_04.cc
new file mode 100644 (file)
index 0000000..7580155
--- /dev/null
@@ -0,0 +1,94 @@
+//----------------------------  trilinos_sparse_matrix_iterator_04.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_04.cc  ---------------------------
+
+// test setting some elements using a non-const matrix iterator and operator=,
+// and reading them back through the matrix itself
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+  TrilinosWrappers::SparseMatrix m(sp);
+
+  TrilinosWrappers::SparseMatrix::iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    i->value() = i->row()*i->column();
+
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        {
+          deallog << i << ' ' << j << ' ' << m.el(i,j)
+                  << std::endl;
+          Assert (std::fabs(m.el(i,j)-i*j) < 1e-14,
+                  ExcInternalError());
+        }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_04/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_04/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_04/cmp/generic
new file mode 100644 (file)
index 0000000..3262f31
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 0
+DEAL::0 1 0
+DEAL::0 4 0
+DEAL::1 1 1.00000
+DEAL::1 2 2.00000
+DEAL::2 0 0
+DEAL::2 2 4.00000
+DEAL::2 3 6.00000
+DEAL::3 1 3.00000
+DEAL::3 3 9.00000
+DEAL::3 4 12.0000
+DEAL::4 2 8.00000
+DEAL::4 4 16.0000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_05.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_05.cc
new file mode 100644 (file)
index 0000000..dd2b189
--- /dev/null
@@ -0,0 +1,101 @@
+//----------------------------  trilinos_sparse_matrix_iterator_05.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_05.cc  ---------------------------
+
+// test setting some elements using a non-const matrix iterator and operator+=,
+// and reading them back through the matrix itself
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        m.set(i,j,1.);
+
+  TrilinosWrappers::SparseMatrix::iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    i->value() += i->row()*i->column();
+
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        {
+          deallog << i << ' ' << j << ' ' << m.el(i,j)
+                  << std::endl;
+          Assert (std::fabs(m.el(i,j)-(1.+i*j)) < 1e-14,
+                  ExcInternalError());
+        }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_05/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_05/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_05/cmp/generic
new file mode 100644 (file)
index 0000000..f07ba8b
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 1.00000
+DEAL::0 1 1.00000
+DEAL::0 4 1.00000
+DEAL::1 1 2.00000
+DEAL::1 2 3.00000
+DEAL::2 0 1.00000
+DEAL::2 2 5.00000
+DEAL::2 3 7.00000
+DEAL::3 1 4.00000
+DEAL::3 3 10.0000
+DEAL::3 4 13.0000
+DEAL::4 2 9.00000
+DEAL::4 4 17.0000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_06.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_06.cc
new file mode 100644 (file)
index 0000000..b6c83bc
--- /dev/null
@@ -0,0 +1,101 @@
+//----------------------------  trilinos_sparse_matrix_iterator_06.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_06.cc  ---------------------------
+
+// test setting some elements using a non-const matrix iterator and operator-=,
+// and reading them back through the matrix itself
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        m.set(i,j,1.);
+
+  TrilinosWrappers::SparseMatrix::iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    i->value() -= i->row()*i->column();
+
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        {
+          deallog << i << ' ' << j << ' ' << m.el(i,j)
+                  << std::endl;
+          Assert (std::fabs(m.el(i,j)-(1.-i*j)) < 1e-14,
+                  ExcInternalError());
+        }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_06/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_06/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_06/cmp/generic
new file mode 100644 (file)
index 0000000..1c38f7a
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 1.00000
+DEAL::0 1 1.00000
+DEAL::0 4 1.00000
+DEAL::1 1 0
+DEAL::1 2 -1.00000
+DEAL::2 0 1.00000
+DEAL::2 2 -3.00000
+DEAL::2 3 -5.00000
+DEAL::3 1 -2.00000
+DEAL::3 3 -8.00000
+DEAL::3 4 -11.0000
+DEAL::4 2 -7.00000
+DEAL::4 4 -15.0000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_07.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_07.cc
new file mode 100644 (file)
index 0000000..bca0332
--- /dev/null
@@ -0,0 +1,101 @@
+//----------------------------  trilinos_sparse_matrix_iterator_07.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_07.cc  ---------------------------
+
+// test setting some elements using a non-const matrix iterator and operator*=,
+// and reading them back through the matrix itself
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        m.set(i,j,i*j);
+
+  TrilinosWrappers::SparseMatrix::iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    i->value() *= 2;
+
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        {
+          deallog << i << ' ' << j << ' ' << m.el(i,j)
+                  << std::endl;
+          Assert (std::fabs(m.el(i,j)-(2.*i*j)) < 1e-14,
+                  ExcInternalError());
+        }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_07/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_07/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_07/cmp/generic
new file mode 100644 (file)
index 0000000..081fbcc
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 0
+DEAL::0 1 0
+DEAL::0 4 0
+DEAL::1 1 2.00000
+DEAL::1 2 4.00000
+DEAL::2 0 0
+DEAL::2 2 8.00000
+DEAL::2 3 12.0000
+DEAL::3 1 6.00000
+DEAL::3 3 18.0000
+DEAL::3 4 24.0000
+DEAL::4 2 16.0000
+DEAL::4 4 32.0000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_08.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_08.cc
new file mode 100644 (file)
index 0000000..d34a6e2
--- /dev/null
@@ -0,0 +1,101 @@
+//----------------------------  trilinos_sparse_matrix_iterator_08.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_08.cc  ---------------------------
+
+// test setting some elements using a non-const matrix iterator and operator/=,
+// and reading them back through the matrix itself
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+  TrilinosWrappers::SparsityPattern sp (5,5,3);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        sp.add (i,j);
+  sp.compress ();
+
+  TrilinosWrappers::SparseMatrix m(sp);
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        m.set(i,j,i*j);
+
+  TrilinosWrappers::SparseMatrix::iterator i = m.begin();
+  for (; i!=m.end(); ++i)
+    i->value() /= 2;
+
+  for (unsigned int i=0; i<5; ++i)
+    for (unsigned int j=0; j<5; ++j)
+      if (((i+2*j+1) % 3 == 0)
+          ||
+          (i==j))
+        {
+          deallog << i << ' ' << j << ' ' << m.el(i,j)
+                  << std::endl;
+          Assert (std::fabs(m.el(i,j)-(i*j/2.)) < 1e-14,
+                  ExcInternalError());
+        }
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_08/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_08/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_08/cmp/generic
new file mode 100644 (file)
index 0000000..9290c35
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::0 0 0
+DEAL::0 1 0
+DEAL::0 4 0
+DEAL::1 1 0.500000
+DEAL::1 2 1.00000
+DEAL::2 0 0
+DEAL::2 2 2.00000
+DEAL::2 3 3.00000
+DEAL::3 1 1.50000
+DEAL::3 3 4.50000
+DEAL::3 4 6.00000
+DEAL::4 2 4.00000
+DEAL::4 4 8.00000
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_09.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_09.cc
new file mode 100644 (file)
index 0000000..d13075f
--- /dev/null
@@ -0,0 +1,85 @@
+//----------------------------  trilinos_sparse_matrix_iterator_09.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_09.cc  ---------------------------
+
+
+// this test, extracted from dof_constraints_09 and
+// trilinos_sparse_matrix_iterator_09, used to fail with aborts
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+                                   // create a sparsity pattern with totally
+                                   // empty lines (not even diagonals, since
+                                   // not quadratic)
+  TrilinosWrappers::SparsityPattern sparsity(4,5,1);
+  sparsity.add (1,1);
+  sparsity.add (3,1);
+  sparsity.compress ();
+
+                                   // attach a sparse matrix to it
+  TrilinosWrappers::SparseMatrix A(sparsity);
+
+                                   // and loop over the elements of it
+  for (TrilinosWrappers::SparseMatrix::const_iterator k=A.begin();
+       k!=A.end(); ++k)
+    deallog << k->row() << ' ' << k->column() << ' ' << k->value()
+            << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_09/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_09/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_09/cmp/generic
new file mode 100644 (file)
index 0000000..b5e2bfd
--- /dev/null
@@ -0,0 +1,4 @@
+
+DEAL::0 0 0
+DEAL::1 1 0
+DEAL::3 1 0
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_10.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_10.cc
new file mode 100644 (file)
index 0000000..4074234
--- /dev/null
@@ -0,0 +1,87 @@
+//----------------------------  trilinos_sparse_matrix_iterator_10.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_10.cc  ---------------------------
+
+
+// this test, extracted from dof_constraints_09 and trilinos_sparse_matrix_iterator_10,
+// used to fail with aborts. this test is equivalent to
+// trilinos_sparse_matrix_iterator_09, except that we use the postfix operator++
+// instead of the prefix form
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+                                   // create a sparsity pattern with totally
+                                   // empty lines (not even diagonals, since
+                                   // not quadratic)
+  TrilinosWrappers::SparsityPattern sparsity(4,5,1);
+  sparsity.add (1,1);
+  sparsity.add (3,1);
+  sparsity.compress ();
+
+                                   // attach a sparse matrix to it
+  TrilinosWrappers::SparseMatrix A(sparsity);
+
+                                   // and loop over the elements of it
+  for (TrilinosWrappers::SparseMatrix::const_iterator k=A.begin();
+       k!=A.end(); k++)
+    deallog << k->row() << ' ' << k->column() << ' ' << k->value()
+            << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_10/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_10/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_10/cmp/generic
new file mode 100644 (file)
index 0000000..b5e2bfd
--- /dev/null
@@ -0,0 +1,4 @@
+
+DEAL::0 0 0
+DEAL::1 1 0
+DEAL::3 1 0
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_11.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_11.cc
new file mode 100644 (file)
index 0000000..0090d1c
--- /dev/null
@@ -0,0 +1,95 @@
+//----------------------------  trilinos_sparse_matrix_iterator_11.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_11.cc  ---------------------------
+
+
+// certain comparisons between sparse matrix iterators didn't compile.
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+                                   // create a sparsity pattern with totally
+                                   // empty lines (not even diagonals, since
+                                   // not quadratic)
+  TrilinosWrappers::SparsityPattern sparsity(4,5,1);
+  sparsity.add (1,1);
+  sparsity.add (3,1);
+  sparsity.compress ();
+
+                                   // attach a sparse matrix to it
+  TrilinosWrappers::SparseMatrix A(sparsity);
+
+  TrilinosWrappers::SparseMatrix::iterator k = A.begin(),
+                                 j = ++A.begin();
+
+  Assert (k < j, ExcInternalError());
+  Assert (j > k, ExcInternalError());
+
+  Assert (!(j < k), ExcInternalError());
+  Assert (!(k > j), ExcInternalError());
+
+  Assert (k != j, ExcInternalError());
+  Assert (!(k == j), ExcInternalError());
+
+  Assert (k == k, ExcInternalError());
+  Assert (!(k != k), ExcInternalError());
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_11/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_11/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_11/cmp/generic
new file mode 100644 (file)
index 0000000..0fd8fc1
--- /dev/null
@@ -0,0 +1,2 @@
+
+DEAL::OK
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_12.cc b/tests/trilinos/trilinos_sparse_matrix_iterator_12.cc
new file mode 100644 (file)
index 0000000..33f8402
--- /dev/null
@@ -0,0 +1,95 @@
+//----------------------------  trilinos_sparse_matrix_iterator_12.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2004, 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
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  trilinos_sparse_matrix_iterator_12.cc  ---------------------------
+
+
+// like trilinos_sparse_matrix_iterator_11, but for const_iterators
+
+#include "../tests.h"
+#include <deal.II/lac/trilinos_sparsity_pattern.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <fstream>
+#include <iomanip>
+
+
+void test ()
+{
+                                   // create a sparsity pattern with totally
+                                   // empty lines (not even diagonals, since
+                                   // not quadratic)
+  TrilinosWrappers::SparsityPattern sparsity(4,5,1);
+  sparsity.add (1,1);
+  sparsity.add (3,1);
+  sparsity.compress ();
+
+                                   // attach a sparse matrix to it
+  TrilinosWrappers::SparseMatrix A(sparsity);
+
+  TrilinosWrappers::SparseMatrix::const_iterator k = A.begin(),
+                                       j = ++A.begin();
+
+  Assert (k < j, ExcInternalError());
+  Assert (j > k, ExcInternalError());
+
+  Assert (!(j < k), ExcInternalError());
+  Assert (!(k > j), ExcInternalError());
+
+  Assert (k != j, ExcInternalError());
+  Assert (!(k == j), ExcInternalError());
+
+  Assert (k == k, ExcInternalError());
+  Assert (!(k != k), ExcInternalError());
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int main (int argc, char **argv)
+{
+  std::ofstream logfile("trilinos_sparse_matrix_iterator_12/output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+
+  try
+    {
+      test ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Exception on processing: " << std::endl
+               << exc.what() << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      deallog << "Unknown exception!" << std::endl
+               << "Aborting!" << std::endl
+               << "----------------------------------------------------"
+               << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/trilinos/trilinos_sparse_matrix_iterator_12/cmp/generic b/tests/trilinos/trilinos_sparse_matrix_iterator_12/cmp/generic
new file mode 100644 (file)
index 0000000..0fd8fc1
--- /dev/null
@@ -0,0 +1,2 @@
+
+DEAL::OK

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.