include/deal.II/grid/tria_object.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: tria_object.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2011, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
00010 //
00011 //---------------------------------------------------------------------------
00012 #ifndef __deal2__tria_object_h
00013 #define __deal2__tria_object_h
00014 
00015 
00016 #include <deal.II/base/config.h>
00017 #include <deal.II/base/exceptions.h>
00018 #include <deal.II/base/geometry_info.h>
00019 
00020 DEAL_II_NAMESPACE_OPEN
00021 
00022 namespace internal
00023 {
00024   namespace Triangulation
00025   {
00026 
00036     template <int structdim>
00037     class TriaObject
00038     {
00039       public:
00040         static const unsigned int dimension = structdim;
00041 
00047         TriaObject ();
00048 
00057         TriaObject (const int i0, const int i1);
00058 
00067         TriaObject (const int i0, const int i1,
00068                     const int i2, const int i3);
00069 
00078         TriaObject (const int i0, const int i1,
00079                     const int i2, const int i3,
00080                     const int i4, const int i5);
00081 
00082 
00087         int face (const unsigned int i) const;
00088 
00093         void set_face (const unsigned int i, const int index);
00094 
00100         static std::size_t memory_consumption ();
00101 
00106         template <class Archive>
00107         void serialize(Archive & ar,
00108                        const unsigned int version);
00109 
00110       protected:
00118         int faces[GeometryInfo<structdim>::faces_per_cell];
00119     };
00120 
00121 //----------------------------------------------------------------------//
00122 
00123     template <int structdim>
00124     inline
00125     TriaObject<structdim>::TriaObject ()
00126     {
00127       for (unsigned int i=0; i<GeometryInfo<structdim>::faces_per_cell; ++i)
00128         faces[i] = -1;
00129     }
00130 
00131 
00132     template <int structdim>
00133     inline
00134     TriaObject<structdim>::TriaObject (const int i0,
00135                                        const int i1)
00136     {
00137       Assert (structdim==1, ExcImpossibleInDim(structdim));
00138       faces[0] = i0;
00139       faces[1] = i1;
00140     }
00141 
00142 
00143     template <int structdim>
00144     inline
00145     TriaObject<structdim>::TriaObject (const int i0,
00146                                        const int i1,
00147                                        const int i2,
00148                                        const int i3)
00149     {
00150       Assert (structdim==2, ExcImpossibleInDim(structdim));
00151       faces[0] = i0;
00152       faces[1] = i1;
00153       faces[2] = i2;
00154       faces[3] = i3;
00155     }
00156 
00157 
00158     template <int structdim>
00159     inline
00160     TriaObject<structdim>::TriaObject (const int i0,
00161                                        const int i1,
00162                                        const int i2,
00163                                        const int i3,
00164                                        const int i4,
00165                                        const int i5)
00166     {
00167       Assert (structdim==3, ExcImpossibleInDim(structdim));
00168       faces[0] = i0;
00169       faces[1] = i1;
00170       faces[2] = i2;
00171       faces[3] = i3;
00172       faces[4] = i4;
00173       faces[5] = i5;
00174     }
00175 
00176 
00177     template <int structdim>
00178     inline
00179     int TriaObject<structdim>::face (const unsigned int i) const
00180     {
00181       Assert (i<GeometryInfo<structdim>::faces_per_cell,
00182               ExcIndexRange(i,0,GeometryInfo<structdim>::faces_per_cell));
00183       return faces[i];
00184     }
00185 
00186 
00187 
00188     template <int structdim>
00189     inline
00190     void TriaObject<structdim>::set_face (const unsigned int i, const int index)
00191     {
00192       Assert (i<GeometryInfo<structdim>::faces_per_cell,
00193               ExcIndexRange(i,0,GeometryInfo<structdim>::faces_per_cell));
00194       faces[i] = index;
00195     }
00196 
00197 
00198 
00199     template <int structdim>
00200     inline
00201     std::size_t
00202     TriaObject<structdim>::memory_consumption ()
00203     {
00204       return sizeof(TriaObject<structdim>);
00205     }
00206 
00207 
00208     template <int structdim>
00209     template <class Archive>
00210     void TriaObject<structdim>::serialize(Archive & ar,
00211                                           const unsigned int)
00212     {
00213       ar & faces;
00214     }
00215 
00216 
00217   }
00218 }
00219 
00220 
00221 DEAL_II_NAMESPACE_CLOSE
00222 
00223 #endif
00224 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Wed May 23 2012 12:03:25 by doxygen 1.7.3