From 60d5f99db96418bdfc0c19bba02fa672a8932b9d Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Mon, 13 Feb 2006 23:05:15 +0000 Subject: [PATCH] Don't simply call FEValues fe_values (mapping, ... since this converts a normal mapping into a temp MappingCollection object that is subsequently gets its address stored in fe_values. Not good. git-svn-id: https://svn.dealii.org/trunk@12374 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/examples/step-21/step-21.cc | 31 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/deal.II/examples/step-21/step-21.cc b/deal.II/examples/step-21/step-21.cc index f840816552..942287a0e0 100644 --- a/deal.II/examples/step-21/step-21.cc +++ b/deal.II/examples/step-21/step-21.cc @@ -86,6 +86,7 @@ // enable the user to write DoFHandler // independent code. #include +#include // A compressed sparsity pattern is // not an explicit prerequisite for the @@ -605,7 +606,7 @@ class DGMethod // boundaries come into play, this // object should be replaced by // a MappingCollection. - const MappingQ1 mapping; + hp::MappingCollection mapping_collection; // In contrast to the example code // of step-12, this time DG elements @@ -658,7 +659,6 @@ class DGMethod template DGMethod::DGMethod () : - mapping (), dof_handler (triangulation), dg () { @@ -669,10 +669,13 @@ DGMethod::DGMethod () unsigned int elm_no; for (unsigned int i = 0; i < hp_degree; ++i) { - elm_no = fe_collection.add_fe (FE_DGQ (i+1)); + elm_no = fe_collection.add_fe (FE_DGQ (i)); quadratures.add_quadrature (QGauss (i+2)); face_quadratures.add_quadrature (QGauss (i+2)); } + + static const MappingQ1 mapping; + mapping_collection.add_mapping (mapping); } @@ -827,7 +830,7 @@ void DGMethod::assemble_system1 () // assumes a ``MappingQ1'' mapping) // and makes it easier to change // the mapping object later. - hp::FEValues fe_v_x (mapping, fe_collection, quadratures, update_flags); + hp::FEValues fe_v_x (mapping_collection, fe_collection, quadratures, update_flags); // Similarly we create the // ``FEFaceValues'' and @@ -840,13 +843,13 @@ void DGMethod::assemble_system1 () // current cell and the face (and // subface) number. hp::FEFaceValues fe_v_face_x ( - mapping, fe_collection, face_quadratures, face_update_flags); + mapping_collection, fe_collection, face_quadratures, face_update_flags); hp::FESubfaceValues fe_v_subface_x ( - mapping, fe_collection, face_quadratures, face_update_flags); + mapping_collection, fe_collection, face_quadratures, face_update_flags); hp::FEFaceValues fe_v_face_neighbor_x ( - mapping, fe_collection, face_quadratures, neighbor_face_update_flags); + mapping_collection, fe_collection, face_quadratures, neighbor_face_update_flags); hp::FESubfaceValues fe_v_subface_neighbor_x ( - mapping, fe_collection, face_quadratures, neighbor_face_update_flags); + mapping_collection, fe_collection, face_quadratures, neighbor_face_update_flags); // Now we create the cell matrices // and vectors. Here we need two @@ -1321,13 +1324,13 @@ void DGMethod::assemble_system2 () // ``fe_v_face_neighbor'' as case 4 // does not occur. hp::FEValues fe_v_x ( - mapping, fe_collection, quadratures, update_flags); + mapping_collection, fe_collection, quadratures, update_flags); hp::FEFaceValues fe_v_face_x ( - mapping, fe_collection, face_quadratures, face_update_flags); + mapping_collection, fe_collection, face_quadratures, face_update_flags); hp::FESubfaceValues fe_v_subface_x ( - mapping, fe_collection, face_quadratures, face_update_flags); + mapping_collection, fe_collection, face_quadratures, face_update_flags); hp::FEFaceValues fe_v_face_neighbor_x ( - mapping, fe_collection, face_quadratures, neighbor_face_update_flags); + mapping_collection, fe_collection, face_quadratures, neighbor_face_update_flags); const unsigned int max_dofs_per_cell = fe_collection.max_dofs_per_cell (); @@ -1606,7 +1609,7 @@ void DGMethod::refine_grid () // Now the approximate gradients // are computed - DerivativeApproximation::approximate_gradient (mapping, + DerivativeApproximation::approximate_gradient (mapping_collection[0], dof_handler, solution2, gradient_indicator); @@ -1710,7 +1713,7 @@ void DGMethod::run () { GridGenerator::hyper_cube (triangulation); - triangulation.refine_global (3); + triangulation.refine_global (1); } else refine_grid (); -- 2.39.5