]> https://gitweb.dealii.org/ - dealii.git/commitdiff
put some output to debug>3
authorBaerbel Jannsen <baerbel.janssen@gmail.com>
Tue, 9 Feb 2010 08:50:39 +0000 (08:50 +0000)
committerBaerbel Jannsen <baerbel.janssen@gmail.com>
Tue, 9 Feb 2010 08:50:39 +0000 (08:50 +0000)
git-svn-id: https://svn.dealii.org/trunk@20524 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/multigrid/multigrid.h
deal.II/deal.II/include/multigrid/multigrid.templates.h
deal.II/deal.II/source/multigrid/mg_transfer_component.cc
deal.II/deal.II/source/multigrid/mg_transfer_prebuilt.cc
deal.II/deal.II/source/multigrid/multigrid.all_dimensions.cc

index 15050e2412704c7246b3a375c503649a1daebcba..097526fcd9123eb3efe569293e92ff5d32d6417c 100644 (file)
@@ -17,6 +17,7 @@
 #include <base/config.h>
 #include <base/subscriptor.h>
 #include <base/smartpointer.h>
+#include <numerics/data_out.h>
 #include <lac/sparse_matrix.h>
 #include <lac/vector.h>
 #include <multigrid/mg_base.h>
@@ -670,6 +671,23 @@ PreconditionMG<dim, VECTOR, TRANSFER>::vmult (
   transfer->copy_from_mg(*mg_dof_handler,
                         dst,
                         multigrid->solution);
+
+  /*
+  DataOut<dim> data_out;
+  data_out.attach_dof_handler (*mg_dof_handler);
+  VECTOR2 tmp;
+  tmp.reinit(dst);
+  tmp = dst;
+  transfer->constraints->distribute(tmp);
+  data_out.add_data_vector (tmp, "mg");
+  data_out.build_patches ();
+
+  std::ostringstream filename;
+  filename << "mg.gpl";
+
+  std::ofstream output (filename.str().c_str());
+  data_out.write_gnuplot (output);
+  */
 }
 
 
index 99a99a3cb3c30fc126d4b1757b164eef44c6dc9b..01e8f6881edc55e14178278b3037e2b2b10ee899 100644 (file)
@@ -176,10 +176,10 @@ Multigrid<VECTOR>::level_v_step(const unsigned int level)
       edge_down->vmult(level, t[level-1], solution[level]);
 
     transfer->restrict_and_add (l, t[l-1], t[l]);
-    if(debug>2)
+    if(debug>3)
       deallog << "restrict t[" << l-1 << "] " << t[l-1].l2_norm() << std::endl;
     defect[l-1] -= t[l-1];
-    if(debug>2)
+    if(debug>3)
       deallog << "defect d[" << l-1 << "] " << defect[l-1].l2_norm() << std::endl;
   }
   
@@ -211,7 +211,7 @@ Multigrid<VECTOR>::level_v_step(const unsigned int level)
    }
   
   if (debug>2)
-    deallog << "V-cycle  Defect norm hier  " << defect[level].l2_norm()
+    deallog << "V-cycle  Defect norm   " << defect[level].l2_norm()
            << std::endl;
   
   if (debug>1)
index 26d2891c864eda7709396bc27d61cf6495b4dad3..c30c638a8ab9e4426d0a6de87c6e6bf49bf2a602 100644 (file)
@@ -635,16 +635,27 @@ void MGTransferSelect<number>::build_matrices (
          for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
            {
              const unsigned int component
-               = fe.system_to_component_index(i).first;
-             if (mg_selected[component] && 
+                = fe.system_to_component_index(i).first;
+              deallog << "comp " << component << std::endl;
+             if (selected[component] && 
                   !interface_dofs[level][level_dof_indices[i]])
                {
                  const unsigned int level_start
                    = mg_component_start[level][mg_target_component[component]];
+                 const unsigned int global_start
+                   = component_start[target_component[component]];
                  copy_to_and_from_indices[level].insert(
-                   std::make_pair(global_dof_indices[i]
-                                  - component_start[target_component[selected_component]],
+                   std::make_pair(global_dof_indices[i] - global_start
+                                  /*- component_start[target_component[selected_component]]*/,
                                   level_dof_indices[i]-level_start));
+                  deallog << "global " << global_dof_indices[i]
+                    - component_start[target_component[selected_component]] <<
+                    " lokal " << level_dof_indices[i]-level_start << std::endl;
+                  deallog << "index global " << global_dof_indices[i] <<
+                    " index lokal " << level_dof_indices[i] << std::endl;
+                  deallog << "offset global "
+                    << component_start[target_component[selected_component]] <<
+                    " offset lokal " << level_start << std::endl;
                }
            }
        }
index a6baf26b5a7bba0e826f33da26a2e0114e55e741..5f2b214a01e696cd110d3da8fd63385739458a05 100644 (file)
@@ -121,12 +121,12 @@ MGTransferPrebuilt<VECTOR>::copy_to_mg (
   for (unsigned int level=mg_dof_handler.get_tria().n_levels();level != 0;)
     {
       --level;
-      VECTOR& dst_level = dst[level];
+//      VECTOR& dst_level = dst[level];
 
       typedef std::map<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);
+       dst[level](i->second) = src(i->first);
 
                                       // For non-DG: degrees of
                                       // freedom in the refinement
index b7508931f823bbc9f44d44ea9dfd01dd255305a3..134df115ab98463ec1724b70a25acf160ff602eb 100644 (file)
@@ -283,6 +283,17 @@ MGTransferBlockBase::memory_consumption () const
 
 //----------------------------------------------------------------------//
 
+template<typename number>
+MGTransferSelect<number>::MGTransferSelect ()
+{} 
+
+
+template<typename number>
+MGTransferSelect<number>::MGTransferSelect (const ConstraintMatrix &c)
+ :
+   constraints(&c)
+{} 
+
 template <typename number>
 MGTransferSelect<number>::~MGTransferSelect () 
 {}
@@ -297,8 +308,8 @@ void MGTransferSelect<number>::prolongate (
   Assert ((to_level >= 1) && (to_level<=prolongation_matrices.size()),
          ExcIndexRange (to_level, 1, prolongation_matrices.size()+1));
 
-      prolongation_matrices[to_level-1]->block(mg_selected_component,
-                                              mg_selected_component)
+      prolongation_matrices[to_level-1]->block(mg_target_component[mg_selected_component],
+                                              mg_target_component[mg_selected_component])
        .vmult (dst, src);
 }
 
@@ -312,8 +323,8 @@ void MGTransferSelect<number>::restrict_and_add (
   Assert ((from_level >= 1) && (from_level<=prolongation_matrices.size()),
          ExcIndexRange (from_level, 1, prolongation_matrices.size()+1));
 
-  prolongation_matrices[from_level-1]->block(mg_selected_component,
-                                            mg_selected_component)
+  prolongation_matrices[from_level-1]->block(mg_target_component[mg_selected_component],
+                                            mg_target_component[mg_selected_component])
     .Tvmult_add (dst, src);
 }
 

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.