Hi Luca

For interests sake, I don't seem to get the same problem as you do when I'm running step-16 on my mac with what now seems to be a very similar setup to you. Step-16 runs without problem (see below). I'm on revision 20159. I added the line you added but in void LaplaceProblem<dim>::setup_system

bash-3.2$ make run
============================ Remaking Makefile.dep
==============debug========= step-16.cc
============================ Linking step-16
============================ Running step-16
DEAL::Cycle 0
DEAL::Number of degrees of freedom: 25, N Levels: 2
DEAL::   L0: 8   L1: 25
DEAL:cg::Starting value 0.510691
DEAL:cg::Convergence step 5 value 8.74703e-14
DEAL::Cycle 1
DEAL::Number of degrees of freedom: 89, N Levels: 3
DEAL::   L0: 8   L1: 25   L2: 89
DEAL:cg::Starting value 0.320391
DEAL:cg::Convergence step 8 value 2.08903e-14
DEAL::Cycle 2
DEAL::Number of degrees of freedom: 337, N Levels: 4
DEAL::   L0: 8   L1: 25   L2: 89   L3: 337
DEAL:cg::Starting value 0.176257
DEAL:cg::Convergence step 8 value 2.38879e-13
DEAL::Cycle 3
DEAL::Number of degrees of freedom: 1313, N Levels: 5
DEAL::   L0: 8   L1: 25   L2: 89   L3: 337   L4: 1313
DEAL:cg::Starting value 0.0920444
DEAL:cg::Convergence step 8 value 5.93597e-13
DEAL::Cycle 4
DEAL::Number of degrees of freedom: 5185, N Levels: 6
DEAL::   L0: 8   L1: 25   L2: 89   L3: 337   L4: 1313   L5: 5185
DEAL:cg::Starting value 0.0469815
DEAL:cg::Convergence step 9 value 6.67930e-14
DEAL::Cycle 5
DEAL::Number of degrees of freedom: 20609, N Levels: 7
DEAL:: L0: 8 L1: 25 L2: 89 L3: 337 L4: 1313 L5: 5185 L6: 20609
DEAL:cg::Starting value 0.0237274
DEAL:cg::Convergence step 9 value 1.61650e-13



Andrew

On 24 Nov 2009, at 1:44 PM, Luca Heltai wrote:

This is really weird...

This is what I get by adding to step-16.cc the following line:

 deallog << ", N Levels: " << triangulation.n_levels() << std::endl;

I run it in my debugger, i get this output:

DEAL::Number of degrees of freedom: 25, N Levels: 56

It throws an exception (rightfully so) when trying to get the number of dofs of level 2 (there is no such a level). In the debugger, if I put a break point up there, the output is the same, but this triangualation.n_levels() gives me 2:


Breakpoint 2, LaplaceProblem<2>::setup_system (this=0x7fff5fbfc2c0) at step-16.cc:139
(gdb) print triangulation.n_levels()
$5 = 2
(gdb) next
DEAL::Number of degrees of freedom: 25, N Levels: 56
(gdb)


I'm lost here. Any idea? n_levels is inlined and returns

number_cache.n_levels;

However, in the debugger, If i print triangulation.number_cache, I get:

$7 = {
 <dealii::internal::Triangulation::NumberCache<1>> = {
   n_lines = 56,
   n_lines_level = {
<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {
       _M_impl = {
         <std::allocator<unsigned int>> = {
<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl:
         _M_start = 0x105d05160,
         _M_finish = 0x105d05168,
         _M_end_of_storage = 0x105d05168
       }
     }, <No data fields>},
   n_active_lines = 44,
   n_active_lines_level = {
<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {
       _M_impl = {
         <std::allocator<unsigned int>> = {
<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl:
         _M_start = 0x105d05170,
         _M_finish = 0x105d05178,
         _M_end_of_storage = 0x105d05178
       }
     }, <No data fields>}
 },
 members of dealii::internal::Triangulation::NumberCache<2>:
 n_quads = 25,
 n_quads_level = {
<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {
     _M_impl = {
       <std::allocator<unsigned int>> = {
<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl:
       _M_start = 0x105d05020,
       _M_finish = 0x105d05028,
       _M_end_of_storage = 0x105d05028
     }
   }, <No data fields>},
 n_active_quads = 20,
 n_active_quads_level = {
<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {
     _M_impl = {
       <std::allocator<unsigned int>> = {
<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl:
       _M_start = 0x105d05150,
       _M_finish = 0x105d05158,
       _M_end_of_storage = 0x105d05158
     }
   }, <No data fields>}
}

which does not seem to have a n_levels member...

Any ideas of what could be going on?

Luca.


On 24/nov/2009, at 00.22, Wolfgang Bangerth wrote:


./step-16
DEAL::Cycle 0
--------------------------------------------------------
An error occurred in line <1630> of file
<source/multigrid/mg_dof_handler.cc> in function unsigned int
dealii::MGDoFHandler<<anonymous>, <anonymous> >::n_dofs(unsigned int) const
[with int dim = 2, int spacedim = 2] The violated condition was:
  level < mg_used_dofs.size()
The name and call sequence of the exception was:
  ExcInvalidLevel(level)
Additional Information:
The given level 2 is not in the valid range!

I don't see this on linux, but the function is called from
void LaplaceProblem<dim>::setup_system ()
{
[...]
for (unsigned int l=0;l<triangulation.n_levels();++l)
  deallog << "   " << 'L' << l << ": "
            << mg_dof_handler.n_dofs(l);
and I have changed Triangulation.n_levels() yesterday. Can you try to see in gdb what the value of mg_used_dofs.size() is in MGDoFHandler::n_dofs as well
as what n_levels() returns in setup_system()?

Thanks
W.


-------------------------------------------------------------------------
Wolfgang Bangerth                email:            [email protected]
                               www: http://www.math.tamu.edu/~bangerth/


_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to