From: Peter Munch Date: Sat, 2 Jan 2021 10:55:40 +0000 (+0100) Subject: Step-12: select quadrature at a central place X-Git-Tag: v9.3.0-rc1~690^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b831976f6169dcc9abfd4aebf2eda6b51e3a2ab0;p=dealii.git Step-12: select quadrature at a central place --- diff --git a/examples/step-12/step-12.cc b/examples/step-12/step-12.cc index ac096ba256..c23bca2e08 100644 --- a/examples/step-12/step-12.cc +++ b/examples/step-12/step-12.cc @@ -145,20 +145,21 @@ namespace Step12 template struct ScratchData { - ScratchData(const Mapping & mapping, - const FiniteElement &fe, - const unsigned int quadrature_degree, - const UpdateFlags update_flags = update_values | + ScratchData(const Mapping & mapping, + const FiniteElement & fe, + const Quadrature & quadrature, + const Quadrature &quadrature_face, + const UpdateFlags update_flags = update_values | update_gradients | update_quadrature_points | update_JxW_values, const UpdateFlags interface_update_flags = update_values | update_gradients | update_quadrature_points | update_JxW_values | update_normal_vectors) - : fe_values(mapping, fe, QGauss(quadrature_degree), update_flags) + : fe_values(mapping, fe, quadrature, update_flags) , fe_interface_values(mapping, fe, - QGauss(quadrature_degree), + quadrature_face, interface_update_flags) {} @@ -232,8 +233,11 @@ namespace Step12 const MappingQ1 mapping; // Furthermore we want to use DG elements. - FE_DGQ fe; - DoFHandler dof_handler; + const FE_DGQ fe; + DoFHandler dof_handler; + + const QGauss quadrature; + const QGauss quadrature_face; // The next four members represent the linear system to be solved. // system_matrix and right_hand_side are generated @@ -255,6 +259,8 @@ namespace Step12 : mapping() , fe(1) , dof_handler(triangulation) + , quadrature(fe.tensor_degree() + 1) + , quadrature_face(fe.tensor_degree() + 1) {} @@ -435,9 +441,7 @@ namespace Step12 } }; - const unsigned int n_gauss_points = dof_handler.get_fe().degree + 1; - - ScratchData scratch_data(mapping, fe, n_gauss_points); + ScratchData scratch_data(mapping, fe, quadrature, quadrature_face); CopyData copy_data; // Here, we finally handle the assembly. We pass in ScratchData and @@ -550,7 +554,7 @@ namespace Step12 data_out.attach_dof_handler(dof_handler); data_out.add_data_vector(solution, "u", DataOut::type_dof_data); - data_out.build_patches(); + data_out.build_patches(mapping); data_out.write_vtk(output); @@ -561,7 +565,7 @@ namespace Step12 solution, Functions::ZeroFunction(), values, - QGauss(fe.degree + 1), + quadrature, VectorTools::Linfty_norm); const double l_infty = VectorTools::compute_global_error(triangulation,