From e67008853fb583a4c41c70b9f09fb87ba078cc50 Mon Sep 17 00:00:00 2001 From: wolf Date: Wed, 24 Jul 2002 13:38:11 +0000 Subject: [PATCH] Add a number of assertions for the transform_co* function calls. One of these triggers in the shapes.cc test. Leave the respective fix for Guido :-) git-svn-id: https://svn.dealii.org/trunk@6272 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/fe/fe.cc | 3 ++ deal.II/deal.II/source/fe/fe_dgp.cc | 39 +++++++++++++++++-------- deal.II/deal.II/source/fe/fe_dgq.cc | 39 +++++++++++++++++-------- deal.II/deal.II/source/fe/fe_nedelec.cc | 21 +++++++++++-- deal.II/deal.II/source/fe/fe_q.cc | 39 +++++++++++++++++-------- deal.II/deal.II/source/fe/mapping_q1.cc | 8 +++++ 6 files changed, 111 insertions(+), 38 deletions(-) diff --git a/deal.II/deal.II/source/fe/fe.cc b/deal.II/deal.II/source/fe/fe.cc index f07b573866..07c679d31f 100644 --- a/deal.II/deal.II/source/fe/fe.cc +++ b/deal.II/deal.II/source/fe/fe.cc @@ -469,6 +469,9 @@ compute_2nd (const Mapping &mapping, // cell for (unsigned int d=0; d::fill_fe_values (const Mapping &mapping, data.shape_values(k,i) = fe_data.shape_values[k][i]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin(), - mapping_data); + { + Assert (data.shape_gradients[k].size() <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin(), + mapping_data); + } } if (flags & update_second_derivatives) @@ -332,10 +337,15 @@ FE_DGP::fill_fe_face_values (const Mapping &mapping, data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin()+offset, - mapping_data); + { + Assert (data.shape_gradients[k].size() + offset <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin()+offset, + mapping_data); + }; } if (flags & update_second_derivatives) @@ -378,10 +388,15 @@ FE_DGP::fill_fe_subface_values (const Mapping &mappi data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin()+offset, - mapping_data); + { + Assert (data.shape_gradients[k].size() + offset <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin()+offset, + mapping_data); + }; } if (flags & update_second_derivatives) diff --git a/deal.II/deal.II/source/fe/fe_dgq.cc b/deal.II/deal.II/source/fe/fe_dgq.cc index a64269356e..a15d65a753 100644 --- a/deal.II/deal.II/source/fe/fe_dgq.cc +++ b/deal.II/deal.II/source/fe/fe_dgq.cc @@ -491,10 +491,15 @@ FE_DGQ::fill_fe_values (const Mapping &mapping, data.shape_values(k,i) = fe_data.shape_values[k][i]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin(), - mapping_data); + { + Assert (data.shape_gradients[k].size() <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin(), + mapping_data); + }; } if (flags & update_second_derivatives) @@ -535,10 +540,15 @@ FE_DGQ::fill_fe_face_values (const Mapping &mapping, data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin()+offset, - mapping_data); + { + Assert (data.shape_gradients[k].size() + offset <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin()+offset, + mapping_data); + }; } if (flags & update_second_derivatives) @@ -581,10 +591,15 @@ FE_DGQ::fill_fe_subface_values (const Mapping &mappi data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin()+offset, - mapping_data); + { + Assert (data.shape_gradients[k].size() + offset <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin()+offset, + mapping_data); + }; } if (flags & update_second_derivatives) diff --git a/deal.II/deal.II/source/fe/fe_nedelec.cc b/deal.II/deal.II/source/fe/fe_nedelec.cc index c8c6115012..dbed0f00ed 100644 --- a/deal.II/deal.II/source/fe/fe_nedelec.cc +++ b/deal.II/deal.II/source/fe/fe_nedelec.cc @@ -695,11 +695,18 @@ FE_Nedelec::fill_fe_values (const Mapping &/*mapping // for (unsigned int i=0; i::fill_fe_face_values (const Mapping &/*ma // data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; // if (flags & update_gradients) +// { +// Assert (data.shape_gradients[k].size() + offset <= +// fe_data.shape_gradients[k].size(), +// ExcInternalError()); // mapping.transform_covariant(data.shape_gradients[k], // fe_data.shape_gradients[k], // mapping_data, offset); +// } // } // if (flags & update_second_derivatives) @@ -786,9 +798,14 @@ FE_Nedelec::fill_fe_subface_values (const Mapping &/ // data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; // if (flags & update_gradients) +// { +// Assert (data.shape_gradients[k].size() + offset<= +// fe_data.shape_gradients[k].size(), +// ExcInternalError()); // mapping.transform_covariant(data.shape_gradients[k], // fe_data.shape_gradients[k], // mapping_data, offset); +// }; // } // if (flags & update_second_derivatives) diff --git a/deal.II/deal.II/source/fe/fe_q.cc b/deal.II/deal.II/source/fe/fe_q.cc index c8079215ec..192fc8f0ed 100644 --- a/deal.II/deal.II/source/fe/fe_q.cc +++ b/deal.II/deal.II/source/fe/fe_q.cc @@ -1183,10 +1183,15 @@ FE_Q::fill_fe_values (const Mapping &mapping, data.shape_values(k,i) = fe_data.shape_values[k][i]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin(), - mapping_data); + { + Assert (data.shape_gradients[k].size() <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin(), + mapping_data); + }; } if (flags & update_second_derivatives) @@ -1227,10 +1232,15 @@ FE_Q::fill_fe_face_values (const Mapping &mapping, data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin()+offset, - mapping_data); + { + Assert (data.shape_gradients[k].size() + offset <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin()+offset, + mapping_data); + }; } if (flags & update_second_derivatives) @@ -1273,10 +1283,15 @@ FE_Q::fill_fe_subface_values (const Mapping &mapping data.shape_values(k,i) = fe_data.shape_values[k][i+offset]; if (flags & update_gradients) - mapping.transform_covariant(data.shape_gradients[k].begin(), - data.shape_gradients[k].end(), - fe_data.shape_gradients[k].begin()+offset, - mapping_data); + { + Assert (data.shape_gradients[k].size() + offset <= + fe_data.shape_gradients[k].size(), + ExcInternalError()); + mapping.transform_covariant(data.shape_gradients[k].begin(), + data.shape_gradients[k].end(), + fe_data.shape_gradients[k].begin()+offset, + mapping_data); + }; } if (flags & update_second_derivatives) diff --git a/deal.II/deal.II/source/fe/mapping_q1.cc b/deal.II/deal.II/source/fe/mapping_q1.cc index 3a730fe226..bc31b61396 100644 --- a/deal.II/deal.II/source/fe/mapping_q1.cc +++ b/deal.II/deal.II/source/fe/mapping_q1.cc @@ -598,6 +598,8 @@ MappingQ1::compute_fill_face (const typename DoFHandler::cell_iterator ExcDimensionMismatch(JxW_values.size(), npts)); + Assert (data.aux[0].size() <= data.unit_tangentials[face_no].size(), + ExcInternalError()); transform_contravariant(data.aux[0].begin(), data.aux[0].end(), data.unit_tangentials[face_no].begin(), @@ -621,6 +623,12 @@ MappingQ1::compute_fill_face (const typename DoFHandler::cell_iterator case 3: { + Assert (face_no+GeometryInfo::faces_per_cell < + data.unit_tangentials.n_rows(), + ExcInternalError()); + Assert (data.aux[1].size() <= + data.unit_tangentials[face_no+GeometryInfo::faces_per_cell].size(), + ExcInternalError()); transform_contravariant(data.aux[1].begin(), data.aux[1].end(), data.unit_tangentials[ -- 2.39.5