template <> unsigned int Triangulation<1,2>::n_active_quads () const;
template <> unsigned int Triangulation<1,2>::max_adjacent_cells () const;
+// -------------------------------------------------------------------
+// -- Explicit specializations for codimension two grids
+
+
+template <> unsigned int Triangulation<1,3>::n_raw_lines (const unsigned int level) const;
+template <> unsigned int Triangulation<1,3>::n_quads () const;
+template <> unsigned int Triangulation<1,3>::n_quads (const unsigned int level) const;
+template <> unsigned int Triangulation<1,3>::n_raw_quads (const unsigned int level) const;
+template <> unsigned int Triangulation<2,3>::n_raw_quads (const unsigned int level) const;
+template <> unsigned int Triangulation<1,3>::n_raw_hexs (const unsigned int level) const;
+template <> unsigned int Triangulation<1,3>::n_active_quads (const unsigned int level) const;
+template <> unsigned int Triangulation<1,3>::n_active_quads () const;
+template <> unsigned int Triangulation<1,3>::max_adjacent_cells () const;
+
// -------------------------------------------------------------------
#if deal_II_dimension == 1
template class Triangulation<1,2>;
+
+// this is a hack: we need to instantiate this one function because
+// TriaAccessor<1,1,3> uses it. We could instead instantiate
+// Triangulation<1,3>, but that requires a lot more specializations of
+// functions that currently only exist for <1,1> and <1,2>
+template
+const Boundary<1,3> &
+Triangulation<1,3>::get_boundary (const unsigned int number) const;
+
#else
# if deal_II_dimension == 2
template class Triangulation<2,3>;