From 1bb769c7816f2120371ffb2155378a682aed35c5 Mon Sep 17 00:00:00 2001 From: bangerth Date: Tue, 19 Sep 2006 03:36:23 +0000 Subject: [PATCH] Update comments and output git-svn-id: https://svn.dealii.org/trunk@13929 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/hp/crash_09.cc | 59 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/tests/hp/crash_09.cc b/tests/hp/crash_09.cc index 0fc2f56c96..5bfd8fae61 100644 --- a/tests/hp/crash_09.cc +++ b/tests/hp/crash_09.cc @@ -52,15 +52,14 @@ int main () deallog.threshold_double(1.e-10); - // create a mesh like this: + // create a mesh like this (viewed + // from top): // - // *---*---*---* - // | 6 | 7 | 8 | - // *---*---*---* - // | 3 | 4 | 5 | - // *---*---*---* - // | 0 | 1 | 2 | - // *---*---*---* + // *---*---* + // | 2 | 3 | + // *---*---* + // | 0 | 1 | + // *---*---* Triangulation<3> triangulation; std::vector subdivisions (3, 2); subdivisions[2] = 1; @@ -74,6 +73,29 @@ int main () hp::DoFHandler<3> dof_handler(triangulation); + // assign polynomial degrees like this: + // + // *---*---* + // | 1 | 3 | + // *---*---* + // | 1 | 2 | + // *---*---* + // + // what happens here is that we + // first constraint the common face + // between cells 0 and 1, then + // between cells 1 and 3. During + // the latter operation, the line + // dofs of the Q3 are constrained + // against those of the lines dofs + // of the Q2. Later, we come back + // and do the face between cells 2 + // and 3, where we want to + // constrain the line dofs of the + // Q3 again, but this time against + // a Q1. this leads to conflicts + // with the constraints previously + // entered hp::DoFHandler<3>::active_cell_iterator cell = dof_handler.begin_active(); cell->set_active_fe_index (0); @@ -86,6 +108,27 @@ int main () dof_handler.distribute_dofs (fe); + // for illustrative purposes, print + // out the numbers of the dofs that + // belong to the shared edge + // (that's the one that has three + // different fe indices associated + // with it) + for (hp::DoFHandler<3>::active_line_iterator line = dof_handler.begin_active_line(); + line != dof_handler.end_line(); ++line) + if (line->n_active_fe_indices() == 3) + { + deallog << "Shared line: " << line << std::endl; + for (unsigned int i=0; i<3; ++i) + { + deallog << "DoF indices for fe_index=" << i << ": "; + std::vector line_dofs (fe[i].dofs_per_line + 2*fe[i].dofs_per_vertex); + line->get_dof_indices (line_dofs, i); + for (unsigned int j=0; j