]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
component/block indices fixed
authorguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 30 Mar 2006 16:01:32 +0000 (16:01 +0000)
committerguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 30 Mar 2006 16:01:32 +0000 (16:01 +0000)
git-svn-id: https://svn.dealii.org/trunk@12775 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/fe.h
deal.II/deal.II/source/fe/fe.cc
deal.II/deal.II/source/fe/fe_system.cc
tests/fe/interpolate_system.cc
tests/fe/shapes.cc
tests/fe/system_index.cc
tests/fe/system_index/cmp/generic

index b1671063ed1ff5ef2917b58920a3c668990c5bef..da31faf48869d784924944787a987137cf74c1fb 100644 (file)
@@ -1184,10 +1184,10 @@ class FiniteElement : public Subscriptor,
     unsigned int first_block_of_base(unsigned int b) const;
     
                                     /**
-                                     * Given a vector component,
-                                     * return an index which base
+                                     * For each vector component,
+                                     * return which base
                                      * element implements this
-                                     * component, and which vector
+                                     * component and which vector
                                      * component in this base element
                                      * this is. This information is
                                      * only of interest for
@@ -1207,7 +1207,7 @@ class FiniteElement : public Subscriptor,
                                      * is always equal to a pair of
                                      * zeros.
                                      */
-    std::pair<unsigned int,unsigned int>
+    std::pair<unsigned int, unsigned int>
     component_to_base_index (const unsigned int component) const;
     
     
@@ -1907,17 +1907,17 @@ class FiniteElement : public Subscriptor,
                                      * The base element establishing
                                      * a component.
                                      *
-                                     * This table converts a
-                                     * component number to a pair
-                                     * consisting of the
-                                     * @p base_element number, and
-                                     * the component within this base
-                                     * element. While component
-                                     * information contains
-                                     * multiplicity of base elements,
-                                     * the result allows access to
-                                     * shape functions of the base
-                                     * element.
+                                     * For each component number
+                                     * <tt>c</tt>, the entries have
+                                     * the following meaning:
+                                     * <dl>
+                                     * <dd><tt>table[c].first.first</tt></dd>
+                                     * <dt>Number of the base element for <tt>c</tt>.
+                                     * <dd><tt>table[c].first.second</tt></dd>
+                                     * <dt>Component in the base element for <tt>c</tt>.
+                                     * <dd><tt>table[c].second</tt></dd>
+                                     * <dt>Multiple of the base element for <tt>c</tt>.
+                                     * </dl>
                                      *
                                      * This variable is set to the
                                      * correct size by the
@@ -1930,7 +1930,7 @@ class FiniteElement : public Subscriptor,
                                      * case, the initialization by
                                      * the base class is sufficient.
                                      */
-    std::vector<std::pair<unsigned int, unsigned int> > component_to_base_table;
+    std::vector<std::pair<std::pair<unsigned int, unsigned int>, unsigned int> > component_to_base_table;
     
                                     /**
                                      * Projection matrices are
@@ -2273,7 +2273,7 @@ FiniteElement<dim>::component_to_base_index (const unsigned int index) const
   Assert(index < component_to_base_table.size(),
         ExcIndexRange(index, 0, component_to_base_table.size()));
 
-  return component_to_base_table[index];
+  return component_to_base_table[index].first;
 }
 
 
index f07aab84be1573494f2842d953ee5e23c8d4c391..29f656b918d4808342b0842e70c919de40f2e561 100644 (file)
@@ -116,7 +116,7 @@ FiniteElement<dim>::FiniteElement (
                 system_to_base_table(this->dofs_per_cell),
                 face_system_to_base_table(this->dofs_per_face),                
                 component_to_base_table (this->components,
-                                         std::make_pair(0U, 0U)),
+                                         std::make_pair(std::make_pair(0U, 0U), 0U)),
                 restriction_is_additive_flags(r_i_a_f),
                nonzero_components (nonzero_c)
 {
@@ -319,20 +319,16 @@ FiniteElement<dim>::get_prolongation_matrix (const unsigned int child) const
 }
 
 
+//TODO:[GK] This is probably not the most efficient way of doing this.
 template <int dim>  
 unsigned int
 FiniteElement<dim>::component_to_block_index (const unsigned int index) const
 {
   Assert (index < this->n_components(),
          ExcIndexRange(index, 0, this->n_components()));
-                                  // The block is computed simply as
-                                  // first block of this base plus
-                                  // the index within the base blocks
-  const std::pair<unsigned int, unsigned int>
-    base = component_to_base_index(index);
-                                  // Integer division used on purpose!
-  const unsigned int block_in_base = base.second / base_element(base.first).n_components();
-  return first_block_of_base(base.first) + block_in_base;
+
+  return first_block_of_base(component_to_base_table[index].first.first)
+    + component_to_base_table[index].second;
 }
 
 
index 5bde2b70ebf4e31cda0d2d0b45c134e90d4f3a57..072150622671e2356f72cc588e64b293ae691bd1 100644 (file)
@@ -995,7 +995,7 @@ FESystem<dim>::build_cell_tables()
     for (unsigned int m = 0; m < element_multiplicity(base); ++m)
       for (unsigned int k=0; k<base_element(base).n_components(); ++k)
        this->component_to_base_table[total_index++]
-         = std::make_pair(base,k);
+         = std::make_pair(std::make_pair(base,k), m);
   Assert (total_index == this->component_to_base_table.size(),
          ExcInternalError());
 
index e1c896ab9f71ecdbc8605609b32682990962be25..f3c1a143d13ae1509f8a734dc49b6fc72991c0d8 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$ 
 //
-//    Copyright (C) 2005 by the deal.II authors
+//    Copyright (C) 2005, 2006 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -87,7 +87,7 @@ int main()
 {
   std::ofstream logfile ("interpolate_system/output");
   deallog.attach(logfile);
-  deallog.depth_console(0);
+//  deallog.depth_console(0);
   deallog.threshold_double(1.e-15);
 
   Q1WedgeFunction<1,1,2> w1;
index 065ec49162d3edf4c1c0e1b2feb9ef0349de2ed9..97e064d8245578a7ae7bee4bdfc2563a592b32de 100644 (file)
@@ -264,9 +264,12 @@ check_values_and_derivatives (const FiniteElement<dim> &fe,
       {
         for (unsigned int c=0; c<fe.n_components(); ++c)
           {
-            const double val1 = fe_values.shape_value_component(i,x,c),
-                         val2 = fe.shape_value_component(i,q.point(x),c);
-            Assert (std::fabs(val1-val2) < 1e-13, ExcInternalError());
+            const double val1 = fe_values.shape_value_component(i,x,c);
+           const double val2 = fe.shape_value_component(i,q.point(x),c);
+           const double diff = std::fabs(val1-val2);
+           if (diff > 1e-13)
+             deallog << " values differ v" << i << "(x" << x << ") diff " << diff
+                     << std::endl;
           };
 
                                          // test something about the
@@ -319,7 +322,9 @@ check_values_and_derivatives (const FiniteElement<dim> &fe,
                 {
                   const double diff=std::fabs(tmp[j][k]);
                   if (diff>max_diff) max_diff=diff;
-                  Assert (std::fabs(tmp[j][k]) < 1e-6, ExcInternalError());
+                 const double tmpabs = std::fabs(tmp[j][k]);
+                 if (tmpabs > 1.e-6)
+                   deallog << "Second derivatives differ " << tmpabs << std::endl;
                 }
           };
 
index 5ad030b7333bc5ea8857b1a8447fab1bfb57a1ee..6901f137665c42bf4a2838de09c48956428ae122 100644 (file)
@@ -1,4 +1,4 @@
-//----------------------------  system_1.cc  ---------------------------
+//----------------------------------------------------------------------
 //    system_1.cc,v 1.3 2003/06/09 21:55:00 wolf Exp
 //    Version: 
 //
@@ -9,7 +9,7 @@
 //    to the file deal.II/doc/license.html for the  text  and
 //    fuqher information on this license.
 //
-//----------------------------  system_1.cc  ---------------------------
+//----------------------------------------------------------------------
 
 // Test the various index conversion methods
 
@@ -101,7 +101,7 @@ check_fe(const FiniteElement<dim> &fe)
       deallog << std::setw(3) << 'x';
   deallog << std::endl;
 
-  if (fe.is_primitive())
+  if (true || fe.is_primitive())
     {
       deallog << "Next two lines: component_to_base" << std::endl;
       for (unsigned int i=0;i<n_comp;++i)
@@ -150,7 +150,7 @@ main()
   logfile.precision (PRECISION);
   logfile.setf(std::ios::fixed);  
   deallog.attach(logfile);
-//  deallog.depth_console(0);
+  deallog.depth_console(0);
   deallog.threshold_double(1.e-10);
 
   check<2>();
index 754989ea03308cae5fd2f6b2c99d26f9544c0fa4..7db36b116433970335325dfda4c011e8d3d0d9e2 100644 (file)
@@ -1,4 +1,4 @@
-JobId unknown Tue Mar 28 15:59:39 2006
+
 DEAL::FESystem<2>[FE_Q<2>(1)-FE_DGQ<2>(0)]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 1 1
@@ -38,7 +38,7 @@ DEAL::0  1  0  1  0  1  0  1  2  3  4
 DEAL::0  0  1  1  2  2  3  3  0  0  0  
 DEAL::Next two lines: component_to_base
 DEAL::0  0  1  1  1  
-DEAL::0  1  0  1  2  
+DEAL::0  0  0  0  0  
 DEAL::Next line: component_to_block_index
 DEAL::0  1  2  3  4  
 DEAL::FESystem<2>[FE_DGQ<2>(1)^2-FE_DGQ<2>(0)^3]
@@ -59,7 +59,7 @@ DEAL::0  0  0  0  1  1  1  1  2  3  4
 DEAL::0  1  2  3  0  1  2  3  0  0  0  
 DEAL::Next two lines: component_to_base
 DEAL::0  0  1  1  1  
-DEAL::0  1  0  1  2  
+DEAL::0  0  0  0  0  
 DEAL::Next line: component_to_block_index
 DEAL::0  1  2  3  4  
 DEAL::FESystem<2>[FE_RaviartThomas<2>(1)-FE_DGQ<2>(1)]
@@ -78,6 +78,11 @@ DEAL::0  1  2  3  4  5  6  7  8  9  10 11 0  1  2  3
 DEAL::Next two lines: component index_in_component
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  2  2  2  2  
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  0  1  2  3  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  1  
+DEAL::0  1  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  1  
 DEAL::FESystem<2>[FE_RaviartThomas<2>(0)^2-FE_DGQ<2>(0)^3]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 2 3
@@ -94,6 +99,11 @@ DEAL::0  0  1  1  2  2  3  3  0  0  0
 DEAL::Next two lines: component index_in_component
 DEAL::x  x  x  x  x  x  x  x  4  5  6  
 DEAL::x  x  x  x  x  x  x  x  0  0  0  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  0  1  1  1  
+DEAL::0  1  0  1  0  0  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  1  1  2  3  4  
 DEAL::FESystem<2>[FE_RaviartThomas<2>(1)^2-FE_DGQ<2>(0)^3]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 2 3
@@ -110,14 +120,19 @@ DEAL::0  1  0  1  2  3  2  3  4  5  4  5  6  7  6  7  8  9  10 11 8  9  10 11 0
 DEAL::Next two lines: component index_in_component
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  4  5  6  
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  0  0  0  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  0  1  1  1  
+DEAL::0  1  0  1  0  0  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  1  1  2  3  4  
 DEAL::FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(2)-FE_DGQ<2>(0)^2]
 DEAL::Base elements:  3
 DEAL::Multiplicities: 2 1 2
-DEAL::First block   : 0 2 1
+DEAL::First block   : 0 2 3
 DEAL::Blocks : 5
 DEAL::0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 
 DEAL::Next two lines: block index_in_block
-DEAL::0  1  2  0  1  2  0  1  2  0  1  2  2  2  2  2  2  1  2  
+DEAL::0  1  2  0  1  2  0  1  2  0  1  2  2  2  2  2  2  3  4  
 DEAL::0  0  0  1  1  1  2  2  2  3  3  3  4  5  6  7  8  0  0  
 DEAL::Next three lines: base block_in_base index_in_block
 DEAL::0  0  1  0  0  1  0  0  1  0  0  1  1  1  1  1  1  2  2  
@@ -128,17 +143,17 @@ DEAL::0  1  2  0  1  2  0  1  2  0  1  2  2  2  2  2  2  3  4
 DEAL::0  0  0  1  1  1  2  2  2  3  3  3  4  5  6  7  8  0  0  
 DEAL::Next two lines: component_to_base
 DEAL::0  0  1  2  2  
-DEAL::0  1  0  0  1  
+DEAL::0  0  0  0  0  
 DEAL::Next line: component_to_block_index
-DEAL::0  1  2  1  2  
+DEAL::0  1  2  3  4  
 DEAL::FESystem<2>[FE_RaviartThomas<2>(1)^2-FE_Q<2>(2)-FE_DGQ<2>(0)^2]
 DEAL::Base elements:  3
 DEAL::Multiplicities: 2 1 2
-DEAL::First block   : 0 2 1
+DEAL::First block   : 0 2 3
 DEAL::Blocks : 5
 DEAL::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 
 DEAL::Next two lines: block index_in_block
-DEAL::2  2  2  2  0  0  1  1  2  0  0  1  1  2  0  0  1  1  2  0  0  1  1  2  0  0  0  0  1  1  1  1  2  1  2  
+DEAL::2  2  2  2  0  0  1  1  2  0  0  1  1  2  0  0  1  1  2  0  0  1  1  2  0  0  0  0  1  1  1  1  2  3  4  
 DEAL::0  1  2  3  0  1  0  1  4  2  3  2  3  5  4  5  4  5  6  6  7  6  7  7  8  9  10 11 8  9  10 11 8  0  0  
 DEAL::Next three lines: base block_in_base index_in_block
 DEAL::1  1  1  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0  0  1  2  2  
@@ -147,6 +162,11 @@ DEAL::0  1  2  3  0  1  0  1  4  2  3  2  3  5  4  5  4  5  6  6  7  6  7  7  8
 DEAL::Next two lines: component index_in_component
 DEAL::4  4  4  4  x  x  x  x  4  x  x  x  x  4  x  x  x  x  4  x  x  x  x  4  x  x  x  x  x  x  x  x  4  5  6  
 DEAL::0  1  2  3  x  x  x  x  4  x  x  x  x  5  x  x  x  x  6  x  x  x  x  7  x  x  x  x  x  x  x  x  8  0  0  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  0  1  2  2  
+DEAL::0  1  0  1  0  0  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  1  1  2  3  4  
 DEAL::FESystem<2>[FE_RaviartThomas<2>(2)-FE_Q<2>(2)]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 1 1
@@ -163,6 +183,11 @@ DEAL::0  1  2  3  0  1  2  4  3  4  5  5  6  7  8  6  9  10 11 7  12 13 14 15 16
 DEAL::Next two lines: component index_in_component
 DEAL::2  2  2  2  x  x  x  2  x  x  x  2  x  x  x  2  x  x  x  2  x  x  x  x  x  x  x  x  x  x  x  x  2  
 DEAL::0  1  2  3  x  x  x  4  x  x  x  5  x  x  x  6  x  x  x  7  x  x  x  x  x  x  x  x  x  x  x  x  8  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  1  
+DEAL::0  1  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  1  
 DEAL::FESystem<3>[FE_Q<3>(1)-FE_DGQ<3>(0)]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 1 1
@@ -202,7 +227,7 @@ DEAL::0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  2  3  4
 DEAL::0  0  1  1  2  2  3  3  4  4  5  5  6  6  7  7  0  0  0  
 DEAL::Next two lines: component_to_base
 DEAL::0  0  1  1  1  
-DEAL::0  1  0  1  2  
+DEAL::0  0  0  0  0  
 DEAL::Next line: component_to_block_index
 DEAL::0  1  2  3  4  
 DEAL::FESystem<3>[FE_DGQ<3>(1)^2-FE_DGQ<3>(0)^3]
@@ -223,7 +248,7 @@ DEAL::0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  2  3  4
 DEAL::0  1  2  3  4  5  6  7  0  1  2  3  4  5  6  7  0  0  0  
 DEAL::Next two lines: component_to_base
 DEAL::0  0  1  1  1  
-DEAL::0  1  0  1  2  
+DEAL::0  0  0  0  0  
 DEAL::Next line: component_to_block_index
 DEAL::0  1  2  3  4  
 DEAL::FESystem<3>[FE_RaviartThomas<3>(1)-FE_DGQ<3>(1)]
@@ -242,6 +267,11 @@ DEAL::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
 DEAL::Next two lines: component index_in_component
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  3  3  3  3  3  3  3  3  
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  0  1  2  3  4  5  6  7  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  1  
+DEAL::0  1  2  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  0  1  
 DEAL::FESystem<3>[FE_RaviartThomas<3>(0)^2-FE_DGQ<3>(0)^3]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 2 3
@@ -258,6 +288,11 @@ DEAL::0  0  1  1  2  2  3  3  4  4  5  5  0  0  0
 DEAL::Next two lines: component index_in_component
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  6  7  8  
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  0  0  0  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  0  0  0  1  1  1  
+DEAL::0  1  2  0  1  2  0  0  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  0  1  1  1  2  3  4  
 DEAL::FESystem<3>[FE_RaviartThomas<3>(1)^2-FE_DGQ<3>(0)^3]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 2 3
@@ -274,14 +309,19 @@ DEAL::0  1  2  3  0  1  2  3  4  5  6  7  4  5  6  7  8  9  10 11 8  9  10 11 12
 DEAL::Next two lines: component index_in_component
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  6  7  8  
 DEAL::x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  0  0  0  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  0  0  0  1  1  1  
+DEAL::0  1  2  0  1  2  0  0  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  0  1  1  1  2  3  4  
 DEAL::FESystem<3>[FE_Q<3>(1)^2-FE_Q<3>(2)-FE_DGQ<3>(0)^2]
 DEAL::Base elements:  3
 DEAL::Multiplicities: 2 1 2
-DEAL::First block   : 0 2 1
+DEAL::First block   : 0 2 3
 DEAL::Blocks : 5
 DEAL::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 43 44 
 DEAL::Next two lines: block index_in_block
-DEAL::0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1  2  
+DEAL::0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  3  4  
 DEAL::0  0  0  1  1  1  2  2  2  3  3  3  4  4  4  5  5  5  6  6  6  7  7  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 0  0  
 DEAL::Next three lines: base block_in_base index_in_block
 DEAL::0  0  1  0  0  1  0  0  1  0  0  1  0  0  1  0  0  1  0  0  1  0  0  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  2  2  
@@ -292,17 +332,17 @@ DEAL::0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  0  1  2  2
 DEAL::0  0  0  1  1  1  2  2  2  3  3  3  4  4  4  5  5  5  6  6  6  7  7  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 0  0  
 DEAL::Next two lines: component_to_base
 DEAL::0  0  1  2  2  
-DEAL::0  1  0  0  1  
+DEAL::0  0  0  0  0  
 DEAL::Next line: component_to_block_index
-DEAL::0  1  2  1  2  
+DEAL::0  1  2  3  4  
 DEAL::FESystem<3>[FE_RaviartThomas<3>(1)^2-FE_Q<3>(2)-FE_DGQ<3>(0)^2]
 DEAL::Base elements:  3
 DEAL::Multiplicities: 2 1 2
-DEAL::First block   : 0 2 1
+DEAL::First block   : 0 2 3
 DEAL::Blocks : 5
 DEAL::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 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
 DEAL::Next two lines: block index_in_block
-DEAL::2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1  2  1  2  
+DEAL::2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  1  1  1  1  2  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1  2  3  4  
 DEAL::0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 0  1  2  3  0  1  2  3  20 4  5  6  7  4  5  6  7  21 8  9  10 11 8  9  10 11 22 12 13 14 15 12 13 14 15 23 16 17 18 19 16 17 18 19 24 20 21 22 23 20 21 22 23 25 24 25 26 27 28 29 30 31 32 33 34 35 24 25 26 27 28 29 30 31 32 33 34 35 26 0  0  
 DEAL::Next three lines: base block_in_base index_in_block
 DEAL::1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  2  2  
@@ -311,6 +351,11 @@ DEAL::0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 0  1  2  3  0
 DEAL::Next two lines: component index_in_component
 DEAL::6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  x  x  x  x  x  x  x  x  6  x  x  x  x  x  x  x  x  6  x  x  x  x  x  x  x  x  6  x  x  x  x  x  x  x  x  6  x  x  x  x  x  x  x  x  6  x  x  x  x  x  x  x  x  6  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  6  7  8  
 DEAL::0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 x  x  x  x  x  x  x  x  20 x  x  x  x  x  x  x  x  21 x  x  x  x  x  x  x  x  22 x  x  x  x  x  x  x  x  23 x  x  x  x  x  x  x  x  24 x  x  x  x  x  x  x  x  25 x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  26 0  0  
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  0  0  0  1  2  2  
+DEAL::0  1  2  0  1  2  0  0  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  0  1  1  1  2  3  4  
 DEAL::FESystem<3>[FE_RaviartThomas<3>(2)-FE_Q<3>(2)]
 DEAL::Base elements:  2
 DEAL::Multiplicities: 1 1
@@ -327,3 +372,8 @@ DEAL::0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 0  1  2  3  4
 DEAL::Next two lines: component index_in_component
 DEAL::3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  x  x  x  x  x  x  x  x  x  3  x  x  x  x  x  x  x  x  x  3  x  x  x  x  x  x  x  x  x  3  x  x  x  x  x  x  x  x  x  3  x  x  x  x  x  x  x  x  x  3  x  x  x  x  x  x  x  x  x  3  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  3  
 DEAL::0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 x  x  x  x  x  x  x  x  x  20 x  x  x  x  x  x  x  x  x  21 x  x  x  x  x  x  x  x  x  22 x  x  x  x  x  x  x  x  x  23 x  x  x  x  x  x  x  x  x  24 x  x  x  x  x  x  x  x  x  25 x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  26 
+DEAL::Next two lines: component_to_base
+DEAL::0  0  0  1  
+DEAL::0  1  2  0  
+DEAL::Next line: component_to_block_index
+DEAL::0  0  0  1  

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.