From 6684f50b857de892f97e933a48f2be47520aa28e Mon Sep 17 00:00:00 2001 From: wolf Date: Sun, 19 Oct 2003 22:27:26 +0000 Subject: [PATCH] Small clean-ups. git-svn-id: https://svn.dealii.org/trunk@8111 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/fe/fe_dgp.cc | 2 +- deal.II/deal.II/source/fe/fe_dgq.cc | 2 +- deal.II/deal.II/source/fe/fe_q.cc | 2 +- .../deal.II/source/fe/fe_q_hierarchical.cc | 2 +- .../deal.II/source/fe/mapping_cartesian.cc | 83 ++++++---------- deal.II/deal.II/source/fe/mapping_q.cc | 99 +++++++++---------- deal.II/deal.II/source/fe/mapping_q1.cc | 89 ++++++++--------- .../deal.II/source/fe/mapping_q1_eulerian.cc | 11 +-- 8 files changed, 133 insertions(+), 157 deletions(-) diff --git a/deal.II/deal.II/source/fe/fe_dgp.cc b/deal.II/deal.II/source/fe/fe_dgp.cc index 5106e32986..90d06302b1 100644 --- a/deal.II/deal.II/source/fe/fe_dgp.cc +++ b/deal.II/deal.II/source/fe/fe_dgp.cc @@ -193,7 +193,7 @@ template std::vector FE_DGP::get_dpo_vector(unsigned int deg) { - std::vector dpo(dim+1, static_cast(0)); + std::vector dpo(dim+1, 0U); dpo[dim] = ++deg; for (unsigned int i=1;i std::vector FE_DGQ::get_dpo_vector(unsigned int deg) { - std::vector dpo(dim+1, static_cast(0)); + std::vector dpo(dim+1, 0U); dpo[dim] = ++deg; for (unsigned int i=1;i std::vector FE_Q::get_dpo_vector(const unsigned int deg) { - std::vector dpo(dim+1, static_cast(1)); + std::vector dpo(dim+1, 1U); for (unsigned int i=1; i std::vector FE_Q_Hierarchical::get_dpo_vector(const unsigned int deg) { - std::vector dpo(dim+1, static_cast(1)); + std::vector dpo(dim+1, 1U); for (unsigned int i=1; i::compute_fill (const typename DoFHandler::cell_iterat // cells are aligned to coordinate // axes, they are simply vectors // with exactly one entry equal to - // 1 or -1 + // 1 or -1. Furthermore, all + // normals on a face have the same + // value if (update_flags & update_normal_vectors) { Assert (normal_vectors.size() == npts, ExcDimensionMismatch(normal_vectors.size(), npts)); - Point n; + Assert (face_no < GeometryInfo::faces_per_cell, + ExcInternalError()); + switch (dim) { case 2: { - switch (face_no) - { - case 0: - n (1) = -1.; - break; - case 1: - n (0) = 1.; - break; - case 2: - n (1) = 1.; - break; - case 3: - n (0) = -1.; - break; - default: - Assert (false, ExcInternalError()); - } + static const Point + normals[GeometryInfo<2>::faces_per_cell] + = { Point(0, -1), + Point(1, 0), + Point(0, 1), + Point(-1, 0) }; + std::fill (normal_vectors.begin(), + normal_vectors.end(), + normals[face_no]); break; } case 3: { - switch (face_no) - { - case 0: - n (1) = -1.; - break; - case 1: - n (1) = 1.; - break; - case 2: - n (2) = -1.; - break; - case 3: - n (0) = 1.; - break; - case 4: - n (2) = 1.; - break; - case 5: - n (0) = -1.; - break; - default: - Assert (false, ExcInternalError()); - } + static const Point + normals[GeometryInfo<3>::faces_per_cell] + = { Point(0, -1, 0), + Point(0, 1, 0), + Point(0, 0, -1), + Point(1, 0, 0), + Point(0, 0, 1), + Point(-1, 0, 0) }; + std::fill (normal_vectors.begin(), + normal_vectors.end(), + normals[face_no]); break; } default: Assert (false, ExcNotImplemented()); } - - // furthermore, all normal - // vectors on a face are equal - std::fill (normal_vectors.begin(), normal_vectors.end(), n); } } template void -MappingCartesian::fill_fe_values (const typename DoFHandler::cell_iterator& cell, - const Quadrature& q, - typename Mapping::InternalDataBase& mapping_data, - std::vector >& quadrature_points, - std::vector& JxW_values) const +MappingCartesian:: +fill_fe_values (const typename DoFHandler::cell_iterator& cell, + const Quadrature& q, + typename Mapping::InternalDataBase& mapping_data, + std::vector >& quadrature_points, + std::vector& JxW_values) const { // convert data object to internal // data for this class. fails with diff --git a/deal.II/deal.II/source/fe/mapping_q.cc b/deal.II/deal.II/source/fe/mapping_q.cc index 32c89cc490..f866768009 100644 --- a/deal.II/deal.II/source/fe/mapping_q.cc +++ b/deal.II/deal.II/source/fe/mapping_q.cc @@ -925,8 +925,9 @@ MappingQ<3>::add_quad_support_points(const Triangulation<3>::cell_iterator &cell template void -MappingQ::add_quad_support_points(const typename Triangulation::cell_iterator &, - std::vector > &) const +MappingQ:: +add_quad_support_points(const typename Triangulation::cell_iterator &, + std::vector > &) const { Assert (dim > 2, ExcImpossibleInDim(dim)); } @@ -935,10 +936,11 @@ MappingQ::add_quad_support_points(const typename Triangulation::cell_i template void -MappingQ::transform_covariant (Tensor<1,dim> *begin, - Tensor<1,dim> *end, - const Tensor<1,dim> *src, - const typename Mapping::InternalDataBase &mapping_data) const +MappingQ:: +transform_covariant (Tensor<1,dim> *begin, + Tensor<1,dim> *end, + const Tensor<1,dim> *src, + const typename Mapping::InternalDataBase &mapping_data) const { const typename MappingQ1::InternalData *q1_data = dynamic_cast::InternalData *> (&mapping_data); @@ -958,10 +960,9 @@ MappingQ::transform_covariant (Tensor<1,dim> *begin, else tensor = data->covariant.begin(); } + while (begin!=end) - { - contract (*(begin++), *(src++), *(tensor++)); - } + contract (*(begin++), *(src++), *(tensor++)); } @@ -991,20 +992,20 @@ MappingQ::transform_covariant (Tensor<2,dim> *begin, else tensor = data->covariant.begin(); } + while (begin!=end) - { - contract (*(begin++), *(src++), *(tensor++)); - } + contract (*(begin++), *(src++), *(tensor++)); } template void -MappingQ::transform_contravariant (Tensor<1,dim> *begin, - Tensor<1,dim> *end, - const Tensor<1,dim> *src, - const typename Mapping::InternalDataBase &mapping_data) const +MappingQ:: +transform_contravariant (Tensor<1,dim> *begin, + Tensor<1,dim> *end, + const Tensor<1,dim> *src, + const typename Mapping::InternalDataBase &mapping_data) const { const typename MappingQ1::InternalData *q1_data = dynamic_cast::InternalData *> (&mapping_data); @@ -1024,10 +1025,9 @@ MappingQ::transform_contravariant (Tensor<1,dim> *begin, else tensor = data->contravariant.begin(); } + while (begin!=end) - { - contract (*(begin++), *(tensor++), *(src++)); - } + contract (*(begin++), *(tensor++), *(src++)); } @@ -1057,19 +1057,18 @@ MappingQ::transform_contravariant (Tensor<2,dim> *begin, else tensor = data->contravariant.begin(); } + while (begin!=end) - { - contract (*(begin++), *(tensor++), *(src++)); - } + contract (*(begin++), *(tensor++), *(src++)); } template Point -MappingQ::transform_unit_to_real_cell ( - const typename Triangulation::cell_iterator &cell, - const Point &p) const +MappingQ:: +transform_unit_to_real_cell (const typename Triangulation::cell_iterator &cell, + const Point &p) const { // Use the get_data function to // create an InternalData with data @@ -1077,55 +1076,53 @@ MappingQ::transform_unit_to_real_cell ( // transformation shape values // already computed at point p. const Quadrature point_quadrature(p); - InternalData *mdata=dynamic_cast ( - get_data(update_transformation_values, point_quadrature)); - Assert(mdata!=0, ExcInternalError()); + std::auto_ptr + mdata (dynamic_cast ( + get_data(update_transformation_values, point_quadrature))); mdata->use_mapping_q1_on_current_cell = !(use_mapping_q_on_all_cells || cell->has_boundary_lines()); - typename MappingQ1::InternalData *p_data=0; - if (mdata->use_mapping_q1_on_current_cell) - p_data=&mdata->mapping_q1_data; - else - p_data=mdata; + typename MappingQ1::InternalData + *p_data = (mdata->use_mapping_q1_on_current_cell ? + &mdata->mapping_q1_data : + &*mdata); compute_mapping_support_points(cell, p_data->mapping_support_points); - const Point q=this->transform_unit_to_real_cell_internal(*p_data); - delete mdata; - return q; + return this->transform_unit_to_real_cell_internal(*p_data); } template Point -MappingQ::transform_real_to_unit_cell ( - const typename Triangulation::cell_iterator &cell, - const Point &p) const +MappingQ:: +transform_real_to_unit_cell (const typename Triangulation::cell_iterator &cell, + const Point &p) const { // first a Newton iteration based // on a Q1 mapping - Point p_unit=MappingQ1::transform_real_to_unit_cell(cell, p); + Point p_unit = MappingQ1::transform_real_to_unit_cell(cell, p); + // then a Newton iteration based on + // the full MappingQ if we need + // this if (cell->has_boundary_lines() || use_mapping_q_on_all_cells) { - // then a Newton iteration - // based on the full MappingQ const Quadrature point_quadrature(p_unit); - InternalData *mdata=dynamic_cast ( - get_data(update_transformation_values | update_transformation_gradients, - point_quadrature)); - Assert(mdata!=0, ExcInternalError()); - mdata->use_mapping_q1_on_current_cell=false; + std::auto_ptr + mdata (dynamic_cast ( + get_data(update_transformation_values | + update_transformation_gradients, + point_quadrature))); + + mdata->use_mapping_q1_on_current_cell = false; - std::vector > &points=mdata->mapping_support_points; - compute_mapping_support_points(cell, points); + std::vector > &points = mdata->mapping_support_points; + compute_mapping_support_points (cell, points); this->transform_real_to_unit_cell_internal(cell, p, *mdata, p_unit); - - delete mdata; } return p_unit; diff --git a/deal.II/deal.II/source/fe/mapping_q1.cc b/deal.II/deal.II/source/fe/mapping_q1.cc index 0c322fe21d..58a1704a9a 100644 --- a/deal.II/deal.II/source/fe/mapping_q1.cc +++ b/deal.II/deal.II/source/fe/mapping_q1.cc @@ -844,10 +844,11 @@ MappingQ1::transform_covariant (Tensor<2,dim> *begin, template void -MappingQ1::transform_contravariant (Tensor<1,dim> *begin, - Tensor<1,dim> *end, - const Tensor<1,dim> *src, - const typename Mapping::InternalDataBase &mapping_data) const +MappingQ1:: +transform_contravariant (Tensor<1,dim> *begin, + Tensor<1,dim> *end, + const Tensor<1,dim> *src, + const typename Mapping::InternalDataBase &mapping_data) const { const InternalData* data_ptr = dynamic_cast (&mapping_data); Assert(data_ptr!=0, ExcInternalError()); @@ -860,18 +861,18 @@ MappingQ1::transform_contravariant (Tensor<1,dim> *begin, tensor = data.contravariant.begin(); while (begin!=end) - { - contract (*(begin++), *(tensor++), *(src++)); - } + contract (*(begin++), *(tensor++), *(src++)); } + template void -MappingQ1::transform_contravariant (Tensor<2,dim> *begin, - Tensor<2,dim> *end, - const Tensor<2,dim> *src, - const typename Mapping::InternalDataBase &mapping_data) const +MappingQ1:: +transform_contravariant (Tensor<2,dim> *begin, + Tensor<2,dim> *end, + const Tensor<2,dim> *src, + const typename Mapping::InternalDataBase &mapping_data) const { const InternalData* data_ptr = dynamic_cast (&mapping_data); Assert(data_ptr!=0, ExcInternalError()); @@ -884,18 +885,16 @@ MappingQ1::transform_contravariant (Tensor<2,dim> *begin, tensor = data.contravariant.begin(); while (begin!=end) - { - contract (*(begin++), *(tensor++), *(src++)); - } + contract (*(begin++), *(tensor++), *(src++)); } template Point -MappingQ1::transform_unit_to_real_cell ( - const typename Triangulation::cell_iterator &cell, - const Point &p) const +MappingQ1:: +transform_unit_to_real_cell (const typename Triangulation::cell_iterator &cell, + const Point &p) const { // Use the get_data function to // create an InternalData with data @@ -904,24 +903,23 @@ MappingQ1::transform_unit_to_real_cell ( // already computed at point p. const Quadrature point_quadrature(p); - InternalData *mdata=dynamic_cast ( - get_data(update_transformation_values, point_quadrature)); - Assert(mdata!=0, ExcInternalError()); + std::auto_ptr + mdata (dynamic_cast ( + get_data(update_transformation_values, point_quadrature))); // compute the mapping support // points compute_mapping_support_points(cell, mdata->mapping_support_points); - const Point p_real=transform_unit_to_real_cell_internal(*mdata); - delete mdata; - return p_real; + return transform_unit_to_real_cell_internal(*mdata); } + template Point -MappingQ1::transform_unit_to_real_cell_internal ( - const InternalData &data) const +MappingQ1:: +transform_unit_to_real_cell_internal (const InternalData &data) const { const unsigned int n_mapping_points=data.mapping_support_points.size(); Assert(data.shape_values.size()==n_mapping_points, ExcInternalError()); @@ -930,17 +928,18 @@ MappingQ1::transform_unit_to_real_cell_internal ( // compute the point in real space. Point p_real; for (unsigned int i=0; i Point -MappingQ1::transform_real_to_unit_cell ( - const typename Triangulation::cell_iterator &cell, - const Point &p) const +MappingQ1:: +transform_real_to_unit_cell (const typename Triangulation::cell_iterator &cell, + const Point &p) const { // Let the start value of the // newton iteration be the center @@ -956,20 +955,21 @@ MappingQ1::transform_real_to_unit_cell ( // derivatives already computed at // point p_unit. const Quadrature point_quadrature(p_unit); - InternalData *mdata=dynamic_cast ( - MappingQ1::get_data(update_transformation_values - | update_transformation_gradients, - point_quadrature)); - Assert(mdata!=0, ExcInternalError()); - - MappingQ1::compute_mapping_support_points(cell, mdata->mapping_support_points); - Assert(mdata->mapping_support_points.size()==GeometryInfo::vertices_per_cell, + std::auto_ptr + mdata(dynamic_cast ( + MappingQ1::get_data(update_transformation_values + | update_transformation_gradients, + point_quadrature))); + + MappingQ1::compute_mapping_support_points (cell, + mdata->mapping_support_points); + Assert(mdata->mapping_support_points.size() == + GeometryInfo::vertices_per_cell, ExcInternalError()); // perform the newton iteration. transform_real_to_unit_cell_internal(cell, p, *mdata, p_unit); - delete mdata; return p_unit; } @@ -977,11 +977,12 @@ MappingQ1::transform_real_to_unit_cell ( template void -MappingQ1::transform_real_to_unit_cell_internal ( - const typename Triangulation::cell_iterator &cell, - const Point &p, - InternalData &mdata, - Point &p_unit) const +MappingQ1:: +transform_real_to_unit_cell_internal +(const typename Triangulation::cell_iterator &cell, + const Point &p, + InternalData &mdata, + Point &p_unit) const { const unsigned int n_shapes=mdata.shape_values.size(); Assert(n_shapes!=0, ExcInternalError()); @@ -1036,7 +1037,7 @@ MappingQ1::transform_real_to_unit_cell_internal ( compute_shapes(std::vector > (1, p_unit), mdata); // f(x) - p_real=transform_unit_to_real_cell_internal(mdata); + p_real = transform_unit_to_real_cell_internal(mdata); f = p_real-p; } } diff --git a/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc b/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc index 5d1e6527ae..40c83268a6 100644 --- a/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc +++ b/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc @@ -66,13 +66,10 @@ MappingQ1Eulerian::compute_mapping_support_points( cell->index(), shiftmap_dof_handler); - // We require the cell to be - // active. This is determined by - // the user when looping over all - // active cells in the problem - // code. - Assert (dof_cell->active() == true, - ExcInactiveCell()); + // We require the cell to be active + // since we can only then get nodal + // values for the shifts + Assert (dof_cell->active() == true, ExcInactiveCell()); // for Q1 elements, the number of // support points should equal the -- 2.39.5