From 33ed464b28b70a400e06aa4e4c37c179cd098fb3 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Sun, 24 May 1998 21:10:13 +0000 Subject: [PATCH] Move code closer to the C++ standard. git-svn-id: https://svn.dealii.org/trunk@344 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/source/quadrature_lib.cc | 17 ++++ deal.II/deal.II/include/dofs/dof_accessor.h | 6 +- deal.II/deal.II/include/grid/geometry_info.h | 2 + deal.II/deal.II/include/grid/tria_accessor.h | 2 + deal.II/deal.II/include/grid/tria_iterator.h | 30 +++--- .../include/grid/tria_iterator.templates.h | 93 +++++++++++-------- deal.II/deal.II/source/dofs/dof_handler.cc | 70 ++++++++++++++ deal.II/deal.II/source/fe/fe.cc | 15 +++ deal.II/deal.II/source/fe/fe_lib.linear.cc | 37 +++++++- deal.II/deal.II/source/grid/tria_accessor.cc | 8 ++ 10 files changed, 225 insertions(+), 55 deletions(-) diff --git a/deal.II/base/source/quadrature_lib.cc b/deal.II/base/source/quadrature_lib.cc index f2e64ccdf2..127862ba9b 100644 --- a/deal.II/base/source/quadrature_lib.cc +++ b/deal.II/base/source/quadrature_lib.cc @@ -5,6 +5,7 @@ +template <> QGauss2<1>::QGauss2 () : Quadrature<1> (2) { @@ -28,6 +29,7 @@ QGauss2<1>::QGauss2 () : +template <> QGauss2<2>::QGauss2 () : Quadrature<2> (4) { @@ -61,6 +63,7 @@ QGauss2<2>::QGauss2 () : +template <> QGauss3<1>::QGauss3 () : Quadrature<1> (3) { @@ -90,6 +93,7 @@ QGauss3<1>::QGauss3 () : +template <> QGauss3<2>::QGauss3 () : Quadrature<2> (9) { @@ -143,6 +147,7 @@ QGauss3<2>::QGauss3 () : +template <> QGauss4<1>::QGauss4 () : Quadrature<1> (4) { @@ -176,6 +181,7 @@ QGauss4<1>::QGauss4 () : +template <> QGauss4<2>::QGauss4 () : Quadrature<2> (16) { @@ -250,6 +256,7 @@ QGauss4<2>::QGauss4 () : +template <> QGauss5<1>::QGauss5 () : Quadrature<1> (5) { @@ -287,6 +294,7 @@ QGauss5<1>::QGauss5 () : +template <> QGauss5<2>::QGauss5 () : Quadrature<2> (25) { @@ -403,6 +411,7 @@ QGauss5<2>::QGauss5 () : +template <> QGauss6<1>::QGauss6 () : Quadrature<1> (6) { @@ -444,6 +453,7 @@ QGauss6<1>::QGauss6 () : +template <> QGauss7<1>::QGauss7 () : Quadrature<1> (7) { @@ -489,6 +499,7 @@ QGauss7<1>::QGauss7 () : +template <> QGauss8<1>::QGauss8 () : Quadrature<1> (8) { @@ -544,6 +555,7 @@ QGauss8<1>::QGauss8 () : +template <> QMidpoint<1>::QMidpoint () : Quadrature<1>(1) { @@ -553,6 +565,7 @@ QMidpoint<1>::QMidpoint () : +template <> QMidpoint<2>::QMidpoint () : Quadrature<2>(1) { @@ -563,6 +576,7 @@ QMidpoint<2>::QMidpoint () : +template <> QSimpson<1>::QSimpson () : Quadrature<1> (3) { @@ -578,6 +592,7 @@ QSimpson<1>::QSimpson () : +template <> QSimpson<2>::QSimpson () : Quadrature<2> (9) { @@ -603,6 +618,7 @@ QSimpson<2>::QSimpson () : +template <> QTrapez<1>::QTrapez () : Quadrature<1> (2) { @@ -618,6 +634,7 @@ QTrapez<1>::QTrapez () : +template <> QTrapez<2>::QTrapez () : Quadrature<2> (4) { diff --git a/deal.II/deal.II/include/dofs/dof_accessor.h b/deal.II/deal.II/include/dofs/dof_accessor.h index 1f9b25ff0d..9344e8b138 100644 --- a/deal.II/deal.II/include/dofs/dof_accessor.h +++ b/deal.II/deal.II/include/dofs/dof_accessor.h @@ -152,7 +152,7 @@ class DoFAccessor { * * The same concept is used with #DoFQuadAccessor# classes etc. */ -template +template class DoFLineAccessor : public DoFAccessor, public BaseClass { public: /** @@ -237,7 +237,7 @@ class DoFLineAccessor : public DoFAccessor, public BaseClass { * * @see DoFLineAccessor */ -template +template class DoFQuadAccessor : public DoFAccessor, public BaseClass { public: /** @@ -376,6 +376,7 @@ class DoFSubstructAccessor : public DoFAccessor, * and one for #DoFCellAccessor<2>#, derived from * #DoFQuadAccessor<2,CellAccessor<2> >#. */ +template <> class DoFSubstructAccessor<1> : public DoFLineAccessor<1,CellAccessor<1> > { public: /** @@ -402,6 +403,7 @@ class DoFSubstructAccessor<1> : public DoFLineAccessor<1,CellAccessor<1> > { * * @see DoFSubstructAccessor<1> */ +template <> class DoFSubstructAccessor<2> : public DoFQuadAccessor<2,CellAccessor<2> > { public: /** diff --git a/deal.II/deal.II/include/grid/geometry_info.h b/deal.II/deal.II/include/grid/geometry_info.h index 3665626d77..f683a8dbfb 100644 --- a/deal.II/deal.II/include/grid/geometry_info.h +++ b/deal.II/deal.II/include/grid/geometry_info.h @@ -20,6 +20,7 @@ template struct GeometryInfo; * to think about their number in a dimension independent expression. * This not only reduces thinking effort but also error possibilities. */ +template <> struct GeometryInfo<1> { public: /** @@ -66,6 +67,7 @@ struct GeometryInfo<1> { * to think about their number in a dimension independent expression. * This not only reduces thinking effort but also error possibilities. */ +template <> struct GeometryInfo<2> { public: /** diff --git a/deal.II/deal.II/include/grid/tria_accessor.h b/deal.II/deal.II/include/grid/tria_accessor.h index 1c7177f4fa..28566d98c6 100644 --- a/deal.II/deal.II/include/grid/tria_accessor.h +++ b/deal.II/deal.II/include/grid/tria_accessor.h @@ -754,6 +754,7 @@ class TriaSubstructAccessor; * and one for #CellAccessor<2>#, derived from * #QuadAccessor<2>#. */ +template <> class TriaSubstructAccessor<1> : public LineAccessor<1> { public: /** @@ -781,6 +782,7 @@ class TriaSubstructAccessor<1> : public LineAccessor<1> { * * @see TriaSubstructAccessor<1> */ +template <> class TriaSubstructAccessor<2> : public QuadAccessor<2> { public: /** diff --git a/deal.II/deal.II/include/grid/tria_iterator.h b/deal.II/deal.II/include/grid/tria_iterator.h index ee05a5be52..a97716d9a4 100644 --- a/deal.II/deal.II/include/grid/tria_iterator.h +++ b/deal.II/deal.II/include/grid/tria_iterator.h @@ -234,7 +234,7 @@ template class Triangulation; * @see TriaDimensionInfo * @author Wolfgang Bangerth, 1998 */ -template +template class TriaRawIterator : public bidirectional_iterator{ public: /** @@ -445,7 +445,7 @@ class TriaRawIterator : public bidirectional_iterator{ * This specialization of \Ref{TriaRawIterator} provides access only to the * {\it used} lines, quads, cells, etc. */ -template +template class TriaIterator : public TriaRawIterator { public: /** @@ -562,7 +562,7 @@ class TriaIterator : public TriaRawIterator { * {\it active} lines, quads, cells, etc. An active cell is a cell which is not * refined and thus a cell on which calculations on the finest level are done. */ -template +template class TriaActiveIterator : public TriaIterator { public: /** @@ -698,7 +698,7 @@ class TriaActiveIterator : public TriaIterator { -template +template inline const Accessor & TriaRawIterator::operator * () const { @@ -709,7 +709,7 @@ TriaRawIterator::operator * () const { -template +template inline Accessor & TriaRawIterator::operator * () { @@ -719,7 +719,7 @@ TriaRawIterator::operator * () { -template +template inline const Accessor * TriaRawIterator::operator -> () const { @@ -728,7 +728,7 @@ TriaRawIterator::operator -> () const { -template +template inline Accessor * TriaRawIterator::operator -> () { @@ -738,7 +738,7 @@ TriaRawIterator::operator -> () { -template +template inline IteratorState TriaRawIterator::state () const { return accessor.state (); @@ -746,7 +746,7 @@ IteratorState TriaRawIterator::state () const { -template +template inline bool TriaRawIterator::operator < (const TriaRawIterator &i) const { Assert (state() != invalid, ExcDereferenceInvalidObject()); @@ -762,7 +762,7 @@ bool TriaRawIterator::operator < (const TriaRawIterator &i) const -template +template inline TriaRawIterator & TriaRawIterator::operator ++ () { @@ -774,7 +774,7 @@ TriaRawIterator::operator ++ () { -template +template inline TriaRawIterator & TriaRawIterator::operator -- () { @@ -786,7 +786,7 @@ TriaRawIterator::operator -- () { -template +template inline void TriaRawIterator::print (ostream &out) const { out << accessor.level() << "." << accessor.index(); @@ -794,7 +794,7 @@ void TriaRawIterator::print (ostream &out) const { -template +template inline ostream & operator << (ostream &out, const TriaRawIterator &i) { i.print(out); @@ -803,7 +803,7 @@ ostream & operator << (ostream &out, const TriaRawIterator &i) { -template +template inline ostream & operator << (ostream &out, const TriaIterator &i) { i.print(out); @@ -812,7 +812,7 @@ ostream & operator << (ostream &out, const TriaIterator &i) { -template +template inline ostream & operator << (ostream &out, const TriaActiveIterator &i) { i.print(out); diff --git a/deal.II/deal.II/include/grid/tria_iterator.templates.h b/deal.II/deal.II/include/grid/tria_iterator.templates.h index 4e053c84ac..82bb7c34f5 100644 --- a/deal.II/deal.II/include/grid/tria_iterator.templates.h +++ b/deal.II/deal.II/include/grid/tria_iterator.templates.h @@ -14,19 +14,19 @@ /*------------------------ Functions: TriaRawIterator ------------------*/ -template +template TriaRawIterator::TriaRawIterator () : accessor (0, -2, -2, 0) {}; -template +template TriaRawIterator::TriaRawIterator (const TriaRawIterator &i) : accessor (i.accessor) {}; -template +template TriaRawIterator::TriaRawIterator (Triangulation *parent, const int level, const int index, @@ -35,7 +35,7 @@ TriaRawIterator::TriaRawIterator (Triangulation *parent, -template +template TriaRawIterator & TriaRawIterator::operator = (const TriaRawIterator &i) { accessor.copy_from (i.accessor); @@ -45,7 +45,7 @@ TriaRawIterator::operator = (const TriaRawIterator & -template +template bool TriaRawIterator::operator == (const TriaRawIterator &i) const { return accessor == i.accessor; @@ -53,7 +53,7 @@ TriaRawIterator::operator == (const TriaRawIterator -template +template bool TriaRawIterator::operator != (const TriaRawIterator &i) const { return accessor != i.accessor; @@ -61,7 +61,7 @@ TriaRawIterator::operator != (const TriaRawIterator -template +template TriaRawIterator TriaRawIterator::operator ++ (int) { TriaRawIterator tmp(*this); this->operator++ (); @@ -71,7 +71,7 @@ TriaRawIterator TriaRawIterator::operator ++ (int) { -template +template TriaRawIterator TriaRawIterator::operator -- (int) { TriaRawIterator tmp(*this); this->operator-- (); @@ -85,19 +85,19 @@ TriaRawIterator TriaRawIterator::operator -- (int) { /*----------------------- functions: TriaIterator ---------------*/ -template +template TriaIterator::TriaIterator () : TriaRawIterator () {}; -template +template TriaIterator:: TriaIterator (const TriaIterator &i) : TriaRawIterator ((TriaRawIterator)i) {}; -template +template TriaIterator:: TriaIterator (const TriaRawIterator &i) : TriaRawIterator (i) @@ -117,7 +117,7 @@ TriaIterator (const TriaRawIterator &i) : -template +template TriaIterator::TriaIterator (Triangulation *parent, const int level, const int index, @@ -139,7 +139,7 @@ TriaIterator::TriaIterator (Triangulation *parent, -template +template TriaIterator & TriaIterator::operator = (const TriaIterator &i) { accessor.copy_from (i.accessor); @@ -147,7 +147,7 @@ TriaIterator::operator = (const TriaIterator &i) { }; -template +template TriaIterator & TriaIterator::operator = (const TriaRawIterator &i) { accessor.copy_from (i.accessor); @@ -167,7 +167,7 @@ TriaIterator::operator = (const TriaRawIterator &i) -template +template TriaIterator & TriaIterator::operator ++ () { while (TriaRawIterator::operator++(), (state() == valid)) @@ -178,7 +178,7 @@ TriaIterator & TriaIterator::operator ++ () { -template +template TriaIterator TriaIterator::operator ++ (int) { TriaIterator tmp(*this); this->operator++ (); @@ -188,7 +188,7 @@ TriaIterator TriaIterator::operator ++ (int) { -template +template TriaIterator & TriaIterator::operator -- () { while (TriaRawIterator::operator--(), (state() == valid)) @@ -198,7 +198,7 @@ TriaIterator & TriaIterator::operator -- () { }; -template +template TriaIterator TriaIterator::operator -- (int) { TriaIterator tmp(*this); this->operator-- (); @@ -211,20 +211,20 @@ TriaIterator TriaIterator::operator -- (int) { /*----------------------- functions: TriaActiveIterator ---------------*/ -template +template TriaActiveIterator::TriaActiveIterator () : TriaIterator () {}; -template +template TriaActiveIterator:: TriaActiveIterator (const TriaActiveIterator &i) : TriaIterator ((TriaIterator) i) {}; -template +template TriaActiveIterator:: TriaActiveIterator (const TriaRawIterator &i) : TriaIterator (i) @@ -236,14 +236,17 @@ TriaActiveIterator (const TriaRawIterator &i) : // has_children() is called anyway, even if // state==past_the_end, and will then // throw the exception! - if (state() != past_the_end) + // + // for egcs: write this-> to avoid internal + // compiler error + if (this->state() != past_the_end) Assert (accessor.has_children()==false, ExcAssignmentOfInactiveObject()); #endif }; -template +template TriaActiveIterator:: TriaActiveIterator (const TriaIterator &i) : TriaIterator (i) @@ -255,7 +258,10 @@ TriaActiveIterator (const TriaIterator &i) : // has_children() is called anyway, even if // state==past_the_end, and will then // throw the exception! - if (state() != past_the_end) + // + // for egcs: write this-> to avoid internal + // compiler error + if (this->state() != past_the_end) Assert (accessor.has_children()==false, ExcAssignmentOfInactiveObject()); #endif @@ -263,7 +269,7 @@ TriaActiveIterator (const TriaIterator &i) : -template +template TriaActiveIterator::TriaActiveIterator (Triangulation *parent, const int level, const int index, @@ -277,7 +283,10 @@ TriaActiveIterator::TriaActiveIterator (Triangulation *parent // has_children() is called anyway, even if // state==past_the_end, and will then // throw the exception! - if (state() != past_the_end) + // + // for egcs: write this-> to avoid internal + // compiler error + if (this->state() != past_the_end) Assert (accessor.has_children()==false, ExcAssignmentOfInactiveObject()); #endif @@ -285,7 +294,7 @@ TriaActiveIterator::TriaActiveIterator (Triangulation *parent -template +template TriaActiveIterator & TriaActiveIterator::operator = (const TriaActiveIterator &i) { accessor.copy_from (i.accessor); @@ -294,7 +303,7 @@ TriaActiveIterator::operator = (const TriaActiveIterator +template TriaActiveIterator & TriaActiveIterator::operator = (const TriaRawIterator &i) { accessor.copy_from (i.accessor); @@ -305,7 +314,10 @@ TriaActiveIterator::operator = (const TriaRawIterator to avoid internal + // compiler error + if (this->state() != past_the_end) Assert (accessor.used() && accessor.has_children()==false, ExcAssignmentOfInactiveObject()); #endif @@ -314,7 +326,7 @@ TriaActiveIterator::operator = (const TriaRawIterator +template TriaActiveIterator & TriaActiveIterator::operator = (const TriaIterator &i) { accessor.copy_from (i.accessor); @@ -325,7 +337,10 @@ TriaActiveIterator::operator = (const TriaIterator & // has_children() is called anyway, even if // state==past_the_end, and will then // throw the exception! - if (state() != past_the_end) + // + // for egcs: write this-> to avoid internal + // compiler error + if (this->state() != past_the_end) Assert (accessor.has_children()==false, ExcAssignmentOfInactiveObject()); #endif @@ -334,10 +349,12 @@ TriaActiveIterator::operator = (const TriaIterator & -template +template TriaActiveIterator & TriaActiveIterator::operator ++ () { + // for egcs: write this-> to avoid internal + // compiler error while (TriaIterator::operator++(), - (state() == valid)) + (this->state() == valid)) if (accessor.has_children() == false) return *this; return *this; @@ -345,7 +362,7 @@ TriaActiveIterator & TriaActiveIterator::operator ++ -template +template TriaActiveIterator TriaActiveIterator::operator ++ (int) { TriaActiveIterator tmp(*this); this->operator++ (); @@ -355,10 +372,12 @@ TriaActiveIterator TriaActiveIterator::operator ++ ( -template +template TriaActiveIterator & TriaActiveIterator::operator -- () { + // for egcs: write this-> to avoid internal + // compiler error while (TriaIterator::operator--(), - (state() == valid)) + (this->state() == valid)) if (accessor.has_children() == false) return *this; return *this; @@ -366,7 +385,7 @@ TriaActiveIterator & TriaActiveIterator::operator -- -template +template TriaActiveIterator TriaActiveIterator::operator -- (int) { TriaActiveIterator tmp(*this); this->operator-- (); diff --git a/deal.II/deal.II/source/dofs/dof_handler.cc b/deal.II/deal.II/source/dofs/dof_handler.cc index dc5049ac12..2ec740af63 100644 --- a/deal.II/deal.II/source/dofs/dof_handler.cc +++ b/deal.II/deal.II/source/dofs/dof_handler.cc @@ -32,6 +32,7 @@ DoFHandler::~DoFHandler () { +template <> DoFHandler<1>::raw_cell_iterator DoFHandler<1>::begin_raw (const unsigned int level) const { return begin_raw_line (level); @@ -39,6 +40,7 @@ DoFHandler<1>::begin_raw (const unsigned int level) const { +template <> DoFHandler<1>::cell_iterator DoFHandler<1>::begin (const unsigned int level) const { return begin_line (level); @@ -46,6 +48,7 @@ DoFHandler<1>::begin (const unsigned int level) const { +template <> DoFHandler<1>::active_cell_iterator DoFHandler<1>::begin_active (const unsigned int level) const { return begin_active_line (level); @@ -53,6 +56,7 @@ DoFHandler<1>::begin_active (const unsigned int level) const { +template <> DoFHandler<1>::raw_cell_iterator DoFHandler<1>::end () const { return end_line (); @@ -60,6 +64,7 @@ DoFHandler<1>::end () const { +template <> DoFHandler<1>::raw_cell_iterator DoFHandler<1>::last_raw () const { return last_raw_line (); @@ -67,6 +72,7 @@ DoFHandler<1>::last_raw () const { +template <> DoFHandler<1>::raw_cell_iterator DoFHandler<1>::last_raw (const unsigned int level) const { return last_raw_line (level); @@ -74,6 +80,7 @@ DoFHandler<1>::last_raw (const unsigned int level) const { +template <> DoFHandler<1>::cell_iterator DoFHandler<1>::last () const { return last_line (); @@ -81,6 +88,7 @@ DoFHandler<1>::last () const { +template <> DoFHandler<1>::cell_iterator DoFHandler<1>::last (const unsigned int level) const { return last_line (level); @@ -88,6 +96,7 @@ DoFHandler<1>::last (const unsigned int level) const { +template <> DoFHandler<1>::active_cell_iterator DoFHandler<1>::last_active () const { return last_active_line (); @@ -95,6 +104,7 @@ DoFHandler<1>::last_active () const { +template <> DoFHandler<1>::active_cell_iterator DoFHandler<1>::last_active (const unsigned int level) const { return last_active_line (level); @@ -104,6 +114,7 @@ DoFHandler<1>::last_active (const unsigned int level) const { +template <> DoFHandler<2>::raw_cell_iterator DoFHandler<2>::begin_raw (const unsigned int level) const { return begin_raw_quad (level); @@ -111,6 +122,7 @@ DoFHandler<2>::begin_raw (const unsigned int level) const { +template <> DoFHandler<2>::cell_iterator DoFHandler<2>::begin (const unsigned int level) const { return begin_quad (level); @@ -118,6 +130,7 @@ DoFHandler<2>::begin (const unsigned int level) const { +template <> DoFHandler<2>::active_cell_iterator DoFHandler<2>::begin_active (const unsigned int level) const { return begin_active_quad (level); @@ -125,6 +138,7 @@ DoFHandler<2>::begin_active (const unsigned int level) const { +template <> DoFHandler<2>::raw_cell_iterator DoFHandler<2>::end () const { return end_quad (); @@ -132,6 +146,7 @@ DoFHandler<2>::end () const { +template <> DoFHandler<2>::raw_cell_iterator DoFHandler<2>::last_raw () const { return last_raw_quad (); @@ -139,6 +154,7 @@ DoFHandler<2>::last_raw () const { +template <> DoFHandler<2>::raw_cell_iterator DoFHandler<2>::last_raw (const unsigned int level) const { return last_raw_quad (level); @@ -146,6 +162,7 @@ DoFHandler<2>::last_raw (const unsigned int level) const { +template <> DoFHandler<2>::cell_iterator DoFHandler<2>::last () const { return last_quad (); @@ -153,6 +170,7 @@ DoFHandler<2>::last () const { +template <> DoFHandler<2>::cell_iterator DoFHandler<2>::last (const unsigned int level) const { return last_quad (level); @@ -160,6 +178,7 @@ DoFHandler<2>::last (const unsigned int level) const { +template <> DoFHandler<2>::active_cell_iterator DoFHandler<2>::last_active () const { return last_active_quad (); @@ -167,6 +186,7 @@ DoFHandler<2>::last_active () const { +template <> DoFHandler<2>::active_cell_iterator DoFHandler<2>::last_active (const unsigned int level) const { return last_active_quad (level); @@ -179,6 +199,7 @@ DoFHandler<2>::last_active (const unsigned int level) const { +template <> DoFDimensionInfo<1>::raw_face_iterator DoFHandler<1>::begin_raw_face (const unsigned int) const { Assert (false, ExcFunctionNotUseful()); @@ -187,6 +208,7 @@ DoFHandler<1>::begin_raw_face (const unsigned int) const { +template <> DoFDimensionInfo<1>::face_iterator DoFHandler<1>::begin_face (const unsigned int) const { Assert (false, ExcFunctionNotUseful()); @@ -195,6 +217,7 @@ DoFHandler<1>::begin_face (const unsigned int) const { +template <> DoFDimensionInfo<1>::active_face_iterator DoFHandler<1>::begin_active_face (const unsigned int) const { Assert (false, ExcFunctionNotUseful()); @@ -203,6 +226,7 @@ DoFHandler<1>::begin_active_face (const unsigned int) const { +template <> DoFDimensionInfo<1>::raw_face_iterator DoFHandler<1>::end_face () const { Assert (false, ExcFunctionNotUseful()); @@ -211,6 +235,7 @@ DoFHandler<1>::end_face () const { +template <> DoFDimensionInfo<1>::raw_face_iterator DoFHandler<1>::last_raw_face () const { Assert (false, ExcFunctionNotUseful()); @@ -219,6 +244,7 @@ DoFHandler<1>::last_raw_face () const { +template <> DoFDimensionInfo<1>::raw_face_iterator DoFHandler<1>::last_raw_face (const unsigned int) const { Assert (false, ExcFunctionNotUseful()); @@ -227,6 +253,7 @@ DoFHandler<1>::last_raw_face (const unsigned int) const { +template <> DoFDimensionInfo<1>::face_iterator DoFHandler<1>::last_face () const { Assert (false, ExcFunctionNotUseful()); @@ -235,6 +262,7 @@ DoFHandler<1>::last_face () const { +template <> DoFDimensionInfo<1>::face_iterator DoFHandler<1>::last_face (const unsigned int) const { Assert (false, ExcFunctionNotUseful()); @@ -243,6 +271,7 @@ DoFHandler<1>::last_face (const unsigned int) const { +template <> DoFDimensionInfo<1>::active_face_iterator DoFHandler<1>::last_active_face () const { Assert (false, ExcFunctionNotUseful()); @@ -251,6 +280,7 @@ DoFHandler<1>::last_active_face () const { +template <> DoFDimensionInfo<1>::active_face_iterator DoFHandler<1>::last_active_face (const unsigned int) const { Assert (false, ExcFunctionNotUseful()); @@ -261,6 +291,7 @@ DoFHandler<1>::last_active_face (const unsigned int) const { +template <> DoFDimensionInfo<2>::raw_face_iterator DoFHandler<2>::begin_raw_face (const unsigned int level) const { return begin_raw_line (level); @@ -268,6 +299,7 @@ DoFHandler<2>::begin_raw_face (const unsigned int level) const { +template <> DoFDimensionInfo<2>::face_iterator DoFHandler<2>::begin_face (const unsigned int level) const { return begin_line (level); @@ -275,6 +307,7 @@ DoFHandler<2>::begin_face (const unsigned int level) const { +template <> DoFDimensionInfo<2>::active_face_iterator DoFHandler<2>::begin_active_face (const unsigned int level) const { return begin_active_line (level); @@ -282,6 +315,7 @@ DoFHandler<2>::begin_active_face (const unsigned int level) const { +template <> DoFDimensionInfo<2>::raw_face_iterator DoFHandler<2>::end_face () const { return end_line (); @@ -289,6 +323,7 @@ DoFHandler<2>::end_face () const { +template <> DoFDimensionInfo<2>::raw_face_iterator DoFHandler<2>::last_raw_face () const { return last_raw_line (); @@ -296,6 +331,7 @@ DoFHandler<2>::last_raw_face () const { +template <> DoFDimensionInfo<2>::raw_face_iterator DoFHandler<2>::last_raw_face (const unsigned int level) const { return last_raw_line (level); @@ -303,6 +339,7 @@ DoFHandler<2>::last_raw_face (const unsigned int level) const { +template <> DoFDimensionInfo<2>::face_iterator DoFHandler<2>::last_face () const { return last_line (); @@ -310,6 +347,7 @@ DoFHandler<2>::last_face () const { +template <> DoFDimensionInfo<2>::face_iterator DoFHandler<2>::last_face (const unsigned int level) const { return last_line (level); @@ -317,6 +355,7 @@ DoFHandler<2>::last_face (const unsigned int level) const { +template <> DoFDimensionInfo<2>::active_face_iterator DoFHandler<2>::last_active_face () const { return last_active_line (); @@ -324,6 +363,7 @@ DoFHandler<2>::last_active_face () const { +template <> DoFDimensionInfo<2>::active_face_iterator DoFHandler<2>::last_active_face (const unsigned int level) const { return last_active_line (level); @@ -368,6 +408,7 @@ DoFHandler::begin_active_line (const unsigned int level) const { +template <> DoFHandler<1>::raw_quad_iterator DoFHandler<1>::begin_raw_quad (const unsigned int) const { Assert (false, ExcNotImplemented()); @@ -387,6 +428,7 @@ DoFHandler::begin_raw_quad (const unsigned int level) const { +template <> DoFHandler<1>::quad_iterator DoFHandler<1>::begin_quad (const unsigned int) const { Assert (false, ExcNotImplemented()); @@ -406,6 +448,7 @@ DoFHandler::begin_quad (const unsigned int level) const { +template <> DoFHandler<1>::active_quad_iterator DoFHandler<1>::begin_active_quad (const unsigned int) const { Assert (false, ExcNotImplemented()); @@ -433,6 +476,7 @@ DoFHandler::end_line () const { +template <> DoFHandler<1>::raw_quad_iterator DoFHandler<1>::end_quad () const { Assert (false, ExcNotImplemented()); @@ -483,6 +527,7 @@ DoFHandler::last_active_line (const unsigned int level) const { +template <> DoFHandler<1>::raw_quad_iterator DoFHandler<1>::last_raw_quad (const unsigned int) const { Assert (false, ExcNotImplemented()); @@ -502,6 +547,7 @@ DoFHandler::last_raw_quad (const unsigned int level) const { +template <> DoFHandler<1>::quad_iterator DoFHandler<1>::last_quad (const unsigned int) const { Assert (false, ExcNotImplemented()); @@ -522,6 +568,7 @@ DoFHandler::last_quad (const unsigned int level) const { +template <> DoFHandler<1>::active_quad_iterator DoFHandler<1>::last_active_quad (const unsigned int) const { Assert (false, ExcNotImplemented()); @@ -550,6 +597,7 @@ DoFHandler::last_raw_line () const { +template <> DoFHandler<1>::raw_quad_iterator DoFHandler<1>::last_raw_quad () const { Assert (false, ExcNotImplemented()); @@ -574,6 +622,7 @@ DoFHandler::last_line () const { +template <> DoFHandler<1>::quad_iterator DoFHandler<1>::last_quad () const { Assert (false, ExcNotImplemented()); @@ -599,6 +648,7 @@ DoFHandler::last_active_line () const { +template <> DoFHandler<1>::active_quad_iterator DoFHandler<1>::last_active_quad () const { Assert (false, ExcNotImplemented()); @@ -626,6 +676,7 @@ unsigned int DoFHandler::n_dofs () const { +template <> unsigned int DoFHandler<1>::n_boundary_dofs () const { Assert (selected_fe != 0, ExcNoFESelected()); Assert (false, ExcNotImplemented()); @@ -656,6 +707,7 @@ unsigned int DoFHandler::n_boundary_dofs () const { +template <> unsigned int DoFHandler<1>::n_boundary_dofs (const FunctionMap &) const { Assert (selected_fe != 0, ExcNoFESelected()); Assert (false, ExcNotImplemented()); @@ -725,6 +777,7 @@ void DoFHandler::distribute_dofs (const FiniteElementBase &fe) { +template <> unsigned int DoFHandler<1>::distribute_dofs_on_cell (active_cell_iterator &cell, unsigned int next_free_dof) { @@ -776,6 +829,7 @@ unsigned int DoFHandler<1>::distribute_dofs_on_cell (active_cell_iterator &cell, +template <> unsigned int DoFHandler<2>::distribute_dofs_on_cell (active_cell_iterator &cell, unsigned int next_free_dof) { if (selected_fe->dofs_per_vertex > 0) @@ -1005,6 +1059,7 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, +template <> void DoFHandler<1>::do_renumbering (const vector &new_numbers) { // note that we can not use cell iterators // in this function since then we would @@ -1025,6 +1080,7 @@ void DoFHandler<1>::do_renumbering (const vector &new_numbers) { +template <> void DoFHandler<2>::do_renumbering (const vector &new_numbers) { for (vector::iterator i=vertex_dofs.begin(); i!=vertex_dofs.end(); ++i) if (*i != -1) @@ -1046,6 +1102,7 @@ void DoFHandler<2>::do_renumbering (const vector &new_numbers) { +template <> void DoFHandler<1>::make_constraint_matrix (ConstraintMatrix &cm) const { cm.clear (); cm.close (); @@ -1054,6 +1111,7 @@ void DoFHandler<1>::make_constraint_matrix (ConstraintMatrix &cm) const { +template <> void DoFHandler<2>::make_constraint_matrix (ConstraintMatrix &constraints) const { constraints.clear (); @@ -1147,6 +1205,7 @@ void DoFHandler::make_sparsity_pattern (dSMatrixStruct &sparsity) const { +template <> void DoFHandler<1>::make_boundary_sparsity_pattern (const vector &, dSMatrixStruct &) const { Assert (selected_fe != 0, ExcNoFESelected()); @@ -1193,6 +1252,7 @@ void DoFHandler::make_boundary_sparsity_pattern (const vector &dof_to_ +template <> void DoFHandler<1>::make_boundary_sparsity_pattern (const FunctionMap &, const vector &, dSMatrixStruct &) const { @@ -1460,6 +1520,7 @@ void DoFHandler::transfer_cell (const typename DoFHandler::cell_iterat +template <> unsigned int DoFHandler<1>::max_couplings_between_dofs () const { Assert (selected_fe != 0, ExcNoFESelected()); return 3*selected_fe->dofs_per_vertex + 2*selected_fe->dofs_per_line; @@ -1467,6 +1528,7 @@ unsigned int DoFHandler<1>::max_couplings_between_dofs () const { +template <> unsigned int DoFHandler<2>::max_couplings_between_dofs () const { Assert (selected_fe != 0, ExcNoFESelected()); @@ -1521,6 +1583,7 @@ unsigned int DoFHandler<2>::max_couplings_between_dofs () const { +template <> unsigned int DoFHandler<1>::max_couplings_between_boundary_dofs () const { Assert (selected_fe != 0, ExcNoFESelected()); Assert (false, ExcInternalError()); @@ -1529,6 +1592,7 @@ unsigned int DoFHandler<1>::max_couplings_between_boundary_dofs () const { +template <> unsigned int DoFHandler<2>::max_couplings_between_boundary_dofs () const { Assert (selected_fe != 0, ExcNoFESelected()); return 3*selected_fe->dofs_per_vertex + 2*selected_fe->dofs_per_line; @@ -1537,6 +1601,7 @@ unsigned int DoFHandler<2>::max_couplings_between_boundary_dofs () const { +template <> unsigned int DoFHandler<1>::max_transfer_entries (const unsigned int max_level_diff) const { Assert (max_level_diff<2, ExcOnlyOnelevelTransferImplemented()); switch (max_level_diff) @@ -1552,6 +1617,7 @@ unsigned int DoFHandler<1>::max_transfer_entries (const unsigned int max_level_d +template <> unsigned int DoFHandler<2>::max_transfer_entries (const unsigned int max_level_diff) const { Assert (max_level_diff<2, ExcOnlyOnelevelTransferImplemented()); switch (max_level_diff) @@ -1612,6 +1678,7 @@ void DoFHandler::distribute_cell_to_dof_vector (const dVector &cell_data, +template <> void DoFHandler<1>::map_dof_to_boundary_indices (vector &) const { Assert (selected_fe != 0, ExcNoFESelected()); Assert (false, ExcNotImplemented()); @@ -1647,6 +1714,7 @@ void DoFHandler::map_dof_to_boundary_indices (vector &mapping) const { +template <> void DoFHandler<1>::map_dof_to_boundary_indices (const FunctionMap &, vector &) const { Assert (selected_fe != 0, ExcNoFESelected()); @@ -1693,6 +1761,7 @@ void DoFHandler::map_dof_to_boundary_indices (const FunctionMap &boundary_i +template <> void DoFHandler<1>::reserve_space () { Assert (selected_fe != 0, ExcNoFESelected()); Assert (tria->n_levels() > 0, ExcInvalidTriangulation()); @@ -1719,6 +1788,7 @@ void DoFHandler<1>::reserve_space () { +template <> void DoFHandler<2>::reserve_space () { Assert (selected_fe != 0, ExcNoFESelected()); Assert (tria->n_levels() > 0, ExcInvalidTriangulation()); diff --git a/deal.II/deal.II/source/fe/fe.cc b/deal.II/deal.II/source/fe/fe.cc index e4f4d313b2..32fce303d0 100644 --- a/deal.II/deal.II/source/fe/fe.cc +++ b/deal.II/deal.II/source/fe/fe.cc @@ -37,6 +37,7 @@ bool FiniteElementData<2>::operator== (const FiniteElementData<2> &f) const { +template <> FiniteElementBase<1>::FiniteElementBase (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, const unsigned int dofs_per_quad) : @@ -57,6 +58,7 @@ FiniteElementBase<1>::FiniteElementBase (const unsigned int dofs_per_vertex, +template <> FiniteElementBase<2>::FiniteElementBase (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, const unsigned int dofs_per_quad) : @@ -120,7 +122,17 @@ bool FiniteElementBase::operator == (const FiniteElementBase &f) const /*------------------------------- FiniteElement ----------------------*/ +// declare this function to be explicitely specialized before first use +// egcs wants this, but gcc2.8.1 produces an internal compiler error, so +// we drop this declaration again for the time being +//template <> +//void FiniteElement<1>::get_ansatz_points (const DoFHandler<1>::cell_iterator &cell, +// const Boundary<1> &, +// vector > &ansatz_points) const; + + +template <> void FiniteElement<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, const vector > &unit_points, vector &jacobians, @@ -173,6 +185,7 @@ void FiniteElement::fill_fe_values (const DoFHandler::cell_iterator &, +template <> void FiniteElement<1>::fill_fe_face_values (const DoFHandler<1>::cell_iterator &, const unsigned int , const vector > &, @@ -240,6 +253,7 @@ void FiniteElement::fill_fe_face_values (const DoFHandler::cell_iterat +template <> void FiniteElement<1>::fill_fe_subface_values (const DoFHandler<1>::cell_iterator &, const unsigned int , const unsigned int , @@ -300,6 +314,7 @@ void FiniteElement::fill_fe_subface_values (const DoFHandler::cell_ite +template <> void FiniteElement<1>::get_ansatz_points (const DoFHandler<1>::cell_iterator &cell, const Boundary<1> &, vector > &ansatz_points) const { diff --git a/deal.II/deal.II/source/fe/fe_lib.linear.cc b/deal.II/deal.II/source/fe/fe_lib.linear.cc index e7d081ea44..22d559484e 100644 --- a/deal.II/deal.II/source/fe/fe_lib.linear.cc +++ b/deal.II/deal.II/source/fe/fe_lib.linear.cc @@ -8,6 +8,7 @@ +template <> FELinear<1>::FELinear () : FiniteElement<1> (1, 0) { @@ -42,6 +43,7 @@ FELinear<1>::FELinear () : +template <> double FELinear<1>::shape_value(const unsigned int i, const Point<1>& p) const @@ -57,6 +59,7 @@ FELinear<1>::shape_value(const unsigned int i, +template <> Point<1> FELinear<1>::shape_grad(const unsigned int i, const Point<1>&) const @@ -68,10 +71,11 @@ FELinear<1>::shape_grad(const unsigned int i, case 1: return Point<1>(1.); } return Point<1>(); -} +}; +template <> void FELinear<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, const vector > &unit_points, vector &jacobians, @@ -90,6 +94,7 @@ void FELinear<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, +template <> void FELinear<1>::get_ansatz_points (const typename DoFHandler<1>::cell_iterator &cell, const Boundary<1> &boundary, vector > &ansatz_points) const { @@ -98,6 +103,7 @@ void FELinear<1>::get_ansatz_points (const typename DoFHandler<1>::cell_iterator +template <> void FELinear<1>::get_face_ansatz_points (const typename DoFHandler<1>::face_iterator &, const Boundary<1> &, vector > &) const { @@ -106,6 +112,7 @@ void FELinear<1>::get_face_ansatz_points (const typename DoFHandler<1>::face_ite +template <> void FELinear<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, const Boundary<1> &, const vector > &, @@ -115,6 +122,7 @@ void FELinear<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, +template <> void FELinear<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, const unsigned int , const vector > &, @@ -124,6 +132,7 @@ void FELinear<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, +template <> void FELinear<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, const unsigned int, const Boundary<1> &, @@ -134,6 +143,7 @@ void FELinear<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, +template <> void FELinear<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, const unsigned int, const unsigned int, @@ -146,6 +156,7 @@ void FELinear<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, +template <> FELinear<2>::FELinear () : FiniteElement<2> (1, 0, 0) { @@ -235,6 +246,7 @@ FELinear<2>::FELinear () : +template <> double FELinear<2>::shape_value (const unsigned int i, const Point<2>& p) const @@ -252,6 +264,7 @@ FELinear<2>::shape_value (const unsigned int i, +template <> Point<2> FELinear<2>::shape_grad (const unsigned int i, const Point<2>& p) const @@ -390,6 +403,7 @@ void FELinear::get_face_ansatz_points (const typename DoFHandler::face +template <> void FELinear<2>::get_face_jacobians (const DoFHandler<2>::face_iterator &face, const Boundary<2> &, const vector > &unit_points, @@ -409,6 +423,7 @@ void FELinear<2>::get_face_jacobians (const DoFHandler<2>::face_iterator &face, +template <> void FELinear<2>::get_subface_jacobians (const DoFHandler<2>::face_iterator &face, const unsigned int, const vector > &unit_points, @@ -430,6 +445,7 @@ void FELinear<2>::get_subface_jacobians (const DoFHandler<2>::face_iterator &fac +template <> void FELinear<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, const unsigned int face_no, const Boundary<2> &, @@ -459,6 +475,7 @@ void FELinear<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, +template <> void FELinear<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, const unsigned int face_no, const unsigned int, @@ -496,11 +513,13 @@ void FELinear<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, +template <> FEQuadratic<1>::FEQuadratic () : FiniteElement<1> (1, 1) {}; +template <> void FEQuadratic<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, const vector > &unit_points, vector &jacobians, @@ -519,6 +538,7 @@ void FEQuadratic<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, +template <> void FEQuadratic<1>::get_ansatz_points (const typename DoFHandler<1>::cell_iterator &cell, const Boundary<1> &boundary, vector > &ansatz_points) const { @@ -527,6 +547,7 @@ void FEQuadratic<1>::get_ansatz_points (const typename DoFHandler<1>::cell_itera +template <> void FEQuadratic<1>::get_face_ansatz_points (const typename DoFHandler<1>::face_iterator &, const Boundary<1> &, vector > &) const { @@ -535,6 +556,7 @@ void FEQuadratic<1>::get_face_ansatz_points (const typename DoFHandler<1>::face_ +template <> void FEQuadratic<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, const Boundary<1> &, const vector > &, @@ -544,6 +566,7 @@ void FEQuadratic<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, +template <> void FEQuadratic<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, const unsigned int , const vector > &, @@ -553,6 +576,7 @@ void FEQuadratic<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator & +template <> void FEQuadratic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, const unsigned int, const Boundary<1> &, @@ -563,6 +587,7 @@ void FEQuadratic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, +template <> void FEQuadratic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, const unsigned int, const unsigned int, @@ -574,6 +599,7 @@ void FEQuadratic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, +template <> FEQuadratic<2>::FEQuadratic () : FiniteElement<2> (1, 1, 1) { @@ -706,11 +732,13 @@ void FEQuadratic::get_normal_vectors (const DoFHandler::cell_iterator +template <> FECubic<1>::FECubic () : FiniteElement<1> (1, 2) {}; +template <> void FECubic<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, const vector > &unit_points, vector &jacobians, @@ -729,6 +757,7 @@ void FECubic<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, +template <> void FECubic<1>::get_ansatz_points (const typename DoFHandler<1>::cell_iterator &cell, const Boundary<1> &boundary, vector > &ansatz_points) const { @@ -737,6 +766,7 @@ void FECubic<1>::get_ansatz_points (const typename DoFHandler<1>::cell_iterator +template <> void FECubic<1>::get_face_ansatz_points (const typename DoFHandler<1>::face_iterator &, const Boundary<1> &, vector > &) const { @@ -745,6 +775,7 @@ void FECubic<1>::get_face_ansatz_points (const typename DoFHandler<1>::face_iter +template <> void FECubic<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, const Boundary<1> &, const vector > &, @@ -754,6 +785,7 @@ void FECubic<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, +template <> void FECubic<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, const unsigned int , const vector > &, @@ -763,6 +795,7 @@ void FECubic<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, +template <> void FECubic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, const unsigned int, const Boundary<1> &, @@ -773,6 +806,7 @@ void FECubic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, +template <> void FECubic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, const unsigned int, const unsigned int, @@ -783,6 +817,7 @@ void FECubic<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, +template <> FECubic<2>::FECubic () : FiniteElement<2> (1, 2, 4) {}; diff --git a/deal.II/deal.II/source/grid/tria_accessor.cc b/deal.II/deal.II/source/grid/tria_accessor.cc index 0992b5c017..9f23965d26 100644 --- a/deal.II/deal.II/source/grid/tria_accessor.cc +++ b/deal.II/deal.II/source/grid/tria_accessor.cc @@ -528,12 +528,14 @@ template class QuadAccessor<2>; /*------------------------ Functions: CellAccessor<1> -----------------------*/ +template <> bool CellAccessor<1>::at_boundary () const { return at_boundary(0) || at_boundary(1); }; +template <> unsigned char CellAccessor<1>::material_id () const { Assert (used(), typename TriaSubstructAccessor<1>::ExcRefineCellNotUsed()); @@ -542,6 +544,7 @@ unsigned char CellAccessor<1>::material_id () const { +template <> void CellAccessor<1>::set_material_id (const unsigned char mat_id) const { Assert (used(), typename TriaSubstructAccessor<1>::ExcRefineCellNotUsed()); @@ -551,6 +554,7 @@ void CellAccessor<1>::set_material_id (const unsigned char mat_id) const { +template <> Triangulation<1>::face_iterator CellAccessor<1>::face (const unsigned int) const { Assert (false, ExcNotUsefulForThisDimension()); @@ -562,12 +566,14 @@ CellAccessor<1>::face (const unsigned int) const { /*------------------------ Functions: CellAccessor<2> -----------------------*/ +template <> bool CellAccessor<2>::at_boundary () const { return at_boundary(0) || at_boundary(1) || at_boundary(2) || at_boundary(3); }; +template <> unsigned char CellAccessor<2>::material_id () const { Assert (used(), typename TriaSubstructAccessor<2>::ExcRefineCellNotUsed()); @@ -576,6 +582,7 @@ unsigned char CellAccessor<2>::material_id () const { +template <> void CellAccessor<2>::set_material_id (const unsigned char mat_id) const { Assert (used(), typename TriaSubstructAccessor<2>::ExcRefineCellNotUsed()); @@ -585,6 +592,7 @@ void CellAccessor<2>::set_material_id (const unsigned char mat_id) const { +template <> Triangulation<2>::face_iterator CellAccessor<2>::face (const unsigned int i) const { return line(i); -- 2.39.5