]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Significantly improve the error message one gets when you ask for something from...
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Sun, 1 Dec 2013 18:20:50 +0000 (18:20 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Sun, 1 Dec 2013 18:20:50 +0000 (18:20 +0000)
git-svn-id: https://svn.dealii.org/trunk@31840 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/changes.h
deal.II/include/deal.II/fe/fe_values.h
deal.II/source/fe/fe_values.cc
deal.II/source/fe/mapping_cartesian.cc
deal.II/source/fe/mapping_q1.cc

index 26b054bb08d3742b5d22523459d55326b83f4afa..4101eeb4bc0603d89b0fd7a87284093664676920 100644 (file)
@@ -230,6 +230,18 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li> Improved: When attempting operations such as FEValues::get_function_values()
+  or FEValues::shape_value(), the FEValues object needs to know that what these
+  functions return has been computed previously. What is computed is specified
+  by the update flags that are passed to the constructor of all FEValues, FEFaceValues
+  and FESubfaceValues objects. If a user attempts an operation for which the
+  corresponding flag was not specified, an exception is generated. This exception
+  did say previously what the cause was, but it was not overly explicit.
+  The exception now generates a message that says exactly what is going wrong.
+  <br>
+  (Wolfgang Bangerth, 2013/12/01)
+  </li>
+
   <li> Fixed: GridGenerator::truncated_cone() failed if half_length < 0.5*radius in 3d.
   <br>
   (Timo Heister, 2013/11/25)
index 994f7885f255afd4e9cb75618625ef6fe795fcf6..153c1b572162dc7c32f095931ad1af2564129dbb 100644 (file)
@@ -2218,7 +2218,15 @@ public:
    *
    * @ingroup Exceptions
    */
-  DeclException0 (ExcAccessToUninitializedField);
+  DeclException1 (ExcAccessToUninitializedField,
+                  char *,
+                 << ("You are requesting information from an FEValues/FEFaceValues/FESubfaceValues "
+                     "object for which this kind of information has not been computed. What "
+                     "information these objects compute is determined by the update_* flags you "
+                     "pass to the constructor. Here, the operation you are attempting requires "
+                     "the <")
+                 << arg1
+                 << "> flag to be set, but it was apparently not specified upon construction.");
   /**
    * @todo Document this
    *
@@ -2843,7 +2851,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_values,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_values"));
 
     // an adaptation of the FEValuesBase::shape_value_component function
     // except that here we know the component as fixed and we have
@@ -2869,7 +2877,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
 
     // an adaptation of the
     // FEValuesBase::shape_grad_component
@@ -2896,7 +2904,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_hessians,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_hessians"));
 
     // an adaptation of the
     // FEValuesBase::shape_grad_component
@@ -2922,7 +2930,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_values,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_values"));
 
     // same as for the scalar case except
     // that we have one more index
@@ -2960,7 +2968,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
 
     // same as for the scalar case except
     // that we have one more index
@@ -3000,7 +3008,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
 
     // same as for the scalar case except
     // that we have one more index
@@ -3035,7 +3043,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
     // same as for the scalar case except that we have one more index
     const int snc = shape_function_data[shape_function].single_nonzero_component;
 
@@ -3173,7 +3181,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_hessians,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_hessians"));
 
     // same as for the scalar case except
     // that we have one more index
@@ -3289,7 +3297,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
 
     // same as for the scalar case except
     // that we have one more index
@@ -3323,7 +3331,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_values,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_values"));
 
     // similar to the vector case where we
     // have more then one index and we need
@@ -3370,7 +3378,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
 
     const int snc = shape_function_data[shape_function].single_nonzero_component;
 
@@ -3460,7 +3468,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_values,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_values"));
 
     // similar to the vector case where we
     // have more then one index and we need
@@ -3510,7 +3518,7 @@ namespace FEValuesViews
     Assert (shape_function < fe_values.fe->dofs_per_cell,
             ExcIndexRange (shape_function, 0, fe_values.fe->dofs_per_cell));
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
 
     const int snc = shape_function_data[shape_function].single_nonzero_component;
 
@@ -3636,7 +3644,7 @@ FEValuesBase<dim,spacedim>::shape_value (const unsigned int i,
   Assert (i < fe->dofs_per_cell,
           ExcIndexRange (i, 0, fe->dofs_per_cell));
   Assert (this->update_flags & update_values,
-          ExcAccessToUninitializedField());
+          ExcAccessToUninitializedField("update_values"));
   Assert (fe->is_primitive (i),
           ExcShapeFunctionNotPrimitive(i));
 
@@ -3672,7 +3680,7 @@ FEValuesBase<dim,spacedim>::shape_value_component (const unsigned int i,
   Assert (i < fe->dofs_per_cell,
           ExcIndexRange (i, 0, fe->dofs_per_cell));
   Assert (this->update_flags & update_values,
-          ExcAccessToUninitializedField());
+          ExcAccessToUninitializedField("update_values"));
   Assert (component < fe->n_components(),
           ExcIndexRange(component, 0, fe->n_components()));
 
@@ -3701,7 +3709,7 @@ FEValuesBase<dim,spacedim>::shape_grad (const unsigned int i,
   Assert (i < fe->dofs_per_cell,
           ExcIndexRange (i, 0, fe->dofs_per_cell));
   Assert (this->update_flags & update_gradients,
-          ExcAccessToUninitializedField());
+          ExcAccessToUninitializedField("update_gradients"));
   Assert (fe->is_primitive (i),
           ExcShapeFunctionNotPrimitive(i));
   Assert (i<this->shape_gradients.size(),
@@ -3741,7 +3749,7 @@ FEValuesBase<dim,spacedim>::shape_grad_component (const unsigned int i,
   Assert (i < fe->dofs_per_cell,
           ExcIndexRange (i, 0, fe->dofs_per_cell));
   Assert (this->update_flags & update_gradients,
-          ExcAccessToUninitializedField());
+          ExcAccessToUninitializedField("update_gradients"));
   Assert (component < fe->n_components(),
           ExcIndexRange(component, 0, fe->n_components()));
 
@@ -3770,7 +3778,7 @@ FEValuesBase<dim,spacedim>::shape_hessian (const unsigned int i,
   Assert (i < fe->dofs_per_cell,
           ExcIndexRange (i, 0, fe->dofs_per_cell));
   Assert (this->update_flags & update_hessians,
-          ExcAccessToUninitializedField());
+          ExcAccessToUninitializedField("update_hessians"));
   Assert (fe->is_primitive (i),
           ExcShapeFunctionNotPrimitive(i));
   Assert (i<this->shape_hessians.size(),
@@ -3821,7 +3829,7 @@ FEValuesBase<dim,spacedim>::shape_hessian_component (const unsigned int i,
   Assert (i < fe->dofs_per_cell,
           ExcIndexRange (i, 0, fe->dofs_per_cell));
   Assert (this->update_flags & update_hessians,
-          ExcAccessToUninitializedField());
+          ExcAccessToUninitializedField("update_hessians"));
   Assert (component < fe->n_components(),
           ExcIndexRange(component, 0, fe->n_components()));
 
@@ -3887,7 +3895,8 @@ inline
 const std::vector<Point<spacedim> > &
 FEValuesBase<dim,spacedim>::get_quadrature_points () const
 {
-  Assert (this->update_flags & update_quadrature_points, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_quadrature_points,
+         ExcAccessToUninitializedField("update_quadrature_points"));
   return this->quadrature_points;
 }
 
@@ -3898,7 +3907,8 @@ inline
 const std::vector<double> &
 FEValuesBase<dim,spacedim>::get_JxW_values () const
 {
-  Assert (this->update_flags & update_JxW_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_JxW_values,
+         ExcAccessToUninitializedField("update_JxW_values"));
   return this->JxW_values;
 }
 
@@ -3909,7 +3919,8 @@ inline
 const std::vector<DerivativeForm<1,dim,spacedim> > &
 FEValuesBase<dim,spacedim>::get_jacobians () const
 {
-  Assert (this->update_flags & update_jacobians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_jacobians,
+         ExcAccessToUninitializedField("update_jacobians"));
   return this->jacobians;
 }
 
@@ -3920,7 +3931,8 @@ inline
 const std::vector<DerivativeForm<2,dim,spacedim> > &
 FEValuesBase<dim,spacedim>::get_jacobian_grads () const
 {
-  Assert (this->update_flags & update_jacobian_grads, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_jacobian_grads,
+         ExcAccessToUninitializedField("update_jacobians_grads"));
   return this->jacobian_grads;
 }
 
@@ -3931,7 +3943,8 @@ inline
 const std::vector<DerivativeForm<1,spacedim,dim> > &
 FEValuesBase<dim,spacedim>::get_inverse_jacobians () const
 {
-  Assert (this->update_flags & update_inverse_jacobians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_inverse_jacobians,
+         ExcAccessToUninitializedField("update_inverse_jacobians"));
   return this->inverse_jacobians;
 }
 
@@ -3942,7 +3955,8 @@ inline
 const Point<spacedim> &
 FEValuesBase<dim,spacedim>::quadrature_point (const unsigned int i) const
 {
-  Assert (this->update_flags & update_quadrature_points, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_quadrature_points,
+         ExcAccessToUninitializedField("update_quadrature_points"));
   Assert (i<this->quadrature_points.size(), ExcIndexRange(i, 0, this->quadrature_points.size()));
 
   return this->quadrature_points[i];
@@ -3956,7 +3970,8 @@ inline
 double
 FEValuesBase<dim,spacedim>::JxW (const unsigned int i) const
 {
-  Assert (this->update_flags & update_JxW_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_JxW_values,
+         ExcAccessToUninitializedField("update_JxW_values"));
   Assert (i<this->JxW_values.size(), ExcIndexRange(i, 0, this->JxW_values.size()));
 
   return this->JxW_values[i];
@@ -3969,7 +3984,8 @@ inline
 const DerivativeForm<1,dim,spacedim> &
 FEValuesBase<dim,spacedim>::jacobian (const unsigned int i) const
 {
-  Assert (this->update_flags & update_jacobians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_jacobians,
+         ExcAccessToUninitializedField("update_jacobians"));
   Assert (i<this->jacobians.size(), ExcIndexRange(i, 0, this->jacobians.size()));
 
   return this->jacobians[i];
@@ -3982,7 +3998,8 @@ inline
 const DerivativeForm<2,dim,spacedim> &
 FEValuesBase<dim,spacedim>::jacobian_grad (const unsigned int i) const
 {
-  Assert (this->update_flags & update_jacobian_grads, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_jacobian_grads,
+         ExcAccessToUninitializedField("update_jacobians_grads"));
   Assert (i<this->jacobian_grads.size(), ExcIndexRange(i, 0, this->jacobian_grads.size()));
 
   return this->jacobian_grads[i];
@@ -3995,7 +4012,8 @@ inline
 const DerivativeForm<1,spacedim,dim> &
 FEValuesBase<dim,spacedim>::inverse_jacobian (const unsigned int i) const
 {
-  Assert (this->update_flags & update_inverse_jacobians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_inverse_jacobians,
+         ExcAccessToUninitializedField("update_inverse_jacobians"));
   Assert (i<this->inverse_jacobians.size(), ExcIndexRange(i, 0, this->inverse_jacobians.size()));
 
   return this->inverse_jacobians[i];
@@ -4090,7 +4108,7 @@ FEValuesBase<dim,spacedim>::normal_vector (const unsigned int i) const
 {
   typedef FEValuesBase<dim,spacedim> FVB;
   Assert (this->update_flags & update_normal_vectors,
-          typename FVB::ExcAccessToUninitializedField());
+          typename FVB::ExcAccessToUninitializedField("update_normal_vectors"));
   Assert (i<this->normal_vectors.size(),
           ExcIndexRange(i, 0, this->normal_vectors.size()));
 
@@ -4185,7 +4203,7 @@ FEFaceValuesBase<dim,spacedim>::boundary_form (const unsigned int i) const
   Assert (i<this->boundary_forms.size(),
           ExcIndexRange(i, 0, this->boundary_forms.size()));
   Assert (this->update_flags & update_boundary_forms,
-          typename FVB::ExcAccessToUninitializedField());
+          typename FVB::ExcAccessToUninitializedField("update_boundary_forms"));
 
   return this->boundary_forms[i];
 }
index a497fce3cb22ab03d7c04cd59c61538b9523a600..23534addf475a1dd5c20e99b526d01b31ab5950d 100644 (file)
@@ -1265,7 +1265,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_values,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_values"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1289,7 +1289,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1313,7 +1313,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_hessians,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_hessians"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1337,7 +1337,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_hessians,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_hessians"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1361,7 +1361,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_values,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_values"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1386,7 +1386,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1410,7 +1410,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1435,7 +1435,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1459,7 +1459,7 @@ namespace FEValuesViews
     typedef FEValuesBase<dim,spacedim> FVB;
 
     Assert (fe_values.update_flags & update_gradients,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert (fe_values.present_cell.get () != 0,
             ExcMessage ("FEValues object is not reinited to any cell"));
     AssertDimension (fe_function.size (),
@@ -1482,7 +1482,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_hessians,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_hessians"));
     Assert (fe_values.present_cell.get() != 0,
             ExcMessage ("FEValues object is not reinit'ed to any cell"));
     AssertDimension (fe_function.size(),
@@ -1506,7 +1506,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim,spacedim> FVB;
     Assert (fe_values.update_flags & update_hessians,
-            typename FVB::ExcAccessToUninitializedField());
+            typename FVB::ExcAccessToUninitializedField("update_hessians"));
     Assert (laplacians.size() == fe_values.n_quadrature_points,
             ExcDimensionMismatch(laplacians.size(), fe_values.n_quadrature_points));
     Assert (fe_values.present_cell.get() != 0,
@@ -1533,7 +1533,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim, spacedim> FVB;
     Assert(fe_values.update_flags & update_values,
-           typename FVB::ExcAccessToUninitializedField());
+           typename FVB::ExcAccessToUninitializedField("update_values"));
     Assert(fe_values.present_cell.get() != 0,
            ExcMessage("FEValues object is not reinit'ed to any cell"));
     AssertDimension(fe_function.size(),
@@ -1557,7 +1557,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim, spacedim> FVB;
     Assert(fe_values.update_flags & update_gradients,
-           typename FVB::ExcAccessToUninitializedField());
+           typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert(fe_values.present_cell.get() != 0,
            ExcMessage("FEValues object is not reinit'ed to any cell"));
     AssertDimension(fe_function.size(),
@@ -1580,7 +1580,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim, spacedim> FVB;
     Assert(fe_values.update_flags & update_values,
-           typename FVB::ExcAccessToUninitializedField());
+           typename FVB::ExcAccessToUninitializedField("update_values"));
     Assert(fe_values.present_cell.get() != 0,
            ExcMessage("FEValues object is not reinit'ed to any cell"));
     AssertDimension(fe_function.size(),
@@ -1604,7 +1604,7 @@ namespace FEValuesViews
   {
     typedef FEValuesBase<dim, spacedim> FVB;
     Assert(fe_values.update_flags & update_gradients,
-           typename FVB::ExcAccessToUninitializedField());
+           typename FVB::ExcAccessToUninitializedField("update_gradients"));
     Assert(fe_values.present_cell.get() != 0,
            ExcMessage("FEValues object is not reinit'ed to any cell"));
     AssertDimension(fe_function.size(),
@@ -2575,7 +2575,8 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   const InputVector   &fe_function,
   std::vector<number> &values) const
 {
-  Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_values,
+          ExcAccessToUninitializedField("update_values"));
   AssertDimension (fe->n_components(), 1);
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
@@ -2598,7 +2599,8 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   const VectorSlice<const std::vector<types::global_dof_index> > &indices,
   std::vector<number> &values) const
 {
-  Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_values,
+          ExcAccessToUninitializedField("update_values"));
   AssertDimension (fe->n_components(), 1);
   AssertDimension (indices.size(), dofs_per_cell);
 
@@ -2631,7 +2633,8 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
 
-  Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_values,
+          ExcAccessToUninitializedField("update_values"));
   AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
 
   // get function values of dofs on this cell
@@ -2655,7 +2658,8 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   // number of function values is generated in each point.
   Assert (indices.size() % dofs_per_cell == 0,
           ExcNotMultiple(indices.size(), dofs_per_cell));
-  Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_values,
+          ExcAccessToUninitializedField("update_values"));
 
   VectorSlice<std::vector<Vector<number> > > val(values);
   if (indices.size() <= 100)
@@ -2688,7 +2692,8 @@ void FEValuesBase<dim,spacedim>::get_function_values (
   VectorSlice<std::vector<std::vector<double> > > values,
   bool quadrature_points_fastest) const
 {
-  Assert (this->update_flags & update_values, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_values,
+          ExcAccessToUninitializedField("update_values"));
 
   // Size of indices must be a multiple of dofs_per_cell such that an integer
   // number of function values is generated in each point.
@@ -2726,7 +2731,8 @@ FEValuesBase<dim,spacedim>::get_function_gradients (
   const InputVector           &fe_function,
   std::vector<Tensor<1,spacedim> > &gradients) const
 {
-  Assert (this->update_flags & update_gradients, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_gradients,
+          ExcAccessToUninitializedField("update_gradients"));
   AssertDimension (fe->n_components(), 1);
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
@@ -2748,7 +2754,8 @@ void FEValuesBase<dim,spacedim>::get_function_gradients (
   const VectorSlice<const std::vector<types::global_dof_index> > &indices,
   std::vector<Tensor<1,spacedim> > &gradients) const
 {
-  Assert (this->update_flags & update_gradients, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_gradients,
+          ExcAccessToUninitializedField("update_gradients"));
   AssertDimension (fe->n_components(), 1);
   AssertDimension (indices.size(), dofs_per_cell);
   if (dofs_per_cell <= 100)
@@ -2779,7 +2786,8 @@ FEValuesBase<dim,spacedim>::get_function_gradients (
   const InputVector                              &fe_function,
   std::vector<std::vector<Tensor<1,spacedim> > > &gradients) const
 {
-  Assert (this->update_flags & update_gradients, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_gradients,
+          ExcAccessToUninitializedField("update_gradients"));
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
   AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
@@ -2807,7 +2815,9 @@ void FEValuesBase<dim,spacedim>::get_function_gradients (
   // number of function values is generated in each point.
   Assert (indices.size() % dofs_per_cell == 0,
           ExcNotMultiple(indices.size(), dofs_per_cell));
-  Assert (this->update_flags & update_gradients, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_gradients,
+          ExcAccessToUninitializedField("update_gradients"));
+
   if (indices.size() <= 100)
     {
       double dof_values[100];
@@ -2840,7 +2850,8 @@ get_function_hessians (const InputVector                &fe_function,
                        std::vector<Tensor<2,spacedim> > &hessians) const
 {
   AssertDimension (fe->n_components(), 1);
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
   AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
@@ -2861,8 +2872,8 @@ void FEValuesBase<dim,spacedim>::get_function_hessians (
   const VectorSlice<const std::vector<types::global_dof_index> > &indices,
   std::vector<Tensor<2,spacedim> > &hessians) const
 {
-  Assert (this->update_flags & update_second_derivatives,
-          ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
   AssertDimension (indices.size(), dofs_per_cell);
   if (dofs_per_cell <= 100)
@@ -2894,7 +2905,8 @@ get_function_hessians (const InputVector                         &fe_function,
                        std::vector<std::vector<Tensor<2,spacedim> > > &hessians,
                        bool quadrature_points_fastest) const
 {
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
   AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
@@ -2918,8 +2930,8 @@ void FEValuesBase<dim, spacedim>::get_function_hessians (
   VectorSlice<std::vector<std::vector<Tensor<2,spacedim> > > > hessians,
   bool quadrature_points_fastest) const
 {
-  Assert (this->update_flags & update_second_derivatives,
-          ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   Assert (indices.size() % dofs_per_cell == 0,
           ExcNotMultiple(indices.size(), dofs_per_cell));
   if (indices.size() <= 100)
@@ -2952,7 +2964,8 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
   const InputVector   &fe_function,
   std::vector<number> &laplacians) const
 {
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   AssertDimension (fe->n_components(), 1);
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
@@ -2974,7 +2987,8 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
   const VectorSlice<const std::vector<types::global_dof_index> > &indices,
   std::vector<number> &laplacians) const
 {
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   AssertDimension (fe->n_components(), 1);
   AssertDimension (indices.size(), dofs_per_cell);
   if (dofs_per_cell <= 100)
@@ -3005,7 +3019,8 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
 {
   Assert (present_cell.get() != 0,
           ExcMessage ("FEValues object is not reinit'ed to any cell"));
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
 
   // get function values of dofs on this cell
@@ -3029,7 +3044,8 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
   // number of function values is generated in each point.
   Assert (indices.size() % dofs_per_cell == 0,
           ExcNotMultiple(indices.size(), dofs_per_cell));
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   if (indices.size() <= 100)
     {
       double dof_values[100];
@@ -3064,7 +3080,8 @@ void FEValuesBase<dim,spacedim>::get_function_laplacians (
 {
   Assert (indices.size() % dofs_per_cell == 0,
           ExcNotMultiple(indices.size(), dofs_per_cell));
-  Assert (this->update_flags & update_hessians, ExcAccessToUninitializedField());
+  Assert (this->update_flags & update_hessians,
+          ExcAccessToUninitializedField("update_hessians"));
   if (indices.size() <= 100)
     {
       double dof_values[100];
@@ -3104,7 +3121,7 @@ FEValuesBase<dim,spacedim>::get_normal_vectors () const
 {
   typedef FEValuesBase<dim,spacedim> FEVB;
   Assert (this->update_flags & update_normal_vectors,
-          typename FEVB::ExcAccessToUninitializedField());
+          typename FEVB::ExcAccessToUninitializedField("update_normal_vectors"));
   return this->normal_vectors;
 }
 
@@ -3513,7 +3530,7 @@ FEFaceValuesBase<dim,spacedim>::get_boundary_forms () const
 {
   typedef FEValuesBase<dim,spacedim> FEVB;
   Assert (this->update_flags & update_boundary_forms,
-          typename FEVB::ExcAccessToUninitializedField());
+          typename FEVB::ExcAccessToUninitializedField("update_boundary_forms"));
   return this->boundary_forms;
 }
 
index 814b0385df895f9346b1a4dbaf3fb10760bd83d3..6bf62d93155eace0ce07389ee571652b2cf04b73 100644 (file)
@@ -604,7 +604,7 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_covariant:
     {
       Assert (data.update_flags & update_covariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_covariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d=0; d<dim; ++d)
@@ -615,7 +615,7 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_contravariant:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d=0; d<dim; ++d)
@@ -625,9 +625,9 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_piola:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (data.update_flags & update_volume_elements,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_volume_elements"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d=0; d<dim; ++d)
@@ -659,7 +659,7 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_covariant:
     {
       Assert (data.update_flags & update_covariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_covariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d1=0; d1<dim; ++d1)
@@ -671,7 +671,7 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_contravariant:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d1=0; d1<dim; ++d1)
@@ -683,7 +683,7 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_covariant_gradient:
     {
       Assert (data.update_flags & update_covariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_covariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d1=0; d1<dim; ++d1)
@@ -695,7 +695,7 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_contravariant_gradient:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d1=0; d1<dim; ++d1)
@@ -707,9 +707,9 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_piola:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (data.update_flags & update_volume_elements,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_volume_elements"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d1=0; d1<dim; ++d1)
@@ -746,9 +746,9 @@ MappingCartesian<dim,spacedim>::transform (
     case mapping_piola_gradient:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (data.update_flags & update_volume_elements,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_volume_elements"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         for (unsigned int d1=0; d1<dim; ++d1)
index 5f53d1be59d465fbba7fcf330a0623ab7a5a29de..32bc51a094a7a67665d02223be4c14a1424406be 100644 (file)
@@ -1225,7 +1225,7 @@ void MappingQ1<dim,spacedim>::transform_fields(
     case mapping_contravariant:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         output[i] = apply_transformation(data.contravariant[i], input[i]);
@@ -1236,9 +1236,9 @@ void MappingQ1<dim,spacedim>::transform_fields(
     case mapping_piola:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (data.update_flags & update_volume_elements,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_volume_elements"));
       Assert (rank==1, ExcMessage("Only for rank 1"));
       if (rank!=1)
         return;
@@ -1258,7 +1258,7 @@ void MappingQ1<dim,spacedim>::transform_fields(
     case mapping_covariant:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         output[i] = apply_transformation(data.covariant[i], input[i]);
@@ -1290,9 +1290,9 @@ void MappingQ1<dim,spacedim>::transform_gradients(
     case mapping_contravariant_gradient:
     {
       Assert (data.update_flags & update_covariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_covariant_transformation"));
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (rank==2, ExcMessage("Only for rank 2"));
 
       for (unsigned int i=0; i<output.size(); ++i)
@@ -1308,9 +1308,9 @@ void MappingQ1<dim,spacedim>::transform_gradients(
     case mapping_covariant_gradient:
     {
       Assert (data.update_flags & update_covariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_covariant_transformation"));
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (rank==2, ExcMessage("Only for rank 2"));
 
       for (unsigned int i=0; i<output.size(); ++i)
@@ -1330,11 +1330,11 @@ void MappingQ1<dim,spacedim>::transform_gradients(
     case mapping_piola_gradient:
     {
       Assert (data.update_flags & update_covariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_covariant_transformation"));
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
       Assert (data.update_flags & update_volume_elements,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_volume_elements"));
       Assert (rank==2, ExcMessage("Only for rank 2"));
 
       for (unsigned int i=0; i<output.size(); ++i)
@@ -1378,7 +1378,7 @@ void MappingQ1<dim,spacedim>::transform_differential_forms(
     case mapping_covariant:
     {
       Assert (data.update_flags & update_contravariant_transformation,
-              typename FEValuesBase<dim>::ExcAccessToUninitializedField());
+              typename FEValuesBase<dim>::ExcAccessToUninitializedField("update_contravariant_transformation"));
 
       for (unsigned int i=0; i<output.size(); ++i)
         output[i] = apply_transformation(data.covariant[i], input[i]);

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.