From a29f1fd54a7ece0d09538adf1c44a728f74773fc Mon Sep 17 00:00:00 2001 From: hartmann Date: Thu, 15 Jun 2006 11:42:45 +0000 Subject: [PATCH] New TriaObjectAccessor<1,dim>::lines() and TriaObjectAccessor<2,dim>::quads() functions allow to remove 30 (cd deal.II/) function specializations. git-svn-id: https://svn.dealii.org/trunk@13260 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/grid/tria_accessor.h | 43 ++- .../include/grid/tria_accessor.templates.h | 210 +++---------- deal.II/deal.II/source/grid/tria_accessor.cc | 283 ++---------------- 3 files changed, 109 insertions(+), 427 deletions(-) diff --git a/deal.II/deal.II/include/grid/tria_accessor.h b/deal.II/deal.II/include/grid/tria_accessor.h index 9d4ac9c9ad..8126d60535 100644 --- a/deal.II/deal.II/include/grid/tria_accessor.h +++ b/deal.II/deal.II/include/grid/tria_accessor.h @@ -32,6 +32,7 @@ namespace internal class Line; class Quad; class Hexahedron; + template class TriaObjects; } } template class TriaObjectAccessor; @@ -1310,7 +1311,6 @@ class TriaObjectAccessor<1, dim> : public TriaAccessor */ void operator = (const TriaObjectAccessor<1, dim> &); - protected: /**@name Advancement of iterators*/ @@ -1343,6 +1343,21 @@ class TriaObjectAccessor<1, dim> : public TriaAccessor * previous level is accessed. */ void operator -- (); + + /** + * Access to the lines of a + * Triangulation. This function + * is specialized for dim==1 + * because lines are stored in + * TriaLevel<1> for dim==1 but in + * TriaFace for dim!=1. All + * accessor functions using this + * function can be implemented + * for all dim without + * specialization. + */ + internal::Triangulation::TriaObjects & lines() const; + /*@}*/ /** @@ -1864,6 +1879,20 @@ class TriaObjectAccessor<2, dim> : public TriaAccessor * previous level is accessed. */ void operator -- (); + + /** + * Access to the quads of a + * Triangulation. This function + * is specialized for dim==2 and + * dim==3 because quads are + * stored in TriaLevel<2> for + * dim==2 but in TriaFace<3> for + * dim==3. All accessor functions + * using this function can be + * implemented for all dimensions + * without specialization. + */ + internal::Triangulation::TriaObjects & quads() const; /*@}*/ /** @@ -2817,16 +2846,8 @@ class CellAccessor : public TriaObjectAccessor 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 <> void TriaObjectAccessor<1, 1>::set (const internal::Triangulation::Line &line) const; -template <> int TriaObjectAccessor<1, 1>::vertex_index (const unsigned int i) const; -template <> void TriaObjectAccessor<1, 1>::set_used_flag () const; -template <> void TriaObjectAccessor<1, 1>::clear_used_flag () const; -template <> void TriaObjectAccessor<1, 1>::set_user_pointer (void *p) const; -template <> void TriaObjectAccessor<1, 1>::clear_user_pointer () const; -template <> void * TriaObjectAccessor<1, 1>::user_pointer () const; -template <> void TriaObjectAccessor<1, 1>::set_children (const int index) const; -template <> unsigned char TriaObjectAccessor<1, 1>::boundary_indicator () const; -template <> void TriaObjectAccessor<1, 1>::set_boundary_indicator (const unsigned char) const; +template <> internal::Triangulation::TriaObjects &TriaObjectAccessor<1, 1>::lines() const; +template <> internal::Triangulation::TriaObjects &TriaObjectAccessor<2, 2>::quads() 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; diff --git a/deal.II/deal.II/include/grid/tria_accessor.templates.h b/deal.II/deal.II/include/grid/tria_accessor.templates.h index 34a0137ccb..6d11f0602c 100644 --- a/deal.II/deal.II/include/grid/tria_accessor.templates.h +++ b/deal.II/deal.II/include/grid/tria_accessor.templates.h @@ -138,28 +138,24 @@ TriaObjectAccessor (const Triangulation *parent, {} - -template +// first implement the lines functions as they are used by many +// subsequent accessor functions +template <> inline -bool -TriaObjectAccessor<1,dim>::used () const +internal::Triangulation::TriaObjects & +TriaObjectAccessor<1,1>::lines() const { - Assert (this->state() == IteratorState::valid, - typename TriaAccessor::ExcDereferenceInvalidObject()); - return this->tria->faces->lines.used[this->present_index]; + return this->tria->levels[this->present_level]->lines; } -template <> +template inline -bool -TriaObjectAccessor<1,1>::used () const +internal::Triangulation::TriaObjects & +TriaObjectAccessor<1,dim>::lines() const { - const int dim=1; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - return this->tria->levels[this->present_level]->lines.used[this->present_index]; + return this->tria->faces->lines; } @@ -167,22 +163,22 @@ TriaObjectAccessor<1,1>::used () const template inline bool -TriaObjectAccessor<1,dim>::user_flag_set () const +TriaObjectAccessor<1,dim>::used () const { - Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); - return this->tria->faces->lines.user_flags[this->present_index]; + Assert (this->state() == IteratorState::valid, + typename TriaAccessor::ExcDereferenceInvalidObject()); + return lines().used[this->present_index]; } -template <> +template inline bool -TriaObjectAccessor<1,1>::user_flag_set () const +TriaObjectAccessor<1,dim>::user_flag_set () const { - const int dim=1; - Assert (this->used(), TriaAccessor::ExcCellNotUsed()); - return this->tria->levels[this->present_level]->lines.user_flags[this->present_index]; + Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); + return lines().user_flags[this->present_index]; } @@ -193,19 +189,7 @@ void TriaObjectAccessor<1,dim>::set_user_flag () const { Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->lines.user_flags[this->present_index] = true; -} - - - -template <> -inline -void -TriaObjectAccessor<1,1>::set_user_flag () const -{ - const int dim=1; - Assert (this->used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->lines.user_flags[this->present_index] = true; + lines().user_flags[this->present_index] = true; } @@ -216,19 +200,7 @@ void TriaObjectAccessor<1,dim>::clear_user_flag () const { Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->lines.user_flags[this->present_index] = false; -} - - - -template <> -inline -void -TriaObjectAccessor<1,1>::clear_user_flag () const -{ - const int dim=1; - Assert (this->used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->lines.user_flags[this->present_index] = false; + lines().user_flags[this->present_index] = false; } @@ -240,20 +212,7 @@ TriaObjectAccessor<1,dim>::has_children () const { Assert (this->state() == IteratorState::valid, typename TriaAccessor::ExcDereferenceInvalidObject()); - return (this->tria->faces->lines.children[this->present_index] != -1); -} - - - -template <> -inline -bool -TriaObjectAccessor<1,1>::has_children () const -{ - const int dim=1; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - return (this->tria->levels[this->present_level]->lines.children[this->present_index] != -1); + return (lines().children[this->present_index] != -1); } @@ -265,20 +224,7 @@ TriaObjectAccessor<1,dim>::child_index (unsigned const int i) const { Assert (i<2, ExcIndexRange(i,0,2)); Assert (has_children(), typename TriaAccessor::ExcCellHasNoChildren()); - return this->tria->faces->lines.children[this->present_index]+i; -} - - - -template <> -inline -int -TriaObjectAccessor<1,1>::child_index (unsigned const int i) const -{ - const int dim=1; - Assert (i<2, ExcIndexRange(i,0,2)); - Assert (has_children(), TriaAccessor::ExcCellHasNoChildren()); - return this->tria->levels[this->present_level]->lines.children[this->present_index]+i; + return lines().children[this->present_index]+i; } @@ -441,27 +387,24 @@ TriaObjectAccessor (const Triangulation *parent, -template +// first implement the quads functions as they are used by many +// subsequent accessor functions +template <> inline -bool -TriaObjectAccessor<2,dim>::used () const +internal::Triangulation::TriaObjects & +TriaObjectAccessor<2,2>::quads() const { - Assert (this->state() == IteratorState::valid, - typename TriaAccessor::ExcDereferenceInvalidObject()); - return this->tria->faces->quads.used[this->present_index]; + return this->tria->levels[this->present_level]->quads; } -template <> +template inline -bool -TriaObjectAccessor<2,2>::used () const +internal::Triangulation::TriaObjects & +TriaObjectAccessor<2,dim>::quads() const { - const int dim=2; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - return this->tria->levels[this->present_level]->quads.used[this->present_index]; + return this->tria->faces->quads; } @@ -469,22 +412,22 @@ TriaObjectAccessor<2,2>::used () const template inline bool -TriaObjectAccessor<2,dim>::user_flag_set () const +TriaObjectAccessor<2,dim>::used () const { - Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); - return this->tria->faces->quads.user_flags[this->present_index]; + Assert (this->state() == IteratorState::valid, + typename TriaAccessor::ExcDereferenceInvalidObject()); + return quads().used[this->present_index]; } -template <> +template inline bool -TriaObjectAccessor<2,2>::user_flag_set () const +TriaObjectAccessor<2,dim>::user_flag_set () const { - const int dim=2; - Assert (this->used(), TriaAccessor::ExcCellNotUsed()); - return this->tria->levels[this->present_level]->quads.user_flags[this->present_index]; + Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); + return quads().user_flags[this->present_index]; } @@ -495,19 +438,7 @@ void TriaObjectAccessor<2,dim>::set_user_flag () const { Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->quads.user_flags[this->present_index] = true; -} - - - -template <> -inline -void -TriaObjectAccessor<2,2>::set_user_flag () const -{ - const int dim=2; - Assert (this->used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->quads.user_flags[this->present_index] = true; + quads().user_flags[this->present_index] = true; } @@ -518,19 +449,7 @@ void TriaObjectAccessor<2,dim>::clear_user_flag () const { Assert (this->used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->quads.user_flags[this->present_index] = false; -} - - - -template <> -inline -void -TriaObjectAccessor<2,2>::clear_user_flag () const -{ - const int dim=2; - Assert (this->used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->quads.user_flags[this->present_index] = false; + quads().user_flags[this->present_index] = false; } @@ -557,17 +476,9 @@ unsigned int TriaObjectAccessor<2,dim>::line_index (const unsigned int i) const { Assert (i<4, ExcIndexRange(i,0,4)); - return this->tria->faces->quads.cells[this->present_index].line(i); + return quads().cells[this->present_index].line(i); } -template <> -inline -unsigned int -TriaObjectAccessor<2,2>::line_index (const unsigned int i) const -{ -Assert (i<4, ExcIndexRange(i,0,4)); - return this->tria->levels[this->present_level]->quads.cells[this->present_index].line(i); -} template @@ -577,20 +488,7 @@ TriaObjectAccessor<2,dim>::has_children () const { Assert (this->state() == IteratorState::valid, typename TriaAccessor::ExcDereferenceInvalidObject()); - return (this->tria->faces->quads.children[this->present_index] != -1); -} - - - -template <> -inline -bool -TriaObjectAccessor<2,2>::has_children () const -{ - const int dim=2; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - return (this->tria->levels[this->present_level]->quads.children[this->present_index] != -1); + return (quads().children[this->present_index] != -1); } @@ -601,19 +499,7 @@ int TriaObjectAccessor<2,dim>::child_index (const unsigned int i) const { Assert (i<4, ExcIndexRange(i,0,4)); Assert (has_children(), typename TriaAccessor::ExcCellHasNoChildren()); - return this->tria->faces->quads.children[this->present_index]+i; -} - - - -template <> -inline -int TriaObjectAccessor<2,2>::child_index (const unsigned int i) const -{ - const int dim=2; - Assert (i<4, ExcIndexRange(i,0,4)); - Assert (has_children(), TriaAccessor::ExcCellHasNoChildren()); - return this->tria->levels[this->present_level]->quads.children[this->present_index]+i; + return quads().children[this->present_index]+i; } @@ -690,7 +576,7 @@ TriaObjectAccessor<2,dim>::operator ++ () // the vector? if (this->present_index >= - static_cast(this->tria->faces->quads.cells.size())) + static_cast(quads().cells.size())) this->present_level = this->present_index = -1; } @@ -706,7 +592,7 @@ TriaObjectAccessor<2,2>::operator ++ () // the vector? while (this->present_index >= - static_cast(this->tria->levels[this->present_level]->quads.cells.size())) + static_cast(quads().cells.size())) { // no -> go one level up ++this->present_level; @@ -756,7 +642,7 @@ TriaObjectAccessor<2,2>::operator -- () return; } // else - this->present_index = this->tria->levels[this->present_level]->quads.cells.size()-1; + this->present_index = quads().cells.size()-1; } } diff --git a/deal.II/deal.II/source/grid/tria_accessor.cc b/deal.II/deal.II/source/grid/tria_accessor.cc index f6c21edf52..e63c3cfcc8 100644 --- a/deal.II/deal.II/source/grid/tria_accessor.cc +++ b/deal.II/deal.II/source/grid/tria_accessor.cc @@ -32,37 +32,19 @@ template void TriaObjectAccessor<1, dim>::set (const internal::Triangulation::Line &line) const { - this->tria->faces->lines.cells[this->present_index] = line; + lines().cells[this->present_index] = line; } -#if deal_II_dimension == 1 - -template <> -void -TriaObjectAccessor<1, 1>::set (const internal::Triangulation::Line &line) const -{ - this->tria->levels[this->present_level] - ->lines.cells[this->present_index] = line; -} - -template <> -int TriaObjectAccessor<1, 1>::vertex_index (const unsigned int i) const -{ - Assert (i<2, ExcIndexRange(i,0,2)); - return this->tria->levels[this->present_level]->lines.cells[this->present_index].vertex (i); -} - -#else template int TriaObjectAccessor<1, dim>::vertex_index (const unsigned int i) const { Assert (i<2, ExcIndexRange(i,0,2)); - return this->tria->faces->lines.cells[this->present_index].vertex (i); + return lines().cells[this->present_index].vertex (i); } -#endif + template Point & @@ -78,43 +60,20 @@ void TriaObjectAccessor<1, dim>::set_used_flag () const { Assert (this->state() == IteratorState::valid, typename TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->faces->lines.used[this->present_index] = true; + lines().used[this->present_index] = true; } -#if deal_II_dimension == 1 - -template <> -void TriaObjectAccessor<1, 1>::set_used_flag () const -{ const int dim =1; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->levels[this->present_level]->lines.used[this->present_index] = true; -} - -#endif template void TriaObjectAccessor<1, dim>::clear_used_flag () const { Assert (this->state() == IteratorState::valid, typename TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->faces->lines.used[this->present_index] = false; + lines().used[this->present_index] = false; } -#if deal_II_dimension == 1 - -template <> -void TriaObjectAccessor<1, 1>::clear_used_flag () const -{ - const int dim=1; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->levels[this->present_level]->lines.used[this->present_index] = false; -} - -#endif template void TriaObjectAccessor<1, dim>::recursively_set_user_flag () const @@ -144,63 +103,28 @@ template void TriaObjectAccessor<1, dim>::set_user_pointer (void *p) const { Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->lines.user_pointers[this->present_index] = p; + lines().user_pointers[this->present_index] = p; } -#if deal_II_dimension == 1 - -template <> -void TriaObjectAccessor<1, 1>::set_user_pointer (void *p) const -{ - const int dim=1; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->lines.user_pointers[this->present_index] = p; -} - -#endif template void TriaObjectAccessor<1, dim>::clear_user_pointer () const { Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->lines.user_pointers[this->present_index] = 0; -} - - -#if deal_II_dimension == 1 - -template <> -void TriaObjectAccessor<1, 1>::clear_user_pointer () const -{ - const int dim=1; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->lines.user_pointers[this->present_index] = 0; + lines().user_pointers[this->present_index] = 0; } -#endif template void * TriaObjectAccessor<1, dim>::user_pointer () const { Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - return this->tria->faces->lines.user_pointers[this->present_index]; + return lines().user_pointers[this->present_index]; } -#if deal_II_dimension == 1 - -template <> -void * TriaObjectAccessor<1, 1>::user_pointer () const -{ - const int dim=1; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - return this->tria->levels[this->present_level]->lines.user_pointers[this->present_index]; -} - -#endif - template void @@ -236,25 +160,10 @@ void TriaObjectAccessor<1, dim>::set_children (const int index) const (!has_children() && (index>=0)), typename TriaAccessor::ExcCantSetChildren(index)); - this->tria->faces->lines.children[this->present_index] = index; + lines().children[this->present_index] = index; } -#if deal_II_dimension == 1 - -template <> -void TriaObjectAccessor<1, 1>::set_children (const int index) const -{ - const int dim=1; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - Assert ((index==-1) || - (!has_children() && (index>=0)), - TriaAccessor::ExcCantSetChildren(index)); - - this->tria->levels[this->present_level]->lines.children[this->present_index] = index; -} - -#endif template void TriaObjectAccessor<1, dim>::clear_children () const @@ -270,20 +179,9 @@ unsigned char TriaObjectAccessor<1, dim>::boundary_indicator () const Assert (dim>=2, ExcImpossibleInDim(dim)); Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - return this->tria->faces->lines.material_id[this->present_index]; -} - - -#if deal_II_dimension == 1 - -template <> -unsigned char TriaObjectAccessor<1, 1>::boundary_indicator () const -{ - Assert (false, ExcImpossibleInDim(1)); - return 0; + return lines().material_id[this->present_index]; } -#endif template @@ -292,20 +190,10 @@ void TriaObjectAccessor<1, dim>::set_boundary_indicator (const unsigned char bou Assert (dim>=2, ExcImpossibleInDim(dim)); Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->lines.material_id[this->present_index] = boundary_ind; + lines().material_id[this->present_index] = boundary_ind; } -#if deal_II_dimension == 1 - -template <> -void TriaObjectAccessor<1, 1>::set_boundary_indicator (const unsigned char) const -{ - Assert (false, ExcImpossibleInDim(1)); -} - -#endif - template bool TriaObjectAccessor<1, dim>::at_boundary () const @@ -371,21 +259,9 @@ template void TriaObjectAccessor<2, dim>::set (const internal::Triangulation::Quad &quad) const { - this->tria->faces->quads.cells[this->present_index] = quad; -} - - -#if deal_II_dimension == 2 - -template <> -void -TriaObjectAccessor<2, 2>::set (const internal::Triangulation::Quad &quad) const -{ - this->tria->levels[this->present_level] - ->quads.cells[this->present_index] = quad; + quads().cells[this->present_index] = quad; } -#endif template @@ -413,46 +289,20 @@ TriaObjectAccessor<2, dim>::set_used_flag () const { Assert (this->state() == IteratorState::valid, typename TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->faces->quads.used[this->present_index] = true; + quads().used[this->present_index] = true; } -#if deal_II_dimension == 2 - -template <> -void -TriaObjectAccessor<2, 2>::set_used_flag () const -{ - const int dim=2; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->levels[this->present_level]->quads.used[this->present_index] = true; -} - -#endif - template void TriaObjectAccessor<2, dim>::clear_used_flag () const { Assert (this->state() == IteratorState::valid, typename TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->faces->quads.used[this->present_index] = false; + quads().used[this->present_index] = false; } -#if deal_II_dimension == 2 - -template <> -void TriaObjectAccessor<2, 2>::clear_used_flag () const -{ - const int dim=2; - Assert (this->state() == IteratorState::valid, - TriaAccessor::ExcDereferenceInvalidObject()); - this->tria->levels[this->present_level]->quads.used[this->present_index] = false; -} - -#endif template void TriaObjectAccessor<2, dim>::recursively_set_user_flag () const @@ -482,63 +332,27 @@ template void TriaObjectAccessor<2, dim>::set_user_pointer (void *p) const { Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->quads.user_pointers[this->present_index] = p; -} - - -#if deal_II_dimension == 2 - -template <> -void TriaObjectAccessor<2, 2>::set_user_pointer (void *p) const -{ - const int dim=2; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->quads.user_pointers[this->present_index] = p; + quads().user_pointers[this->present_index] = p; } -#endif template void TriaObjectAccessor<2, dim>::clear_user_pointer () const { Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->quads.user_pointers[this->present_index] = 0; -} - - -#if deal_II_dimension == 2 - -template <> -void TriaObjectAccessor<2, 2>::clear_user_pointer () const -{ - const int dim=2; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - this->tria->levels[this->present_level]->quads.user_pointers[this->present_index] = 0; + quads().user_pointers[this->present_index] = 0; } -#endif template void * TriaObjectAccessor<2, dim>::user_pointer () const { Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - return this->tria->faces->quads.user_pointers[this->present_index]; -} - - -#if deal_II_dimension == 2 - -template <> -void * TriaObjectAccessor<2, 2>::user_pointer () const -{ - const int dim=2; - Assert (used(), TriaAccessor::ExcCellNotUsed()); - return this->tria->levels[this->present_level]->quads.user_pointers[this->present_index]; + return quads().user_pointers[this->present_index]; } -#endif template @@ -576,27 +390,10 @@ void TriaObjectAccessor<2, dim>::set_children (const int index) const (!has_children() && (index>=0)), typename TriaAccessor::ExcCantSetChildren(index)); - this->tria->faces->quads.children[this->present_index] = index; + quads().children[this->present_index] = index; } -#if deal_II_dimension == 2 - -template <> -void TriaObjectAccessor<2, 2>::set_children (const int index) const -{ - const int dim=2; - Assert (used(), - TriaAccessor::ExcCellNotUsed()); - Assert ((index==-1) || - (!has_children() && (index>=0)), - TriaAccessor::ExcCantSetChildren(index)); - - this->tria->levels[this->present_level]->quads.children[this->present_index] = index; -} - -#endif - template void TriaObjectAccessor<2, dim>::clear_children () const @@ -609,42 +406,23 @@ void TriaObjectAccessor<2, dim>::clear_children () const template unsigned char TriaObjectAccessor<2, dim>::boundary_indicator () const { - Assert (false, ExcImpossibleInDim(dim)); - return 255; -} - - -#if deal_II_dimension == 3 - -template <> -unsigned char TriaObjectAccessor<2, 3>::boundary_indicator () const -{ - Assert (used(), TriaAccessor<3>::ExcCellNotUsed()); + Assert (dim>2, ExcImpossibleInDim(dim)); + Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - return this->tria->faces->quads.material_id[this->present_index]; + return quads().material_id[this->present_index]; } -#endif template -void TriaObjectAccessor<2, dim>::set_boundary_indicator (const unsigned char) const +void TriaObjectAccessor<2, dim>::set_boundary_indicator (const unsigned char boundary_ind) const { - Assert (false, ExcImpossibleInDim(dim)); -} - - -#if deal_II_dimension == 3 - -template <> -void TriaObjectAccessor<2, 3>::set_boundary_indicator (const unsigned char boundary_ind) const -{ - Assert (used(), TriaAccessor<3>::ExcCellNotUsed()); + Assert (dim>2, ExcImpossibleInDim(dim)); + Assert (used(), typename TriaAccessor::ExcCellNotUsed()); - this->tria->faces->quads.material_id[this->present_index] = boundary_ind; + quads().material_id[this->present_index] = boundary_ind; } -#endif template @@ -1893,8 +1671,7 @@ template <> unsigned char CellAccessor<1>::material_id () const { Assert (this->used(), TriaAccessor<1>::ExcCellNotUsed()); - return this->tria->levels[this->present_level] - ->lines.material_id[this->present_index]; + return lines().material_id[this->present_index]; } @@ -1903,8 +1680,7 @@ template <> void CellAccessor<1>::set_material_id (const unsigned char mat_id) const { Assert (this->used(), TriaAccessor<1>::ExcCellNotUsed()); - this->tria->levels[this->present_level]->lines.material_id[this->present_index] - = mat_id; + lines().material_id[this->present_index] = mat_id; } @@ -1959,7 +1735,7 @@ template <> unsigned char CellAccessor<2>::material_id () const { Assert (this->used(), TriaAccessor<2>::ExcCellNotUsed()); - return this->tria->levels[this->present_level]->quads.material_id[this->present_index]; + return quads().material_id[this->present_index]; } @@ -1968,8 +1744,7 @@ template <> void CellAccessor<2>::set_material_id (const unsigned char mat_id) const { Assert (this->used(), TriaAccessor<2>::ExcCellNotUsed()); - this->tria->levels[this->present_level]->quads.material_id[this->present_index] - = mat_id; + quads().material_id[this->present_index] = mat_id; } -- 2.39.5