include/deal.II/grid/persistent_tria.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: persistent_tria.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 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__persistent_tria_h
00013 #define __deal2__persistent_tria_h
00014 
00015 
00016 #include <deal.II/base/config.h>
00017 #include <deal.II/base/smartpointer.h>
00018 #include <deal.II/grid/tria.h>
00019 #include <vector>
00020 
00021 DEAL_II_NAMESPACE_OPEN
00022 
00102 template <int dim, int spacedim=dim>
00103 class PersistentTriangulation : public Triangulation<dim, spacedim>
00104 {
00105   public:
00110     static const unsigned int dimension = dim;
00111     static const unsigned int spacedimension = spacedim;
00112 
00127     PersistentTriangulation (const Triangulation<dim, spacedim> &coarse_grid);
00128 
00137     PersistentTriangulation (const PersistentTriangulation<dim, spacedim> &old_tria);
00138 
00142     virtual ~PersistentTriangulation ();
00143 
00153     virtual void execute_coarsening_and_refinement ();
00154 
00175     void restore ();
00176 
00191     void restore (const unsigned int step_no);
00192 
00200     unsigned int n_refinement_steps () const;
00201 
00218     virtual void copy_triangulation (const Triangulation<dim, spacedim> &tria);
00219 
00225     virtual void create_triangulation (const std::vector<Point<spacedim> >    &vertices,
00226                                        const std::vector<CellData<dim> > &cells,
00227                                        const SubCellData                 &subcelldata);
00228 
00237     virtual void create_triangulation_compatibility (
00238       const std::vector<Point<spacedim> >    &vertices,
00239       const std::vector<CellData<dim> > &cells,
00240       const SubCellData                 &subcelldata);
00241 
00246     virtual void write_flags(std::ostream &out) const;
00247 
00256     virtual void read_flags(std::istream &in);
00257 
00262     virtual void clear_flags();
00263 
00269     virtual std::size_t memory_consumption () const;
00270 
00274     DeclException0 (ExcTriaNotEmpty);
00278     DeclException0 (ExcFlagsNotCleared);
00279 
00280   private:
00285     SmartPointer<const Triangulation<dim,spacedim>,PersistentTriangulation<dim,spacedim> > coarse_grid;
00286 
00294     std::vector<std::vector<bool> >   refine_flags;
00295 
00299     std::vector<std::vector<bool> >   coarsen_flags;
00300 };
00301 
00302 
00303 DEAL_II_NAMESPACE_CLOSE
00304 
00305 #endif
00306 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Wed May 23 2012 06:07:35 by doxygen 1.7.3