};
+
+/* -------------- 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<Point<0> > & Quadrature<0>::get_points () const;
+template <>
+double Quadrature<0>::weight (const unsigned int) const;
+template <>
+const std::vector<double> & Quadrature<0>::get_weights () const;
+template <>
+void QProjector<1>::project_to_face (const Quadrature<0> &,
+ const unsigned int,
+ std::vector<Point<1> > &);
+template <>
+void QProjector<2>::project_to_face (const Quadrature<1> &quadrature,
+ const unsigned int face_no,
+ std::vector<Point<2> > &q_points);
+template <>
+void QProjector<3>::project_to_face (const Quadrature<2> &quadrature,
+ const unsigned int face_no,
+ std::vector<Point<3> > &q_points);
+template <>
+void QProjector<1>::project_to_subface (const Quadrature<0> &,
+ const unsigned int,
+ const unsigned int,
+ std::vector<Point<1> > &);
+template <>
+void QProjector<2>::project_to_subface (const Quadrature<1> &quadrature,
+ const unsigned int face_no,
+ const unsigned int subface_no,
+ std::vector<Point<2> > &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<Point<3> > &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
};
+
+/* -------------- 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
};
+/* -------------- 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"
+
+/* -------------- 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<unsigned char> &) 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 ---------------------------------- */
+/* -------------- 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<unsigned int> &dof_to_boundary_mapping,
+ SparsityPattern &sparsity);
+template <>
+void DoFTools::make_boundary_sparsity_pattern (const DoFHandler<1> &dof_handler,
+ const std::vector<unsigned int> &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<bool> &component_select,
+ std::vector<bool> &selected_dofs,
+ const std::set<unsigned char> &boundary_indicators);
+template <>
+void
+DoFTools::extract_hanging_node_dofs (const DoFHandler<1> &dof_handler,
+ std::vector<bool> &selected_dofs);
+template <>
+void
+DoFTools::extract_hanging_node_dofs (const DoFHandler<2> &dof_handler,
+ std::vector<bool> &selected_dofs);
+template <>
+void
+DoFTools::extract_hanging_node_dofs (const DoFHandler<3> &dof_handler,
+ std::vector<bool> &selected_dofs);
+template <>
+void DoFTools::map_dof_to_boundary_indices (const DoFHandler<1> &dof_handler,
+ const std::set<unsigned char> &boundary_indicators,
+ std::vector<unsigned int> &mapping);
+template <>
+void DoFTools::map_dof_to_boundary_indices (const DoFHandler<1> &dof_handler,
+ std::vector<unsigned int> &mapping);
+
+
+
// ---------------------- inline and template functions --------------------
template <int dim, class Comp>
+/* -------------- 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 --------------------------------*/
};
+
+/* -------------- 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<unsigned int,Point<1> > &);
+
+
#endif
};
+
+/* -------------- declaration of explicit specializations ------------- */
+
+template <>
+void
+GridIn<2>::debug_output_grid (const std::vector<CellData<2> > &cells,
+ const std::vector<Point<2> > &vertices,
+ std::ostream &out);
+template <>
+void
+GridIn<3>::debug_output_grid (const std::vector<CellData<3> > &cells,
+ const std::vector<Point<3> > &vertices,
+ std::ostream &out);
+
+
#endif
};
+
+/* -------------- 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
+/* -------------- 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<Face,FaceData> &global_faces);
+template <> void GridReordering<3>::Cell::insert_faces (std::map<Face,FaceData> &global_faces);
+template <> void GridReordering<1>::reorder_cells (std::vector<CellData<1> > &);
+
+
#endif
/*------------------------------------------------------------------------*/
-//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
};
+
+/* -------------- 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<Point<1> > &v,
+ const std::vector<CellData<1> > &cells,
+ const SubCellData &subcelldata);
+template <> void Triangulation<2>::create_triangulation (const std::vector<Point<2> > &v,
+ const std::vector<CellData<2> > &cells,
+ const SubCellData &subcelldata);
+template <> void Triangulation<3>::create_triangulation (const std::vector<Point<3> > &v,
+ const std::vector<CellData<3> > &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<bool> &) const;
+template <> void Triangulation<1>::load_user_flags_quad (std::istream &);
+template <> void Triangulation<1>::load_user_flags_quad (const std::vector<bool> &);
+template <> void Triangulation<1>::save_user_flags_hex (std::ostream &) const;
+template <> void Triangulation<1>::save_user_flags_hex (std::vector<bool> &) const;
+template <> void Triangulation<1>::load_user_flags_hex (std::istream &);
+template <> void Triangulation<1>::load_user_flags_hex (const std::vector<bool> &);
+template <> void Triangulation<2>::save_user_flags_hex (std::ostream &) const;
+template <> void Triangulation<2>::save_user_flags_hex (std::vector<bool> &) const;
+template <> void Triangulation<2>::load_user_flags_hex (std::istream &);
+template <> void Triangulation<2>::load_user_flags_hex (const std::vector<bool> &);
+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
+/* -------------- 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"
+/* -------------- 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
+/* -------------- 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<Point<1> > &) const;
+template <>
+void
+HyperBallBoundary<3>::get_intermediate_points_on_quad (
+ const Triangulation<3>::quad_iterator &quad,
+ std::vector<Point<3> > &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<Point<1> > &) 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<Point<1> > &) const;
+template <>
+void
+HalfHyperShellBoundary<1>::
+get_normals_at_vertices (const Triangulation<1>::face_iterator &,
+ Boundary<1>::FaceVertexNormals &) const;
+
+
#endif