From: wolf Date: Tue, 10 Aug 1999 09:56:22 +0000 (+0000) Subject: Further massive clean-ups of the Accessor hierarchy. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aec19c6ac068751a0aadc5475976bdc1f6489391;p=dealii-svn.git Further massive clean-ups of the Accessor hierarchy. git-svn-id: https://svn.dealii.org/trunk@1654 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/dofs/dof_accessor.h b/deal.II/deal.II/include/dofs/dof_accessor.h index 1f33dd101a..fedba1ae26 100644 --- a/deal.II/deal.II/include/dofs/dof_accessor.h +++ b/deal.II/deal.II/include/dofs/dof_accessor.h @@ -109,6 +109,66 @@ class DoFAccessor { + +/* -------------------------------------------------------------------------- */ + +/** + * This is a switch class which only declares a #typdef#. It is meant to + * determine which class a #DoFObjectAccessor# class is to be derived + * from. By default, #DoFObjectAccessor# derives from + * the #typedef# in the general #DoFObjectAccessor_Inheritance# + * class, which is #TriaObjectAccessor#, + * but if #celldim==dim#, then the specialization #TriaObjectAccessor# + * is used which declares its local type to be #CellAccessor#. Therefore, + * the inheritance is automatically chosen to be from #CellAccessor# if the + * object under consideration has full dimension, i.e. constitutes a cell. + * + * @author Wolfgang Bangerth, 1999 + */ +template +class DoFObjectAccessor_Inheritance +{ + /** + * Declaaration of the #typedef#. + * See the full documentation for + * more information. + */ + typedef TriaObjectAccessor BaseClass; +}; + + + +/** + * This is a switch class which only declares a #typdef#. It is meant to + * determine which class a #DoFObjectAccessor# class is to be derived + * from. By default, #DoFObjectAccessor# derives from + * the #typedef# in the general #DoFObjectAccessor_Inheritance# + * class, which is #TriaObjectAccessor#, + * but if #celldim==dim#, then the specialization #TriaObjectAccessor# + * is used which declares its local type to be #CellAccessor#. Therefore, + * the inheritance is automatically chosen to be from #CellAccessor# if the + * object under consideration has full dimension, i.e. constitutes a cell. + * + * @author Wolfgang Bangerth, 1999 + */ +template +class DoFObjectAccessor_Inheritance +{ + /** + * Declaaration of the #typedef#. + * See the full documentation for + * more information. + */ + typedef CellAccessor BaseClass; +}; + + + + +/* -------------------------------------------------------------------------- */ + + + /** * Common template for line, quad, hex. * @@ -116,26 +176,34 @@ class DoFAccessor { * a compiler error. * @author Guido Kanschat, 1999 */ -template +template class DoFObjectAccessor : public DoFAccessor, - public BaseClass + public DoFObjectAccessor_Inheritance::BaseClass {}; + /** * Closure class. */ -template -class DoFObjectAccessor<0, dim, BaseClass> : public DoFAccessor, - public BaseClass +template +class DoFObjectAccessor<0, dim> : public DoFAccessor, + public DoFObjectAccessor_Inheritance<0,dim>::BaseClass { public: typedef void AccessorData; + + /** + * Constructor. Should never be called + * ans thus throws an error. + */ DoFObjectAccessor (Triangulation *, const int, const int, const AccessorData *) - {} + { + Assert (false, ExcInternalError()); + } }; @@ -160,37 +228,17 @@ class DoFObjectAccessor<0, dim, BaseClass> : public DoFAccessor, * * \subsection{Notes about the class hierarchy structure} * - * The class hierarchy seems to be a bit confused here. The reason for this is - * that we would really like to derive a #DoFLineAccessor# from a #LineAccessor#. - * Unfortunately, we would run into problems, if we wanted a #DoFLineAccessor# - * in one spatial dimension, in which case a line is also a cell. The traditional - * solution would be to declare a #DoFCellAccessor<1># which is derived from - * #DoFObjectAccessor<1, 1># and #CellAccessor<1># (the #DoFObjectAccessor<1, dim># cannot - * itself be derived from #CellAccessor# since a line is not a cell - * unless in one space dimension), but since a #DoFLineAccessor# and a - * #CellAccessor# are both derived from #TriaAccessor#, we would have to make - * the last derivation virtual. - * - * Since we want to avoid virtual inheritance since this involves another - * indirection in every member variable access, we chose another way: we - * pass a second template parameter to a #DoFLineAccessor# which tells it - * which class to be derived from: if we are in one spatial dimension, the - * base class is to be #CellAccessor<1>#, in two or more dimensions it - * is a #TriaObjectAccessor<1, dim>#, i.e. am accessor to lines without the missing - * functionality needed for cells (neighbors, etc.). - * - * This way we can declare a #DoFCellAccessor# in one dimension by deriving - * from #DoFObjectAccessor<1, 1,CellAccessor<1> >#, thus getting the cell - * functionality through the #DoFLineAccessor# instead of through a virtual - * multiple inheritance of #DoFLineAccessor# and #CellAccessor<1>#. - * - * The same concept is used with #DoFQuadAccessor# classes etc. + * Inheritance from #DoFObjectAccessor_Inheritance<1,dim>::BaseClass# yields + * inheritance from #CellAccessor<1># if #dim==1# and from + * #TriaObjectAccessor<1,dim># for all other #dim# values. Thus, an object + * of this class shares all features of cells in one dimension, but behaves + * like an ordinary line in all other cases. * * @author Wolfgang Bangerth, 1998 */ -template -class DoFObjectAccessor<1, dim, BaseClass> : public DoFAccessor, - public BaseClass +template +class DoFObjectAccessor<1, dim> : public DoFAccessor, + public DoFObjectAccessor_Inheritance<1,dim>::BaseClass { public: /** @@ -216,7 +264,7 @@ class DoFObjectAccessor<1, dim, BaseClass> : public DoFAccessor, const int index, const AccessorData *local_data) : DoFAccessor (local_data), - BaseClass(tria,level,index) {}; + DoFObjectAccessor_Inheritance<1,dim>::BaseClass (tria,level,index) {}; /** * Return the index of the #i#th degree @@ -263,7 +311,7 @@ class DoFObjectAccessor<1, dim, BaseClass> : public DoFAccessor, * class returns a line accessor without * access to the DoF data. */ - TriaIterator > child (const unsigned int) const; + TriaIterator > child (const unsigned int) const; /** * Distribute a local (cell based) vector @@ -295,7 +343,7 @@ class DoFObjectAccessor<1, dim, BaseClass> : public DoFAccessor, * Implement the copy operator needed * for the iterator classes. */ - void copy_from (const DoFObjectAccessor<1, dim,BaseClass> &a); + void copy_from (const DoFObjectAccessor<1,dim> &a); }; @@ -305,9 +353,9 @@ class DoFObjectAccessor<1, dim, BaseClass> : public DoFAccessor, * * @see DoFLineAccessor */ -template -class DoFObjectAccessor<2, dim, BaseClass> : public DoFAccessor, - public BaseClass +template +class DoFObjectAccessor<2, dim> : public DoFAccessor, + public DoFObjectAccessor_Inheritance<2,dim>::BaseClass { public: /** @@ -333,7 +381,7 @@ class DoFObjectAccessor<2, dim, BaseClass> : public DoFAccessor, const int index, const AccessorData *local_data) : DoFAccessor (local_data), - BaseClass (tria,level,index) {}; + DoFObjectAccessor_Inheritance<2,dim>::BaseClass (tria,level,index) {}; /** * Return the index of the #i#th degree @@ -378,7 +426,7 @@ class DoFObjectAccessor<2, dim, BaseClass> : public DoFAccessor, * Return a pointer to the #i#th line * bounding this #Quad#. */ - TriaIterator > > + TriaIterator > line (const unsigned int i) const; /** @@ -388,7 +436,8 @@ class DoFObjectAccessor<2, dim, BaseClass> : public DoFAccessor, * class returns a quad accessor without * access to the DoF data. */ - TriaIterator > child (const unsigned int) const; + TriaIterator > + child (const unsigned int) const; /** * Distribute a local (cell based) vector @@ -420,7 +469,7 @@ class DoFObjectAccessor<2, dim, BaseClass> : public DoFAccessor, * Implement the copy operator needed * for the iterator classes. */ - void copy_from (const DoFObjectAccessor<2, dim,BaseClass> &a); + void copy_from (const DoFObjectAccessor<2, dim> &a); }; @@ -428,13 +477,13 @@ class DoFObjectAccessor<2, dim, BaseClass> : public DoFAccessor, /** - * Grant access to the degrees of freedom located on quads. + * Grant access to the degrees of freedom located on hexes. * * @see DoFLineAccessor */ -template -class DoFObjectAccessor<3, dim, BaseClass> : public DoFAccessor, - public BaseClass +template +class DoFObjectAccessor<3, dim> : public DoFAccessor, + public DoFObjectAccessor_Inheritance<3,dim>::BaseClass { public: /** @@ -460,7 +509,7 @@ class DoFObjectAccessor<3, dim, BaseClass> : public DoFAccessor, const int index, const AccessorData *local_data) : DoFAccessor (local_data), - BaseClass (tria,level,index) {}; + DoFObjectAccessor_Inheritance<3,dim>::BaseClass (tria,level,index) {}; /** * Return the index of the #i#th degree @@ -505,14 +554,14 @@ class DoFObjectAccessor<3, dim, BaseClass> : public DoFAccessor, * Return a pointer to the #i#th line * bounding this #Hex#. */ - TriaIterator > > + TriaIterator > line (const unsigned int i) const; /** * Return a pointer to the #i#th quad * bounding this #Hex#. */ - TriaIterator > > + TriaIterator > quad (const unsigned int i) const; /** @@ -522,7 +571,7 @@ class DoFObjectAccessor<3, dim, BaseClass> : public DoFAccessor, * class returns a hex accessor without * access to the DoF data. */ - TriaIterator > child (const unsigned int) const; + TriaIterator > child (const unsigned int) const; /** * Distribute a local (cell based) vector @@ -554,7 +603,7 @@ class DoFObjectAccessor<3, dim, BaseClass> : public DoFAccessor, * Implement the copy operator needed * for the iterator classes. */ - void copy_from (const DoFObjectAccessor<3, dim,BaseClass> &a); + void copy_from (const DoFObjectAccessor<3, dim> &a); }; @@ -570,24 +619,22 @@ class DoFObjectAccessor<3, dim, BaseClass> : public DoFAccessor, * rather than #CellAccessor# objects (the latter function was inherited * from the #CellAccessor# class). * + * Note that since for the class we derive from, i.e. #DoFObjectAccessor#, + * the two template parameters are equal, the base class is actually derived from + * #CellAccessor#, which makes the functions of this class available to the + * #DoFCellAccessor# class as well. + * * @author Wolfgang Bangerth, 1998 */ template -class DoFCellAccessor : public DoFObjectAccessor > { +class DoFCellAccessor : public DoFObjectAccessor { public: - /** - * Type of faces. - */ - typedef - TriaIterator > > - face_iterator; - /** * Declare the data type that this accessor * class expects to get passed from the * iterator classes. */ - typedef typename DoFObjectAccessor >::AccessorData AccessorData; + typedef typename DoFObjectAccessor::AccessorData AccessorData; /** * Constructor @@ -596,7 +643,7 @@ class DoFCellAccessor : public DoFObjectAccessor > const int level, const int index, const AccessorData *local_data) : - DoFObjectAccessor > (tria,level,index,local_data) {}; + DoFObjectAccessor (tria,level,index,local_data) {}; /** * Return the #i#th neighbor as a DoF cell @@ -605,7 +652,8 @@ class DoFCellAccessor : public DoFObjectAccessor > * class returns a cell accessor without * access to the DoF data. */ - TriaIterator > neighbor (const unsigned int) const; + TriaIterator > + neighbor (const unsigned int) const; /** * Return the #i#th child as a DoF cell @@ -614,7 +662,8 @@ class DoFCellAccessor : public DoFObjectAccessor > * class returns a cell accessor without * access to the DoF data. */ - TriaIterator > child (const unsigned int) const; + TriaIterator > + child (const unsigned int) const; /** * Return an iterator to the #i#th face @@ -623,7 +672,7 @@ class DoFCellAccessor : public DoFObjectAccessor > * This function is not implemented in 1D, * and maps to DoFObjectAccessor<2, dim>::line in 2D. */ - face_iterator + TriaIterator > face (const unsigned int i) const; /** diff --git a/deal.II/deal.II/include/dofs/dof_accessor.templates.h b/deal.II/deal.II/include/dofs/dof_accessor.templates.h index 0a0f44d483..c094f6ab57 100644 --- a/deal.II/deal.II/include/dofs/dof_accessor.templates.h +++ b/deal.II/deal.II/include/dofs/dof_accessor.templates.h @@ -21,9 +21,9 @@ /*------------------------- Functions: DoFLineAccessor -----------------------*/ -template +template inline -int DoFObjectAccessor<1, dim,BaseClass>::dof_index (const unsigned int i) const { +int DoFObjectAccessor<1, dim>::dof_index (const unsigned int i) const { Assert (dof_handler != 0, ExcInvalidObject()); // make sure a FE has been selected // and enough room was reserved @@ -38,9 +38,9 @@ int DoFObjectAccessor<1, dim,BaseClass>::dof_index (const unsigned int i) const -template +template inline -int DoFObjectAccessor<1, dim,BaseClass>::vertex_dof_index (const unsigned int vertex, +int DoFObjectAccessor<1, dim>::vertex_dof_index (const unsigned int vertex, const unsigned int i) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); @@ -56,10 +56,10 @@ int DoFObjectAccessor<1, dim,BaseClass>::vertex_dof_index (const unsigned int ve -template +template inline void -DoFObjectAccessor<1, dim,BaseClass>::get_dof_indices (vector &dof_indices) const { +DoFObjectAccessor<1, dim>::get_dof_indices (vector &dof_indices) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); Assert (dof_indices.size() == (2*dof_handler->get_fe().dofs_per_vertex + @@ -78,11 +78,11 @@ DoFObjectAccessor<1, dim,BaseClass>::get_dof_indices (vector &dof_indices) -template +template inline -TriaIterator > -DoFObjectAccessor<1, dim,BaseClass>::child (const unsigned int i) const { - TriaIterator > q (tria, +TriaIterator > +DoFObjectAccessor<1, dim>::child (const unsigned int i) const { + TriaIterator > q (tria, present_level+1, child_index (i), dof_handler); @@ -96,11 +96,11 @@ DoFObjectAccessor<1, dim,BaseClass>::child (const unsigned int i) const { -template +template inline void -DoFObjectAccessor<1, dim,BaseClass>::copy_from (const DoFObjectAccessor<1, dim,BaseClass> &a) { - BaseClass::copy_from (a); +DoFObjectAccessor<1, dim>::copy_from (const DoFObjectAccessor<1, dim> &a) { + DoFObjectAccessor_Inheritance<1,dim>::BaseClass::copy_from (a); set_dof_handler (a.dof_handler); }; @@ -109,9 +109,9 @@ DoFObjectAccessor<1, dim,BaseClass>::copy_from (const DoFObjectAccessor<1, dim,B /*------------------------- Functions: DoFObjectAccessor<2, dim> -----------------------*/ -template +template inline -int DoFObjectAccessor<2, dim,BaseClass>::dof_index (const unsigned int i) const { +int DoFObjectAccessor<2, dim>::dof_index (const unsigned int i) const { Assert (dof_handler != 0, ExcInvalidObject()); // make sure a FE has been selected // and enough room was reserved @@ -125,9 +125,9 @@ int DoFObjectAccessor<2, dim,BaseClass>::dof_index (const unsigned int i) const -template +template inline -int DoFObjectAccessor<2, dim,BaseClass>::vertex_dof_index (const unsigned int vertex, +int DoFObjectAccessor<2, dim>::vertex_dof_index (const unsigned int vertex, const unsigned int i) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); @@ -143,10 +143,10 @@ int DoFObjectAccessor<2, dim,BaseClass>::vertex_dof_index (const unsigned int ve -template +template inline void -DoFObjectAccessor<2, dim,BaseClass>::get_dof_indices (vector &dof_indices) const { +DoFObjectAccessor<2, dim>::get_dof_indices (vector &dof_indices) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); Assert (dof_indices.size() == (4*dof_handler->get_fe().dofs_per_vertex + @@ -170,13 +170,13 @@ DoFObjectAccessor<2, dim,BaseClass>::get_dof_indices (vector &dof_indices) -template +template inline -TriaIterator > > -DoFObjectAccessor<2, dim,BaseClass>::line (const unsigned int i) const { +TriaIterator > +DoFObjectAccessor<2, dim>::line (const unsigned int i) const { Assert (i<4, ExcIndexRange (i, 0, 4)); - return TriaIterator > > + return TriaIterator > ( tria, present_level, @@ -187,14 +187,14 @@ DoFObjectAccessor<2, dim,BaseClass>::line (const unsigned int i) const { -template +template inline -TriaIterator > -DoFObjectAccessor<2, dim,BaseClass>::child (const unsigned int i) const { - TriaIterator > q (tria, - present_level+1, - child_index (i), - dof_handler); +TriaIterator > +DoFObjectAccessor<2, dim>::child (const unsigned int i) const { + TriaIterator > q (tria, + present_level+1, + child_index (i), + dof_handler); #ifdef DEBUG if (q.state() != past_the_end) @@ -205,11 +205,11 @@ DoFObjectAccessor<2, dim,BaseClass>::child (const unsigned int i) const { -template +template inline void -DoFObjectAccessor<2, dim,BaseClass>::copy_from (const DoFObjectAccessor<2, dim,BaseClass> &a) { - BaseClass::copy_from (a); +DoFObjectAccessor<2, dim>::copy_from (const DoFObjectAccessor<2, dim> &a) { + DoFObjectAccessor_Inheritance<2,dim>::BaseClass::copy_from (a); set_dof_handler (a.dof_handler); }; @@ -219,9 +219,9 @@ DoFObjectAccessor<2, dim,BaseClass>::copy_from (const DoFObjectAccessor<2, dim,B /*------------------------- Functions: DoFObjectAccessor -----------------------*/ -template +template inline -int DoFObjectAccessor<3, dim,BaseClass>::dof_index (const unsigned int i) const { +int DoFObjectAccessor<3, dim>::dof_index (const unsigned int i) const { Assert (dof_handler != 0, ExcInvalidObject()); // make sure a FE has been selected // and enough room was reserved @@ -235,9 +235,9 @@ int DoFObjectAccessor<3, dim,BaseClass>::dof_index (const unsigned int i) const -template +template inline -int DoFObjectAccessor<3, dim,BaseClass>::vertex_dof_index (const unsigned int vertex, +int DoFObjectAccessor<3, dim>::vertex_dof_index (const unsigned int vertex, const unsigned int i) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); @@ -253,10 +253,10 @@ int DoFObjectAccessor<3, dim,BaseClass>::vertex_dof_index (const unsigned int ve -template +template inline void -DoFObjectAccessor<3, dim,BaseClass>::get_dof_indices (vector &dof_indices) const { +DoFObjectAccessor<3, dim>::get_dof_indices (vector &dof_indices) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); Assert (dof_indices.size() == (8*dof_handler->get_fe().dofs_per_vertex + @@ -285,12 +285,12 @@ DoFObjectAccessor<3, dim,BaseClass>::get_dof_indices (vector &dof_indices) -template +template inline -TriaIterator > > -DoFObjectAccessor<3, dim,BaseClass>::line (const unsigned int i) const { - TriaIterator > l = BaseClass::line(i); - return TriaIterator > > +TriaIterator > +DoFObjectAccessor<3, dim>::line (const unsigned int i) const { + TriaIterator > l = DoFObjectAccessor_Inheritance<3,dim>::BaseClass::line(i); + return TriaIterator > ( tria, present_level, @@ -301,13 +301,13 @@ DoFObjectAccessor<3, dim,BaseClass>::line (const unsigned int i) const { -template +template inline -TriaIterator > > -DoFObjectAccessor<3, dim,BaseClass>::quad (const unsigned int i) const { +TriaIterator > +DoFObjectAccessor<3, dim>::quad (const unsigned int i) const { Assert (i<6, ExcIndexRange (i, 0, 6)); - return TriaIterator > > + return TriaIterator > ( tria, present_level, @@ -318,14 +318,14 @@ DoFObjectAccessor<3, dim,BaseClass>::quad (const unsigned int i) const { -template +template inline -TriaIterator > -DoFObjectAccessor<3, dim,BaseClass>::child (const unsigned int i) const { - TriaIterator > q (tria, - present_level+1, - child_index (i), - dof_handler); +TriaIterator > +DoFObjectAccessor<3, dim>::child (const unsigned int i) const { + TriaIterator > q (tria, + present_level+1, + child_index (i), + dof_handler); #ifdef DEBUG if (q.state() != past_the_end) @@ -336,9 +336,9 @@ DoFObjectAccessor<3, dim,BaseClass>::child (const unsigned int i) const { -template -void DoFObjectAccessor<3, dim,BaseClass>::copy_from (const DoFObjectAccessor<3, dim,BaseClass> &a) { - BaseClass::copy_from (a); +template +void DoFObjectAccessor<3, dim>::copy_from (const DoFObjectAccessor<3, dim> &a) { + DoFObjectAccessor_Inheritance<3,dim>::BaseClass::copy_from (a); set_dof_handler (a.dof_handler); }; diff --git a/deal.II/deal.II/include/dofs/dof_handler.h b/deal.II/deal.II/include/dofs/dof_handler.h index dbb4a45cc5..53f69879cd 100644 --- a/deal.II/deal.II/include/dofs/dof_handler.h +++ b/deal.II/deal.II/include/dofs/dof_handler.h @@ -73,13 +73,13 @@ class DoFDimensionInfo<1> { */ class DoFDimensionInfo<2> { public: - typedef TriaRawIterator<2,DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> > > raw_line_iterator; - typedef TriaIterator<2,DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> > > line_iterator; - typedef TriaActiveIterator<2,DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> > > active_line_iterator; + typedef TriaRawIterator<2,DoFObjectAccessor<1, 2> > raw_line_iterator; + typedef TriaIterator<2,DoFObjectAccessor<1, 2> > line_iterator; + typedef TriaActiveIterator<2,DoFObjectAccessor<1, 2> > active_line_iterator; - typedef TriaRawIterator<2,DoFCellAccessor<2> > raw_quad_iterator; - typedef TriaIterator<2,DoFCellAccessor<2> > quad_iterator; - typedef TriaActiveIterator<2,DoFCellAccessor<2> > active_quad_iterator; + typedef TriaRawIterator<2,DoFCellAccessor<2> > raw_quad_iterator; + typedef TriaIterator<2,DoFCellAccessor<2> > quad_iterator; + typedef TriaActiveIterator<2,DoFCellAccessor<2> > active_quad_iterator; typedef void * raw_hex_iterator; typedef void * hex_iterator; @@ -103,17 +103,17 @@ class DoFDimensionInfo<2> { */ class DoFDimensionInfo<3> { public: - typedef TriaRawIterator<3,DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> > > raw_line_iterator; - typedef TriaIterator<3,DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> > > line_iterator; - typedef TriaActiveIterator<3,DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> > > active_line_iterator; + typedef TriaRawIterator<3,DoFObjectAccessor<1, 3> > raw_line_iterator; + typedef TriaIterator<3,DoFObjectAccessor<1, 3> > line_iterator; + typedef TriaActiveIterator<3,DoFObjectAccessor<1, 3> > active_line_iterator; - typedef TriaRawIterator<3,DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> > > raw_quad_iterator; - typedef TriaIterator<3,DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> > > quad_iterator; - typedef TriaActiveIterator<3,DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> > > active_quad_iterator; + typedef TriaRawIterator<3,DoFObjectAccessor<2, 3> > raw_quad_iterator; + typedef TriaIterator<3,DoFObjectAccessor<2, 3> > quad_iterator; + typedef TriaActiveIterator<3,DoFObjectAccessor<2, 3> > active_quad_iterator; - typedef TriaRawIterator<3,DoFCellAccessor<3> > raw_hex_iterator; - typedef TriaIterator<3,DoFCellAccessor<3> > hex_iterator; - typedef TriaActiveIterator<3,DoFCellAccessor<3> > active_hex_iterator; + typedef TriaRawIterator<3,DoFCellAccessor<3> > raw_hex_iterator; + typedef TriaIterator<3,DoFCellAccessor<3> > hex_iterator; + typedef TriaActiveIterator<3,DoFCellAccessor<3> > active_hex_iterator; typedef raw_hex_iterator raw_cell_iterator; typedef hex_iterator cell_iterator; @@ -1429,12 +1429,9 @@ class DoFHandler : public Subscriptor, vector vertex_dofs; - friend class DoFObjectAccessor<1, dim, TriaObjectAccessor<1, dim> >; - friend class DoFObjectAccessor<1, dim, CellAccessor >; - friend class DoFObjectAccessor<2, dim, TriaObjectAccessor<2, dim> >; - friend class DoFObjectAccessor<2, dim, CellAccessor >; - friend class DoFObjectAccessor<3, dim, TriaObjectAccessor<3, dim> >; - friend class DoFObjectAccessor<3, dim, CellAccessor >; + friend class DoFObjectAccessor<1, dim>; + friend class DoFObjectAccessor<2, dim>; + friend class DoFObjectAccessor<3, dim>; }; diff --git a/deal.II/deal.II/include/dofs/mg_dof_accessor.h b/deal.II/deal.II/include/dofs/mg_dof_accessor.h index 8c4233effe..d4b538b923 100644 --- a/deal.II/deal.II/include/dofs/mg_dof_accessor.h +++ b/deal.II/deal.II/include/dofs/mg_dof_accessor.h @@ -86,7 +86,7 @@ class MGDoFAccessor { template class MGDoFObjectAccessor : public MGDoFAccessor, - public DoFObjectAccessor + public DoFObjectAccessor {}; @@ -158,7 +158,7 @@ class MGDoFObjectAccessor<0, dim, BaseClass> */ template class MGDoFObjectAccessor<1, dim, BaseClass> : public MGDoFAccessor, - public DoFObjectAccessor<1, dim, BaseClass> + public DoFObjectAccessor<1, dim> { public: /** @@ -255,7 +255,8 @@ class MGDoFObjectAccessor<1, dim, BaseClass> : public MGDoFAccessor, * @see DoFLineAccessor */ template -class MGDoFObjectAccessor<2, dim, BaseClass> : public MGDoFAccessor, public DoFObjectAccessor<2, dim, BaseClass> { +class MGDoFObjectAccessor<2, dim, BaseClass> : public MGDoFAccessor, + public DoFObjectAccessor<2, dim> { public: /** * Declare the data type that this accessor @@ -358,7 +359,7 @@ class MGDoFObjectAccessor<2, dim, BaseClass> : public MGDoFAccessor, publi */ template class MGDoFObjectAccessor<3, dim, BaseClass> : public MGDoFAccessor, - public DoFObjectAccessor<3, dim, BaseClass> + public DoFObjectAccessor<3, dim> { public: /** diff --git a/deal.II/deal.II/include/multigrid/mg_dof_accessor.h b/deal.II/deal.II/include/multigrid/mg_dof_accessor.h index 8c4233effe..d4b538b923 100644 --- a/deal.II/deal.II/include/multigrid/mg_dof_accessor.h +++ b/deal.II/deal.II/include/multigrid/mg_dof_accessor.h @@ -86,7 +86,7 @@ class MGDoFAccessor { template class MGDoFObjectAccessor : public MGDoFAccessor, - public DoFObjectAccessor + public DoFObjectAccessor {}; @@ -158,7 +158,7 @@ class MGDoFObjectAccessor<0, dim, BaseClass> */ template class MGDoFObjectAccessor<1, dim, BaseClass> : public MGDoFAccessor, - public DoFObjectAccessor<1, dim, BaseClass> + public DoFObjectAccessor<1, dim> { public: /** @@ -255,7 +255,8 @@ class MGDoFObjectAccessor<1, dim, BaseClass> : public MGDoFAccessor, * @see DoFLineAccessor */ template -class MGDoFObjectAccessor<2, dim, BaseClass> : public MGDoFAccessor, public DoFObjectAccessor<2, dim, BaseClass> { +class MGDoFObjectAccessor<2, dim, BaseClass> : public MGDoFAccessor, + public DoFObjectAccessor<2, dim> { public: /** * Declare the data type that this accessor @@ -358,7 +359,7 @@ class MGDoFObjectAccessor<2, dim, BaseClass> : public MGDoFAccessor, publi */ template class MGDoFObjectAccessor<3, dim, BaseClass> : public MGDoFAccessor, - public DoFObjectAccessor<3, dim, BaseClass> + public DoFObjectAccessor<3, dim> { public: /** diff --git a/deal.II/deal.II/source/dofs/dof_accessor.cc b/deal.II/deal.II/source/dofs/dof_accessor.cc index 7689fcd553..bf8a635ce6 100644 --- a/deal.II/deal.II/source/dofs/dof_accessor.cc +++ b/deal.II/deal.II/source/dofs/dof_accessor.cc @@ -25,9 +25,9 @@ -template -void DoFObjectAccessor<1, dim,BaseClass>::set_dof_index (const unsigned int i, - const int index) const { +template +void DoFObjectAccessor<1, dim>::set_dof_index (const unsigned int i, + const int index) const { Assert (dof_handler != 0, DoFAccessor::ExcInvalidObject()); // make sure a FE has been selected // and enough room was reserved @@ -42,10 +42,10 @@ void DoFObjectAccessor<1, dim,BaseClass>::set_dof_index (const unsigned int i, -template -void DoFObjectAccessor<1, dim,BaseClass>::set_vertex_dof_index (const unsigned int vertex, - const unsigned int i, - const int index) const { +template +void DoFObjectAccessor<1, dim>::set_vertex_dof_index (const unsigned int vertex, + const unsigned int i, + const int index) const { Assert (dof_handler != 0, ExcInvalidObject()); Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); Assert (vertex<2, ExcIndexRange (i,0,2)); @@ -60,8 +60,8 @@ void DoFObjectAccessor<1, dim,BaseClass>::set_vertex_dof_index (const unsigned i -template -void DoFObjectAccessor<1, dim,BaseClass>:: +template +void DoFObjectAccessor<1, dim>:: distribute_local_to_global (const Vector &local_source, Vector &global_destination) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -85,8 +85,8 @@ distribute_local_to_global (const Vector &local_source, -template -void DoFObjectAccessor<1, dim,BaseClass>:: +template +void DoFObjectAccessor<1, dim>:: distribute_local_to_global (const FullMatrix &local_source, SparseMatrix &global_destination) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -118,9 +118,9 @@ distribute_local_to_global (const FullMatrix &local_source, /*------------------------- Functions: DoFQuadAccessor -----------------------*/ -template -void DoFObjectAccessor<2, dim,BaseClass>::set_dof_index (const unsigned int i, - const int index) const { +template +void DoFObjectAccessor<2, dim>::set_dof_index (const unsigned int i, + const int index) const { Assert (dof_handler != 0, ExcInvalidObject()); // make sure a FE has been selected // and enough room was reserved @@ -134,8 +134,8 @@ void DoFObjectAccessor<2, dim,BaseClass>::set_dof_index (const unsigned int i, -template -void DoFObjectAccessor<2, dim,BaseClass>::set_vertex_dof_index (const unsigned int vertex, +template +void DoFObjectAccessor<2, dim>::set_vertex_dof_index (const unsigned int vertex, const unsigned int i, const int index) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -152,8 +152,8 @@ void DoFObjectAccessor<2, dim,BaseClass>::set_vertex_dof_index (const unsigned i -template -void DoFObjectAccessor<2, dim,BaseClass>:: +template +void DoFObjectAccessor<2, dim>:: distribute_local_to_global (const Vector &local_source, Vector &global_destination) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -178,8 +178,8 @@ distribute_local_to_global (const Vector &local_source, -template -void DoFObjectAccessor<2, dim,BaseClass>:: +template +void DoFObjectAccessor<2, dim>:: distribute_local_to_global (const FullMatrix &local_source, SparseMatrix &global_destination) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -213,8 +213,8 @@ distribute_local_to_global (const FullMatrix &local_source, /*------------------------- Functions: DoFObjectAccessor -----------------------*/ -template -void DoFObjectAccessor<3, dim,BaseClass>::set_dof_index (const unsigned int i, +template +void DoFObjectAccessor<3, dim>::set_dof_index (const unsigned int i, const int index) const { Assert (dof_handler != 0, ExcInvalidObject()); // make sure a FE has been selected @@ -229,8 +229,8 @@ void DoFObjectAccessor<3, dim,BaseClass>::set_dof_index (const unsigned int i, -template -void DoFObjectAccessor<3, dim,BaseClass>::set_vertex_dof_index (const unsigned int vertex, +template +void DoFObjectAccessor<3, dim>::set_vertex_dof_index (const unsigned int vertex, const unsigned int i, const int index) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -247,8 +247,8 @@ void DoFObjectAccessor<3, dim,BaseClass>::set_vertex_dof_index (const unsigned i -template -void DoFObjectAccessor<3, dim,BaseClass>:: +template +void DoFObjectAccessor<3, dim>:: distribute_local_to_global (const Vector &local_source, Vector &global_destination) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -274,8 +274,8 @@ distribute_local_to_global (const Vector &local_source, -template -void DoFObjectAccessor<3, dim,BaseClass>:: +template +void DoFObjectAccessor<3, dim>:: distribute_local_to_global (const FullMatrix &local_source, SparseMatrix &global_destination) const { Assert (dof_handler != 0, ExcInvalidObject()); @@ -316,11 +316,11 @@ distribute_local_to_global (const FullMatrix &local_source, #if deal_II_dimension == 1 template <> -DoFCellAccessor<1>::face_iterator +TriaIterator<1, DoFObjectAccessor<0,1> > DoFCellAccessor<1>::face (const unsigned int) const { Assert (false, ExcNotUsefulForThisDimension()); - return face_iterator(); + return TriaIterator<1, DoFObjectAccessor<0,1> >(); }; @@ -422,7 +422,7 @@ DoFCellAccessor::set_dof_values (const Vector &local_values, #if deal_II_dimension == 2 template <> -DoFCellAccessor<2>::face_iterator +TriaIterator<2, DoFObjectAccessor<1,2> > DoFCellAccessor<2>::face (const unsigned int i) const { return line(i); @@ -449,7 +449,7 @@ template template void DoFCellAccessor::get_dof_values (const Vector &values, - Vector &local_values) const + Vector &local_values) const { Assert (dim==2, ExcInternalError()); @@ -535,7 +535,7 @@ DoFCellAccessor::set_dof_values (const Vector &local_values, #if deal_II_dimension == 3 template <> -DoFCellAccessor<3>::face_iterator +TriaIterator<3, DoFObjectAccessor<2, 3> > DoFCellAccessor<3>::face (const unsigned int i) const { return quad(i); @@ -800,7 +800,7 @@ DoFCellAccessor::set_dof_values_by_interpolation(const Vector #if deal_II_dimension == 1 -template class DoFObjectAccessor<1, 1,CellAccessor<1> >; +template class DoFObjectAccessor<1, 1>; template class DoFCellAccessor<1>; template class TriaRawIterator<1,DoFCellAccessor<1> >; @@ -809,38 +809,33 @@ template class TriaActiveIterator<1,DoFCellAccessor<1> >; #endif #if deal_II_dimension == 2 -template class DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> >; -template class DoFObjectAccessor<2, 2,TriaObjectAccessor<2, 2> >; -template class DoFObjectAccessor<2, 2,CellAccessor<2> >; +template class DoFObjectAccessor<1, 2>; +template class DoFObjectAccessor<2, 2>; template class DoFCellAccessor<2>; -template class TriaRawIterator<2,DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> > >; -template class TriaRawIterator<2,DoFObjectAccessor<2, 2,TriaObjectAccessor<2, 2> > >; -template class TriaRawIterator<2,DoFCellAccessor<2> >; -template class TriaIterator<2,DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> > >; -template class TriaIterator<2,DoFCellAccessor<2> >; -template class TriaActiveIterator<2,DoFObjectAccessor<1, 2,TriaObjectAccessor<1, 2> > >; +template class TriaRawIterator <2,DoFObjectAccessor<1, 2> >; +template class TriaIterator <2,DoFObjectAccessor<1, 2> >; +template class TriaActiveIterator<2,DoFObjectAccessor<1, 2> >; +template class TriaRawIterator <2,DoFCellAccessor<2> >; +template class TriaIterator <2,DoFCellAccessor<2> >; template class TriaActiveIterator<2,DoFCellAccessor<2> >; #endif #if deal_II_dimension == 3 -template class DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> >; -template class DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> >; -template class DoFObjectAccessor<3, 3,TriaObjectAccessor<3, 3> >; -template class DoFObjectAccessor<3, 3,CellAccessor<3> >; +template class DoFObjectAccessor<1, 3>; +template class DoFObjectAccessor<2, 3>; template class DoFCellAccessor<3>; -template class TriaRawIterator<3,DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> > >; -template class TriaRawIterator<3,DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> > >; -template class TriaRawIterator<3,DoFObjectAccessor<3, 3,TriaObjectAccessor<3, 3> > >; -template class TriaRawIterator<3,DoFCellAccessor<3> >; -template class TriaIterator<3,DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> > >; -template class TriaIterator<3,DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> > >; -template class TriaIterator<3,DoFCellAccessor<3> >; -template class TriaActiveIterator<3,DoFObjectAccessor<1, 3,TriaObjectAccessor<1, 3> > >; -template class TriaActiveIterator<3,DoFObjectAccessor<2, 3,TriaObjectAccessor<2, 3> > >; +template class TriaRawIterator <3,DoFObjectAccessor<1, 3> >; +template class TriaIterator <3,DoFObjectAccessor<1, 3> >; +template class TriaActiveIterator<3,DoFObjectAccessor<1, 3> >; +template class TriaRawIterator <3,DoFObjectAccessor<2, 3> >; +template class TriaIterator <3,DoFObjectAccessor<2, 3> >; +template class TriaActiveIterator<3,DoFObjectAccessor<2, 3> >; +template class TriaRawIterator <3,DoFCellAccessor<3> >; +template class TriaIterator <3,DoFCellAccessor<3> >; template class TriaActiveIterator<3,DoFCellAccessor<3> >; #endif diff --git a/deal.II/deal.II/source/dofs/mg_dof_accessor.cc b/deal.II/deal.II/source/dofs/mg_dof_accessor.cc index 147b6926b2..ff405751bc 100644 --- a/deal.II/deal.II/source/dofs/mg_dof_accessor.cc +++ b/deal.II/deal.II/source/dofs/mg_dof_accessor.cc @@ -27,7 +27,7 @@ MGDoFObjectAccessor<1, dim,BaseClass>::MGDoFObjectAccessor (Triangulation * const int index, const AccessorData *local_data) : MGDoFAccessor (local_data), - DoFObjectAccessor<1, dim,BaseClass>(tria,level,index,local_data) {}; + DoFObjectAccessor<1, dim>(tria,level,index,local_data) {}; @@ -143,7 +143,7 @@ template void MGDoFObjectAccessor<1, dim,BaseClass>::copy_from (const MGDoFObjectAccessor<1, dim,BaseClass> &a) { - DoFObjectAccessor<1, dim,BaseClass>::copy_from (a); + DoFObjectAccessor<1, dim>::copy_from (a); set_mg_dof_handler (a.mg_dof_handler); }; @@ -158,7 +158,7 @@ MGDoFObjectAccessor<2, dim,BaseClass>::MGDoFObjectAccessor (Triangulation * const int index, const AccessorData *local_data) : MGDoFAccessor (local_data), - DoFObjectAccessor<2, dim,BaseClass>(tria,level,index,local_data) + DoFObjectAccessor<2, dim>(tria,level,index,local_data) {}; @@ -294,7 +294,7 @@ MGDoFObjectAccessor<2, dim,BaseClass>::child (const unsigned int i) const { template void MGDoFObjectAccessor<2, dim,BaseClass>::copy_from (const MGDoFObjectAccessor<2, dim,BaseClass> &a) { - DoFObjectAccessor<2, dim,BaseClass>::copy_from (a); + DoFObjectAccessor<2, dim>::copy_from (a); set_mg_dof_handler (a.mg_dof_handler); }; @@ -309,7 +309,7 @@ MGDoFObjectAccessor<3, dim,BaseClass>::MGDoFObjectAccessor (Triangulation * const int index, const AccessorData *local_data) : MGDoFAccessor (local_data), - DoFObjectAccessor<3, dim,BaseClass>(tria,level,index,local_data) {}; + DoFObjectAccessor<3, dim>(tria,level,index,local_data) {}; @@ -465,7 +465,7 @@ MGDoFObjectAccessor<3, dim,BaseClass>::child (const unsigned int i) const { template void MGDoFObjectAccessor<3, dim,BaseClass>::copy_from (const MGDoFObjectAccessor<3, dim,BaseClass> &a) { - DoFObjectAccessor<3, dim,BaseClass>::copy_from (a); + DoFObjectAccessor<3, dim>::copy_from (a); set_mg_dof_handler (a.mg_dof_handler); }; diff --git a/deal.II/deal.II/source/multigrid/mg_dof_accessor.cc b/deal.II/deal.II/source/multigrid/mg_dof_accessor.cc index 147b6926b2..ff405751bc 100644 --- a/deal.II/deal.II/source/multigrid/mg_dof_accessor.cc +++ b/deal.II/deal.II/source/multigrid/mg_dof_accessor.cc @@ -27,7 +27,7 @@ MGDoFObjectAccessor<1, dim,BaseClass>::MGDoFObjectAccessor (Triangulation * const int index, const AccessorData *local_data) : MGDoFAccessor (local_data), - DoFObjectAccessor<1, dim,BaseClass>(tria,level,index,local_data) {}; + DoFObjectAccessor<1, dim>(tria,level,index,local_data) {}; @@ -143,7 +143,7 @@ template void MGDoFObjectAccessor<1, dim,BaseClass>::copy_from (const MGDoFObjectAccessor<1, dim,BaseClass> &a) { - DoFObjectAccessor<1, dim,BaseClass>::copy_from (a); + DoFObjectAccessor<1, dim>::copy_from (a); set_mg_dof_handler (a.mg_dof_handler); }; @@ -158,7 +158,7 @@ MGDoFObjectAccessor<2, dim,BaseClass>::MGDoFObjectAccessor (Triangulation * const int index, const AccessorData *local_data) : MGDoFAccessor (local_data), - DoFObjectAccessor<2, dim,BaseClass>(tria,level,index,local_data) + DoFObjectAccessor<2, dim>(tria,level,index,local_data) {}; @@ -294,7 +294,7 @@ MGDoFObjectAccessor<2, dim,BaseClass>::child (const unsigned int i) const { template void MGDoFObjectAccessor<2, dim,BaseClass>::copy_from (const MGDoFObjectAccessor<2, dim,BaseClass> &a) { - DoFObjectAccessor<2, dim,BaseClass>::copy_from (a); + DoFObjectAccessor<2, dim>::copy_from (a); set_mg_dof_handler (a.mg_dof_handler); }; @@ -309,7 +309,7 @@ MGDoFObjectAccessor<3, dim,BaseClass>::MGDoFObjectAccessor (Triangulation * const int index, const AccessorData *local_data) : MGDoFAccessor (local_data), - DoFObjectAccessor<3, dim,BaseClass>(tria,level,index,local_data) {}; + DoFObjectAccessor<3, dim>(tria,level,index,local_data) {}; @@ -465,7 +465,7 @@ MGDoFObjectAccessor<3, dim,BaseClass>::child (const unsigned int i) const { template void MGDoFObjectAccessor<3, dim,BaseClass>::copy_from (const MGDoFObjectAccessor<3, dim,BaseClass> &a) { - DoFObjectAccessor<3, dim,BaseClass>::copy_from (a); + DoFObjectAccessor<3, dim>::copy_from (a); set_mg_dof_handler (a.mg_dof_handler); };