From: kanschat Date: Sun, 24 Oct 2010 17:32:21 +0000 (+0000) Subject: use SmartPointer instead of a reference in member variable X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5c8ea8885f60fba3dc351f57709967af61bc67e;p=dealii-svn.git use SmartPointer instead of a reference in member variable git-svn-id: https://svn.dealii.org/trunk@22456 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/fe/mapping_q1_eulerian.h b/deal.II/deal.II/include/fe/mapping_q1_eulerian.h index f0ebbb09aa..bf64fa0b13 100644 --- a/deal.II/deal.II/include/fe/mapping_q1_eulerian.h +++ b/deal.II/deal.II/include/fe/mapping_q1_eulerian.h @@ -130,20 +130,6 @@ class MappingQ1Eulerian : public MappingQ1 */ bool preserves_vertex_locations () const; - - /** - * Exception - */ - DeclException0 (ExcWrongNoOfComponents); - - /** - * Exception. - */ - DeclException2 (ExcWrongVectorSize, - int, int, - << "Vector has wrong size " << arg1 - << ", expected size " << arg2); - /** * Exception. */ @@ -174,14 +160,14 @@ class MappingQ1Eulerian : public MappingQ1 * Reference to the vector of * shifts. */ - const VECTOR &euler_transform_vectors; + SmartPointer > euler_transform_vectors; /** * Pointer to the DoFHandler to * which the mapping vector is * associated. */ - const SmartPointer,MappingQ1Eulerian > shiftmap_dof_handler; + SmartPointer,MappingQ1Eulerian > shiftmap_dof_handler; private: diff --git a/deal.II/deal.II/include/fe/mapping_q_eulerian.h b/deal.II/deal.II/include/fe/mapping_q_eulerian.h index c0b23637b0..9fd2999ff3 100644 --- a/deal.II/deal.II/include/fe/mapping_q_eulerian.h +++ b/deal.II/deal.II/include/fe/mapping_q_eulerian.h @@ -133,27 +133,12 @@ class MappingQEulerian : public MappingQ * locations). */ bool preserves_vertex_locations () const; - - /** - * Exception - */ - - DeclException0 (ExcWrongNoOfComponents); - + /** * Exception */ - DeclException0 (ExcInactiveCell); - - /** - * Exception - */ - - DeclException2 (ExcWrongVectorSize, int, int, - << "Vector has wrong size " << arg1 - << "-- expected size " << arg2); - + protected: /** * Implementation of the interface in @@ -178,7 +163,7 @@ class MappingQEulerian : public MappingQ * shifts. */ - const VECTOR &euler_vector; + SmartPointer > euler_vector; /** * Pointer to the DoFHandler to @@ -186,7 +171,7 @@ class MappingQEulerian : public MappingQ * associated. */ - const SmartPointer,MappingQEulerian > euler_dof_handler; + SmartPointer,MappingQEulerian > euler_dof_handler; private: 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 1f85b2c50c..3dd1292162 100644 --- a/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc +++ b/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc @@ -28,8 +28,8 @@ MappingQ1Eulerian:: MappingQ1Eulerian (const EulerVectorType &euler_transform_vectors, const DoFHandler &shiftmap_dof_handler) : - euler_transform_vectors(euler_transform_vectors), - shiftmap_dof_handler(&shiftmap_dof_handler, typeid(*this).name()) + euler_transform_vectors(&euler_transform_vectors), + shiftmap_dof_handler(&shiftmap_dof_handler) {} @@ -48,14 +48,12 @@ compute_mapping_support_points(const typename Triangulation::cell_ // *before* the mapping object is // constructed, which is not // necessarily what we want. - Assert (spacedim == shiftmap_dof_handler->get_fe().n_dofs_per_vertex(), - ExcWrongNoOfComponents()); - Assert (shiftmap_dof_handler->get_fe().n_components() == spacedim, - ExcWrongNoOfComponents()); - Assert (shiftmap_dof_handler->n_dofs() == euler_transform_vectors.size(), - ExcWrongVectorSize(euler_transform_vectors.size(), - shiftmap_dof_handler->n_dofs())); +//TODO: Only one of these two assertions should be relevant + AssertDimension (spacedim, shiftmap_dof_handler->get_fe().n_dofs_per_vertex()); + AssertDimension(shiftmap_dof_handler->get_fe().n_components(), spacedim); + + AssertDimension (shiftmap_dof_handler->n_dofs(), euler_transform_vectors->size()); // cast the // Triangulation::cell_iterator @@ -82,7 +80,7 @@ compute_mapping_support_points(const typename Triangulation::cell_ // now get the values of the shift // vectors at the vertices Vector mapping_values (shiftmap_dof_handler->get_fe().dofs_per_cell); - dof_cell->get_dof_values (euler_transform_vectors, mapping_values); + dof_cell->get_dof_values (*euler_transform_vectors, mapping_values); for (unsigned int i=0; i::vertices_per_cell; ++i) @@ -143,6 +141,7 @@ MappingQ1Eulerian::fill_fe_values ( // explicit instantiation template class MappingQ1Eulerian >; +template class MappingQ1Eulerian >; #ifdef DEAL_II_USE_PETSC template class MappingQ1Eulerian; #endif diff --git a/deal.II/deal.II/source/fe/mapping_q_eulerian.cc b/deal.II/deal.II/source/fe/mapping_q_eulerian.cc index 314270e7a6..f0ded0c90b 100644 --- a/deal.II/deal.II/source/fe/mapping_q_eulerian.cc +++ b/deal.II/deal.II/source/fe/mapping_q_eulerian.cc @@ -36,8 +36,8 @@ MappingQEulerian (const unsigned int degree, const DoFHandler &euler_dof_handler) : MappingQ(degree, true), - euler_vector(euler_vector), - euler_dof_handler(&euler_dof_handler, typeid(*this).name()), + euler_vector(&euler_vector), + euler_dof_handler(&euler_dof_handler), support_quadrature(degree), fe_values(euler_dof_handler.get_fe(), support_quadrature, @@ -51,7 +51,7 @@ Mapping * MappingQEulerian::clone () const { return new MappingQEulerian(this->get_degree(), - euler_vector, + *euler_vector, *euler_dof_handler); } @@ -111,9 +111,9 @@ compute_mapping_support_points // with respect to vector size, const unsigned int n_dofs = euler_dof_handler->n_dofs(); - const unsigned int vector_size = euler_vector.size(); + const unsigned int vector_size = euler_vector->size(); - Assert (n_dofs == vector_size,ExcWrongVectorSize(vector_size,n_dofs)); + AssertDimension(vector_size,n_dofs); // we then transform our tria iterator // into a dof iterator so we can @@ -153,7 +153,7 @@ compute_mapping_support_points const unsigned int n_support_pts = support_quadrature.n_quadrature_points; const unsigned int n_components = euler_dof_handler->get_fe().n_components(); - Assert (n_components >= spacedim, ExcWrongNoOfComponents() ); + Assert (n_components >= spacedim, ExcDimensionMismatch(n_components, spacedim) ); std::vector > shift_vector(n_support_pts,Vector(n_components)); @@ -165,7 +165,7 @@ compute_mapping_support_points // threads Threads::ThreadMutex::ScopedLock lock(fe_values_mutex); fe_values.reinit(dof_cell); - fe_values.get_function_values(euler_vector,shift_vector); + fe_values.get_function_values(*euler_vector, shift_vector); // and finally compute the positions of the // support points in the deformed