From 5629ba8babdc41d8202ecd994b4eadacf45d9b13 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Tue, 22 May 2001 15:08:59 +0000 Subject: [PATCH] Declare existence of explicit specializations. git-svn-id: https://svn.dealii.org/trunk@4697 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/include/base/quadrature.h | 55 +++++++ deal.II/base/include/base/quadrature_lib.h | 17 ++ deal.II/deal.II/include/dofs/dof_accessor.h | 7 + deal.II/deal.II/include/dofs/dof_handler.h | 13 ++ deal.II/deal.II/include/dofs/dof_tools.h | 49 ++++++ deal.II/deal.II/include/grid/geometry_info.h | 9 + deal.II/deal.II/include/grid/grid_generator.h | 83 ++++++++++ deal.II/deal.II/include/grid/grid_in.h | 15 ++ deal.II/deal.II/include/grid/grid_out.h | 20 +++ .../deal.II/include/grid/grid_reordering.h | 11 ++ deal.II/deal.II/include/grid/tria.h | 154 +++++++++++++++++- deal.II/deal.II/include/grid/tria_accessor.h | 21 +++ deal.II/deal.II/include/grid/tria_boundary.h | 19 +++ .../deal.II/include/grid/tria_boundary_lib.h | 51 ++++++ deal.II/deal.II/include/grid/tria_levels.h | 1 + 15 files changed, 521 insertions(+), 4 deletions(-) diff --git a/deal.II/base/include/base/quadrature.h b/deal.II/base/include/base/quadrature.h index 95eae23bff..53802bce32 100644 --- a/deal.II/base/include/base/quadrature.h +++ b/deal.II/base/include/base/quadrature.h @@ -343,4 +343,59 @@ class QProjector : public Quadrature }; + +/* -------------- declaration of explicit specializations ------------- */ + +template <> +Quadrature<0>::Quadrature (const unsigned int); +template <> +Quadrature<0>::Quadrature (const Quadrature<-1> &, + const Quadrature<1> &); +template <> +Quadrature<1>::Quadrature (const Quadrature<0> &, + const Quadrature<1> &); +template <> +const Point<0> & Quadrature<0>::point (const unsigned int) const; +template <> +const std::vector > & Quadrature<0>::get_points () const; +template <> +double Quadrature<0>::weight (const unsigned int) const; +template <> +const std::vector & Quadrature<0>::get_weights () const; +template <> +void QProjector<1>::project_to_face (const Quadrature<0> &, + const unsigned int, + std::vector > &); +template <> +void QProjector<2>::project_to_face (const Quadrature<1> &quadrature, + const unsigned int face_no, + std::vector > &q_points); +template <> +void QProjector<3>::project_to_face (const Quadrature<2> &quadrature, + const unsigned int face_no, + std::vector > &q_points); +template <> +void QProjector<1>::project_to_subface (const Quadrature<0> &, + const unsigned int, + const unsigned int, + std::vector > &); +template <> +void QProjector<2>::project_to_subface (const Quadrature<1> &quadrature, + const unsigned int face_no, + const unsigned int subface_no, + std::vector > &q_points); +template <> +void QProjector<3>::project_to_subface (const Quadrature<2> &quadrature, + const unsigned int face_no, + const unsigned int subface_no, + std::vector > &q_points); +template <> +bool +QIterated<1>::uses_both_endpoints (const Quadrature<1> &base_quadrature); +template <> +QIterated<1>::QIterated (const Quadrature<1> &base_quadrature, + const unsigned int n_copies); + + + #endif diff --git a/deal.II/base/include/base/quadrature_lib.h b/deal.II/base/include/base/quadrature_lib.h index d344b3bb6f..61a125ad4a 100644 --- a/deal.II/base/include/base/quadrature_lib.h +++ b/deal.II/base/include/base/quadrature_lib.h @@ -195,4 +195,21 @@ class QWeddle : public Quadrature }; + +/* -------------- declaration of explicit specializations ------------- */ + +template <> QGauss<1>::QGauss (unsigned int n); +template <> QGauss2<1>::QGauss2 (); +template <> QGauss3<1>::QGauss3 (); +template <> QGauss4<1>::QGauss4 (); +template <> QGauss5<1>::QGauss5 (); +template <> QGauss6<1>::QGauss6 (); +template <> QGauss7<1>::QGauss7 (); +template <> QMidpoint<1>::QMidpoint (); +template <> QTrapez<1>::QTrapez (); +template <> QSimpson<1>::QSimpson (); +template <> QMilne<1>::QMilne (); +template <> QWeddle<1>::QWeddle (); + + #endif diff --git a/deal.II/deal.II/include/dofs/dof_accessor.h b/deal.II/deal.II/include/dofs/dof_accessor.h index e80af1059e..34f48d9e67 100644 --- a/deal.II/deal.II/include/dofs/dof_accessor.h +++ b/deal.II/deal.II/include/dofs/dof_accessor.h @@ -1255,6 +1255,13 @@ class DoFCellAccessor : public DoFObjectAccessor }; +/* -------------- declaration of explicit specializations ------------- */ + +template <> TriaIterator<1, DoFObjectAccessor<0,1> > DoFCellAccessor<1>::face (const unsigned int) const; +template <> TriaIterator<2, DoFObjectAccessor<1,2> > DoFCellAccessor<2>::face (const unsigned int i) const; +template <> TriaIterator<3, DoFObjectAccessor<2,3> > DoFCellAccessor<3>::face (const unsigned int i) const; + + // if in optimized mode: include more templates #ifndef DEBUG # include "dof_accessor.templates.h" diff --git a/deal.II/deal.II/include/dofs/dof_handler.h b/deal.II/deal.II/include/dofs/dof_handler.h index bddb9bb6f8..c66f832a72 100644 --- a/deal.II/deal.II/include/dofs/dof_handler.h +++ b/deal.II/deal.II/include/dofs/dof_handler.h @@ -1158,6 +1158,19 @@ class DoFHandler : public Subscriptor, + +/* -------------- declaration of explicit specializations ------------- */ + +template <> unsigned int DoFHandler<1>::n_boundary_dofs () const; +template <> unsigned int DoFHandler<1>::n_boundary_dofs (const FunctionMap &) const; +template <> unsigned int DoFHandler<1>::n_boundary_dofs (const std::set &) const; +template <> unsigned int DoFHandler<1>::max_couplings_between_dofs () const; +template <> unsigned int DoFHandler<1>::max_couplings_between_boundary_dofs () const; +template <> unsigned int DoFHandler<2>::max_couplings_between_dofs () const; +template <> unsigned int DoFHandler<2>::max_couplings_between_boundary_dofs () const; +template <> unsigned int DoFHandler<3>::max_couplings_between_dofs () const; + + /* ----------------------- Inline functions ---------------------------------- */ diff --git a/deal.II/deal.II/include/dofs/dof_tools.h b/deal.II/deal.II/include/dofs/dof_tools.h index ebc867ed5e..3aedd22215 100644 --- a/deal.II/deal.II/include/dofs/dof_tools.h +++ b/deal.II/deal.II/include/dofs/dof_tools.h @@ -1032,6 +1032,55 @@ class DoFTools +/* -------------- declaration of explicit specializations ------------- */ + +template <> +void +DoFTools::make_boundary_sparsity_pattern (const DoFHandler<1> &dof_handler, + const DoFHandler<1>::FunctionMap &function_map, + const std::vector &dof_to_boundary_mapping, + SparsityPattern &sparsity); +template <> +void DoFTools::make_boundary_sparsity_pattern (const DoFHandler<1> &dof_handler, + const std::vector &dof_to_boundary_mapping, + SparsityPattern &sparsity); +template <> +void DoFTools::make_hanging_node_constraints (const DoFHandler<1> &, + ConstraintMatrix &); +template <> +void DoFTools::make_hanging_node_constraints (const DoFHandler<2> &, + ConstraintMatrix &); +template <> +void DoFTools::make_hanging_node_constraints (const DoFHandler<3> &, + ConstraintMatrix &); +template <> +void +DoFTools::extract_boundary_dofs (const DoFHandler<1> &dof_handler, + const std::vector &component_select, + std::vector &selected_dofs, + const std::set &boundary_indicators); +template <> +void +DoFTools::extract_hanging_node_dofs (const DoFHandler<1> &dof_handler, + std::vector &selected_dofs); +template <> +void +DoFTools::extract_hanging_node_dofs (const DoFHandler<2> &dof_handler, + std::vector &selected_dofs); +template <> +void +DoFTools::extract_hanging_node_dofs (const DoFHandler<3> &dof_handler, + std::vector &selected_dofs); +template <> +void DoFTools::map_dof_to_boundary_indices (const DoFHandler<1> &dof_handler, + const std::set &boundary_indicators, + std::vector &mapping); +template <> +void DoFTools::map_dof_to_boundary_indices (const DoFHandler<1> &dof_handler, + std::vector &mapping); + + + // ---------------------- inline and template functions -------------------- template diff --git a/deal.II/deal.II/include/grid/geometry_info.h b/deal.II/deal.II/include/grid/geometry_info.h index 72b42ee7d9..3c53ed37ab 100644 --- a/deal.II/deal.II/include/grid/geometry_info.h +++ b/deal.II/deal.II/include/grid/geometry_info.h @@ -194,6 +194,15 @@ struct GeometryInfo<0> +/* -------------- declaration of explicit specializations ------------- */ + + +template <> const unsigned int GeometryInfo<1>::opposite_face[GeometryInfo<1>::faces_per_cell]; +template <> const unsigned int GeometryInfo<2>::opposite_face[GeometryInfo<2>::faces_per_cell]; +template <> const unsigned int GeometryInfo<3>::opposite_face[GeometryInfo<3>::faces_per_cell]; + + + /*---------------------------- Inline functions --------------------------------*/ diff --git a/deal.II/deal.II/include/grid/grid_generator.h b/deal.II/deal.II/include/grid/grid_generator.h index 2ce974d703..f5f37707d7 100644 --- a/deal.II/deal.II/include/grid/grid_generator.h +++ b/deal.II/deal.II/include/grid/grid_generator.h @@ -358,4 +358,87 @@ class GridGenerator }; + +/* -------------- declaration of explicit specializations ------------- */ + +template <> +void +GridGenerator::colorize_hyper_rectangle (Triangulation<1> &); +template <> +void GridGenerator::hyper_cube_slit (Triangulation<1> &, + const double, + const double); +template <> +void GridGenerator::hyper_L (Triangulation<1> &, + const double, + const double); +template <> +void GridGenerator::hyper_ball (Triangulation<1> &, + const Point<1> &, + const double); +template <> +void GridGenerator::hyper_shell (Triangulation<1> &, + const Point<1> &, + const double, + const double, + const unsigned int); +template <> +void +GridGenerator::hyper_cube_slit (Triangulation<2> &tria, + const double left, + const double right); +template <> +void +GridGenerator::hyper_L (Triangulation<2> &tria, + const double a, + const double b); +template <> +void +GridGenerator::hyper_ball (Triangulation<2> &tria, + const Point<2> &p, + const double radius); +template <> +void GridGenerator::hyper_shell (Triangulation<2> &tria, + const Point<2> ¢er, + const double inner_radius, + const double outer_radius, + const unsigned int n_cells); +template <> +void +GridGenerator::half_hyper_shell (Triangulation<2> &tria, + const Point<2> ¢er, + const double inner_radius, + const double outer_radius, + const unsigned int n_cells); +template <> +void GridGenerator::hyper_cube_slit (Triangulation<3> &, + const double, + const double); +template<> +void GridGenerator::enclosed_hyper_cube (Triangulation<3> &tria, + const double l, + const double r, + const double d, + bool colorize); +template <> +void +GridGenerator::hyper_L (Triangulation<3> &tria, + const double a, + const double b); +template <> +void +GridGenerator::hyper_ball (Triangulation<3> &tria, + const Point<3> &p, + const double radius); +template <> +void GridGenerator::hyper_shell (Triangulation<3> &, + const Point<3> &, + const double , + const double , + const unsigned int ); +template <> +void GridGenerator::laplace_transformation (Triangulation<1> &, + const std::map > &); + + #endif diff --git a/deal.II/deal.II/include/grid/grid_in.h b/deal.II/deal.II/include/grid/grid_in.h index 3381df122e..fa1d7a26d5 100644 --- a/deal.II/deal.II/include/grid/grid_in.h +++ b/deal.II/deal.II/include/grid/grid_in.h @@ -307,4 +307,19 @@ class GridIn }; + +/* -------------- declaration of explicit specializations ------------- */ + +template <> +void +GridIn<2>::debug_output_grid (const std::vector > &cells, + const std::vector > &vertices, + std::ostream &out); +template <> +void +GridIn<3>::debug_output_grid (const std::vector > &cells, + const std::vector > &vertices, + std::ostream &out); + + #endif diff --git a/deal.II/deal.II/include/grid/grid_out.h b/deal.II/deal.II/include/grid/grid_out.h index d633784bd3..765922212e 100644 --- a/deal.II/deal.II/include/grid/grid_out.h +++ b/deal.II/deal.II/include/grid/grid_out.h @@ -747,4 +747,24 @@ class GridOut }; + +/* -------------- declaration of explicit specializations ------------- */ + +template <> +unsigned int GridOut::n_boundary_faces (const Triangulation<1> &) const; +template <> +void GridOut::write_ucd_faces (const Triangulation<1> &, + const unsigned int, + std::ostream &) const; +template <> +void GridOut::write_gnuplot (const Triangulation<1> &tria, + std::ostream &out, + const Mapping<1> *); +template <> +void GridOut::write_eps (const Triangulation<1> &, + std::ostream &, + const Mapping<1> *); + + + #endif diff --git a/deal.II/deal.II/include/grid/grid_reordering.h b/deal.II/deal.II/include/grid/grid_reordering.h index a967e365c8..a980ac9b8a 100644 --- a/deal.II/deal.II/include/grid/grid_reordering.h +++ b/deal.II/deal.II/include/grid/grid_reordering.h @@ -937,4 +937,15 @@ class GridReordering : private GridReorderingInfo +/* -------------- declaration of explicit specializations ------------- */ + +template <> const unsigned int GridReorderingInfo<2>::rotational_states_of_cells; +template <> const unsigned int GridReorderingInfo<2>::rotational_states_of_faces; +template <> const unsigned int GridReorderingInfo<3>::rotational_states_of_cells; +template <> const unsigned int GridReorderingInfo<3>::rotational_states_of_faces; +template <> void GridReordering<2>::Cell::insert_faces (std::map &global_faces); +template <> void GridReordering<3>::Cell::insert_faces (std::map &global_faces); +template <> void GridReordering<1>::reorder_cells (std::vector > &); + + #endif diff --git a/deal.II/deal.II/include/grid/tria.h b/deal.II/deal.II/include/grid/tria.h index af67385f3b..ddfe2cd1f6 100644 --- a/deal.II/deal.II/include/grid/tria.h +++ b/deal.II/deal.II/include/grid/tria.h @@ -324,10 +324,6 @@ class TriaDimensionInfo<3> /*------------------------------------------------------------------------*/ -//TODO:[WB] (compiler) Move the TriaNumberCache into the Triangulation class -// once the compiler supports this (gcc2.95 does not allow this at present) - - /** * Cache class used to store the number of used and active elements @@ -3227,6 +3223,156 @@ class Triangulation : public TriaDimensionInfo, }; + +/* -------------- declaration of explicit specializations ------------- */ + + +template <> TriaDimensionInfo<1>::cell_iterator Triangulation<1>::begin (const unsigned int level) const; +template <> TriaDimensionInfo<1>::raw_cell_iterator Triangulation<1>::end () const; +template <> TriaDimensionInfo<2>::cell_iterator Triangulation<2>::begin (const unsigned int level) const; +template <> TriaDimensionInfo<2>::raw_cell_iterator Triangulation<2>::end () const; +template <> TriaDimensionInfo<3>::cell_iterator Triangulation<3>::begin (const unsigned int level) const; +template <> TriaDimensionInfo<3>::raw_cell_iterator Triangulation<3>::end () const; +template <> void Triangulation<1>::create_triangulation (const std::vector > &v, + const std::vector > &cells, + const SubCellData &subcelldata); +template <> void Triangulation<2>::create_triangulation (const std::vector > &v, + const std::vector > &cells, + const SubCellData &subcelldata); +template <> void Triangulation<3>::create_triangulation (const std::vector > &v, + const std::vector > &cells, + const SubCellData &subcelldata); +template <> void Triangulation<1>::distort_random (const double factor, + const bool keep_boundary); +template <> void Triangulation<1>::clear_user_pointers (); +template <> void Triangulation<1>::clear_user_flags (); +template <> void Triangulation<2>::clear_user_pointers (); +template <> void Triangulation<2>::clear_user_flags (); +template <> void Triangulation<3>::clear_user_pointers (); +template <> void Triangulation<3>::clear_user_flags (); +template <> void Triangulation<1>::save_user_flags_quad (std::ostream &) const; +template <> void Triangulation<1>::save_user_flags_quad (std::vector &) const; +template <> void Triangulation<1>::load_user_flags_quad (std::istream &); +template <> void Triangulation<1>::load_user_flags_quad (const std::vector &); +template <> void Triangulation<1>::save_user_flags_hex (std::ostream &) const; +template <> void Triangulation<1>::save_user_flags_hex (std::vector &) const; +template <> void Triangulation<1>::load_user_flags_hex (std::istream &); +template <> void Triangulation<1>::load_user_flags_hex (const std::vector &); +template <> void Triangulation<2>::save_user_flags_hex (std::ostream &) const; +template <> void Triangulation<2>::save_user_flags_hex (std::vector &) const; +template <> void Triangulation<2>::load_user_flags_hex (std::istream &); +template <> void Triangulation<2>::load_user_flags_hex (const std::vector &); +template <> TriaDimensionInfo<1>::raw_cell_iterator Triangulation<1>::begin_raw (const unsigned int level) const; +template <> TriaDimensionInfo<1>::active_cell_iterator Triangulation<1>::begin_active (const unsigned int level) const; +template <> TriaDimensionInfo<1>::raw_cell_iterator Triangulation<1>::last_raw () const; +template <> TriaDimensionInfo<1>::raw_cell_iterator Triangulation<1>::last_raw (const unsigned int level) const; +template <> TriaDimensionInfo<1>::cell_iterator Triangulation<1>::last () const; +template <> TriaDimensionInfo<1>::cell_iterator Triangulation<1>::last (const unsigned int level) const; +template <> TriaDimensionInfo<1>::active_cell_iterator Triangulation<1>::last_active () const; +template <> TriaDimensionInfo<1>::active_cell_iterator Triangulation<1>::last_active (const unsigned int level) const; +template <> TriaDimensionInfo<1>::raw_face_iterator Triangulation<1>::begin_raw_face (const unsigned int) const; +template <> TriaDimensionInfo<1>::face_iterator Triangulation<1>::begin_face (const unsigned int) const; +template <> TriaDimensionInfo<1>::active_face_iterator Triangulation<1>::begin_active_face (const unsigned int) const; +template <> TriaDimensionInfo<1>::raw_face_iterator Triangulation<1>::end_face () const; +template <> TriaDimensionInfo<1>::raw_face_iterator Triangulation<1>::last_raw_face () const; +template <> TriaDimensionInfo<1>::raw_face_iterator Triangulation<1>::last_raw_face (const unsigned int) const; +template <> TriaDimensionInfo<1>::face_iterator Triangulation<1>::last_face () const; +template <> TriaDimensionInfo<1>::face_iterator Triangulation<1>::last_face (const unsigned int) const; +template <> TriaDimensionInfo<1>::active_face_iterator Triangulation<1>::last_active_face () const; +template <> TriaDimensionInfo<1>::active_face_iterator Triangulation<1>::last_active_face (const unsigned int) const; +template <> TriaDimensionInfo<1>::raw_quad_iterator Triangulation<1>::begin_raw_quad (const unsigned int) const; +template <> TriaDimensionInfo<1>::quad_iterator Triangulation<1>::begin_quad (const unsigned int) const; +template <> TriaDimensionInfo<1>::active_quad_iterator Triangulation<1>::begin_active_quad (const unsigned int) const; +template <> TriaDimensionInfo<1>::raw_quad_iterator Triangulation<1>::end_quad () const; +template <> TriaDimensionInfo<1>::raw_quad_iterator Triangulation<1>::last_raw_quad (const unsigned int) const; +template <> TriaDimensionInfo<1>::raw_quad_iterator Triangulation<1>::last_raw_quad () const; +template <> TriaDimensionInfo<1>::quad_iterator Triangulation<1>::last_quad (const unsigned int) const; +template <> TriaDimensionInfo<1>::quad_iterator Triangulation<1>::last_quad () const; +template <> TriaDimensionInfo<1>::active_quad_iterator Triangulation<1>::last_active_quad (const unsigned int) const; +template <> TriaDimensionInfo<1>::active_quad_iterator Triangulation<1>::last_active_quad () const; +template <> TriaDimensionInfo<1>::raw_hex_iterator Triangulation<1>::begin_raw_hex (const unsigned int) const; +template <> TriaDimensionInfo<1>::hex_iterator Triangulation<1>::begin_hex (const unsigned int) const; +template <> TriaDimensionInfo<1>::active_hex_iterator Triangulation<1>::begin_active_hex (const unsigned int) const; +template <> TriaDimensionInfo<1>::raw_hex_iterator Triangulation<1>::end_hex () const; +template <> TriaDimensionInfo<1>::raw_hex_iterator Triangulation<1>::last_raw_hex (const unsigned int) const; +template <> TriaDimensionInfo<1>::raw_hex_iterator Triangulation<1>::last_raw_hex () const; +template <> TriaDimensionInfo<1>::hex_iterator Triangulation<1>::last_hex (const unsigned int) const; +template <> TriaDimensionInfo<1>::hex_iterator Triangulation<1>::last_hex () const; +template <> TriaDimensionInfo<1>::active_hex_iterator Triangulation<1>::last_active_hex (const unsigned int) const; +template <> TriaDimensionInfo<1>::active_hex_iterator Triangulation<1>::last_active_hex () const; +template <> TriaDimensionInfo<2>::raw_cell_iterator Triangulation<2>::begin_raw (const unsigned int level) const; +template <> TriaDimensionInfo<2>::active_cell_iterator Triangulation<2>::begin_active (const unsigned int level) const; +template <> TriaDimensionInfo<2>::raw_cell_iterator Triangulation<2>::last_raw () const; +template <> TriaDimensionInfo<2>::raw_cell_iterator Triangulation<2>::last_raw (const unsigned int level) const; +template <> TriaDimensionInfo<2>::cell_iterator Triangulation<2>::last () const; +template <> TriaDimensionInfo<2>::cell_iterator Triangulation<2>::last (const unsigned int level) const; +template <> TriaDimensionInfo<2>::active_cell_iterator Triangulation<2>::last_active () const; +template <> TriaDimensionInfo<2>::active_cell_iterator Triangulation<2>::last_active (const unsigned int level) const; +template <> TriaDimensionInfo<2>::raw_face_iterator Triangulation<2>::begin_raw_face (const unsigned int level) const; +template <> TriaDimensionInfo<2>::face_iterator Triangulation<2>::begin_face (const unsigned int level) const; +template <> TriaDimensionInfo<2>::active_face_iterator Triangulation<2>::begin_active_face (const unsigned int level) const; +template <> TriaDimensionInfo<2>::raw_face_iterator Triangulation<2>::end_face () const; +template <> TriaDimensionInfo<2>::raw_face_iterator Triangulation<2>::last_raw_face () const; +template <> TriaDimensionInfo<2>::raw_face_iterator Triangulation<2>::last_raw_face (const unsigned int level) const; +template <> TriaDimensionInfo<2>::face_iterator Triangulation<2>::last_face () const; +template <> TriaDimensionInfo<2>::face_iterator Triangulation<2>::last_face (const unsigned int level) const; +template <> TriaDimensionInfo<2>::active_face_iterator Triangulation<2>::last_active_face () const; +template <> TriaDimensionInfo<2>::active_face_iterator Triangulation<2>::last_active_face (const unsigned int level) const; +template <> TriaDimensionInfo<2>::raw_hex_iterator Triangulation<2>::begin_raw_hex (const unsigned int) const; +template <> TriaDimensionInfo<2>::hex_iterator Triangulation<2>::begin_hex (const unsigned int) const; +template <> TriaDimensionInfo<2>::active_hex_iterator Triangulation<2>::begin_active_hex (const unsigned int) const; +template <> TriaDimensionInfo<2>::raw_hex_iterator Triangulation<2>::end_hex () const; +template <> TriaDimensionInfo<2>::raw_hex_iterator Triangulation<2>::last_raw_hex (const unsigned int) const; +template <> TriaDimensionInfo<2>::raw_hex_iterator Triangulation<2>::last_raw_hex () const; +template <> TriaDimensionInfo<2>::hex_iterator Triangulation<2>::last_hex (const unsigned int) const; +template <> TriaDimensionInfo<2>::hex_iterator Triangulation<2>::last_hex () const; +template <> TriaDimensionInfo<2>::active_hex_iterator Triangulation<2>::last_active_hex (const unsigned int) const; +template <> TriaDimensionInfo<2>::active_hex_iterator Triangulation<2>::last_active_hex () const; +template <> TriaDimensionInfo<3>::raw_cell_iterator Triangulation<3>::begin_raw (const unsigned int level) const; +template <> TriaDimensionInfo<3>::active_cell_iterator Triangulation<3>::begin_active (const unsigned int level) const; +template <> TriaDimensionInfo<3>::raw_cell_iterator Triangulation<3>::last_raw () const; +template <> TriaDimensionInfo<3>::raw_cell_iterator Triangulation<3>::last_raw (const unsigned int level) const; +template <> TriaDimensionInfo<3>::cell_iterator Triangulation<3>::last () const; +template <> TriaDimensionInfo<3>::cell_iterator Triangulation<3>::last (const unsigned int level) const; +template <> TriaDimensionInfo<3>::active_cell_iterator Triangulation<3>::last_active () const; +template <> TriaDimensionInfo<3>::active_cell_iterator Triangulation<3>::last_active (const unsigned int level) const; +template <> TriaDimensionInfo<3>::raw_face_iterator Triangulation<3>::begin_raw_face (const unsigned int level) const; +template <> TriaDimensionInfo<3>::face_iterator Triangulation<3>::begin_face (const unsigned int level) const; +template <> TriaDimensionInfo<3>::active_face_iterator Triangulation<3>::begin_active_face (const unsigned int level) const; +template <> TriaDimensionInfo<3>::raw_face_iterator Triangulation<3>::end_face () const; +template <> TriaDimensionInfo<3>::raw_face_iterator Triangulation<3>::last_raw_face () const; +template <> TriaDimensionInfo<3>::raw_face_iterator Triangulation<3>::last_raw_face (const unsigned int level) const; +template <> TriaDimensionInfo<3>::face_iterator Triangulation<3>::last_face () const; +template <> TriaDimensionInfo<3>::face_iterator Triangulation<3>::last_face (const unsigned int level) const; +template <> TriaDimensionInfo<3>::active_face_iterator Triangulation<3>::last_active_face () const; +template <> TriaDimensionInfo<3>::active_face_iterator Triangulation<3>::last_active_face (const unsigned int level) const; +template <> unsigned int Triangulation<1>::n_active_cells (const unsigned int level) const; +template <> unsigned int Triangulation<1>::n_cells (const unsigned int level) const; +template <> unsigned int Triangulation<2>::n_cells (const unsigned int level) const; +template <> unsigned int Triangulation<2>::n_active_cells (const unsigned int level) const; +template <> unsigned int Triangulation<3>::n_cells (const unsigned int level) const; +template <> unsigned int Triangulation<3>::n_active_cells (const unsigned int level) const; +template <> unsigned int Triangulation<1>::n_quads () const; +template <> unsigned int Triangulation<1>::n_quads (const unsigned int) const; +template <> unsigned int Triangulation<1>::n_active_quads (const unsigned int) const; +template <> unsigned int Triangulation<1>::n_active_quads () const; +template <> unsigned int Triangulation<1>::max_adjacent_cells () const; +template <> void Triangulation<1>::execute_refinement (); +template <> void Triangulation<2>::execute_refinement (); +template <> void Triangulation<3>::execute_refinement (); +template <> void Triangulation<3>::prepare_refinement_dim_dependent (); +template <> void Triangulation<1>::delete_children (cell_iterator &cell); +template <> void Triangulation<2>::delete_children (cell_iterator &cell); +template <> void Triangulation<3>::delete_children (cell_iterator &cell); +template <> void Triangulation<1>::update_number_cache_quads (); +template <> void Triangulation<1>::update_number_cache_hexes (); +template <> void Triangulation<2>::update_number_cache_hexes (); + +template <> void CellData<1>::rotate (const unsigned int); +template <> void CellData<2>::rotate (const unsigned int times); +template <> void CellData<3>::rotate (const unsigned int times); + + #endif diff --git a/deal.II/deal.II/include/grid/tria_accessor.h b/deal.II/deal.II/include/grid/tria_accessor.h index 67fb34fae6..f36d506cc5 100644 --- a/deal.II/deal.II/include/grid/tria_accessor.h +++ b/deal.II/deal.II/include/grid/tria_accessor.h @@ -2039,6 +2039,27 @@ class CellAccessor : public TriaObjectAccessor +/* -------------- declaration of explicit specializations ------------- */ + +template <> Point<2> TriaObjectAccessor<2, 2>::barycenter () const; +template <> Point<3> TriaObjectAccessor<2, 3>::barycenter () const; +template <> Point<3> TriaObjectAccessor<3, 3>::barycenter () const; +template <> bool CellAccessor<1>::at_boundary () const; +template <> unsigned char CellAccessor<1>::material_id () const; +template <> void CellAccessor<1>::set_material_id (const unsigned char mat_id) const; +template <> bool CellAccessor<1>::point_inside (const Point<1> &p) const; +template <> bool CellAccessor<2>::at_boundary () const; +template <> unsigned char CellAccessor<2>::material_id () const; +template <> void CellAccessor<2>::set_material_id (const unsigned char mat_id) const; +template <> bool CellAccessor<2>::point_inside (const Point<2> &p) const; +template <> bool CellAccessor<3>::at_boundary () const; +template <> unsigned char CellAccessor<3>::material_id () const; +template <> void CellAccessor<3>::set_material_id (const unsigned char mat_id) const; +template <> bool CellAccessor<3>::point_inside (const Point<3> &) const; +template <> bool CellAccessor<1>::has_boundary_lines () const; + + + // include more templates in debug and optimized mode # include "tria_accessor.templates.h" diff --git a/deal.II/deal.II/include/grid/tria_boundary.h b/deal.II/deal.II/include/grid/tria_boundary.h index 5b893bced9..780998d926 100644 --- a/deal.II/deal.II/include/grid/tria_boundary.h +++ b/deal.II/deal.II/include/grid/tria_boundary.h @@ -367,6 +367,25 @@ class StraightBoundary : public Boundary +/* -------------- declaration of explicit specializations ------------- */ + +template <> +void +StraightBoundary<1>:: +get_normals_at_vertices (const Triangulation<1>::face_iterator &, + FaceVertexNormals &) const; +template <> +void +StraightBoundary<2>:: +get_normals_at_vertices (const Triangulation<2>::face_iterator &face, + Boundary<2>::FaceVertexNormals &face_vertex_normals) const; +template <> +void +StraightBoundary<3>:: +get_normals_at_vertices (const Triangulation<3>::face_iterator &face, + Boundary<3>::FaceVertexNormals &face_vertex_normals) const; + + /*---------------------------- boundary-function.h ---------------------------*/ #endif diff --git a/deal.II/deal.II/include/grid/tria_boundary_lib.h b/deal.II/deal.II/include/grid/tria_boundary_lib.h index f11996fef9..247d1c7285 100644 --- a/deal.II/deal.II/include/grid/tria_boundary_lib.h +++ b/deal.II/deal.II/include/grid/tria_boundary_lib.h @@ -357,4 +357,55 @@ class HalfHyperShellBoundary : public HyperShellBoundary +/* -------------- declaration of explicit specializations ------------- */ + +template <> +Point<1> +HyperBallBoundary<1>:: +get_new_point_on_quad (const Triangulation<1>::quad_iterator &) const; +template <> +void +HyperBallBoundary<1>::get_intermediate_points_on_line ( + const Triangulation<1>::line_iterator &, + std::vector > &) const; +template <> +void +HyperBallBoundary<3>::get_intermediate_points_on_quad ( + const Triangulation<3>::quad_iterator &quad, + std::vector > &points) const; +template <> +void +HyperBallBoundary<1>:: +get_normals_at_vertices (const Triangulation<1>::face_iterator &, + FaceVertexNormals &) const; +template <> +Point<1> +HalfHyperBallBoundary<1>:: +get_new_point_on_quad (const Triangulation<1>::quad_iterator &) const; +template <> +void +HalfHyperBallBoundary<1>:: +get_intermediate_points_on_quad (const Triangulation<1>::quad_iterator &, + std::vector > &) const; +template <> +void +HalfHyperBallBoundary<1>:: +get_normals_at_vertices (const Triangulation<1>::face_iterator &, + Boundary<1>::FaceVertexNormals &) const; +template <> +Point<1> +HalfHyperShellBoundary<1>:: +get_new_point_on_quad (const Triangulation<1>::quad_iterator &) const; +template <> +void +HalfHyperShellBoundary<1>:: +get_intermediate_points_on_quad (const Triangulation<1>::quad_iterator &, + std::vector > &) const; +template <> +void +HalfHyperShellBoundary<1>:: +get_normals_at_vertices (const Triangulation<1>::face_iterator &, + Boundary<1>::FaceVertexNormals &) const; + + #endif diff --git a/deal.II/deal.II/include/grid/tria_levels.h b/deal.II/deal.II/include/grid/tria_levels.h index 2216f0db0a..8ab682c267 100644 --- a/deal.II/deal.II/include/grid/tria_levels.h +++ b/deal.II/deal.II/include/grid/tria_levels.h @@ -574,4 +574,5 @@ class TriangulationLevel<3> : public TriangulationLevel<2> }; + #endif -- 2.39.5