17 #ifndef __deal2__tria_h
18 #define __deal2__tria_h
21 #include <deal.II/base/config.h>
22 #include <deal.II/base/point.h>
23 #include <deal.II/base/subscriptor.h>
24 #include <deal.II/base/smartpointer.h>
25 #include <deal.II/base/geometry_info.h>
26 #include <deal.II/base/std_cxx1x/function.h>
27 #include <deal.II/grid/tria_iterator_selector.h>
28 #include <deal.II/grid/tria_faces.h>
29 #include <deal.II/grid/tria_levels.h>
31 #include <boost/signals2.hpp>
32 #include <boost/serialization/vector.hpp>
33 #include <boost/serialization/map.hpp>
34 #include <boost/serialization/split_member.hpp>
43 template <
int dim,
int spacedim>
class Boundary;
47 template <
int spacedim>
class TriaAccessor<0,1,spacedim>;
53 template <
int dim>
class TriaLevel;
65 struct Implementation;
70 struct Implementation;
74 template <
int dim,
int spacedim>
class DoFHandler;
77 template <
int dim,
int spacedim>
class DoFHandler;
97 template <
int structdim>
280 std::size_t memory_consumption ()
const;
286 template <
class Archive>
287 void serialize (Archive &ar,
288 const unsigned int version);
345 std::size_t memory_consumption ()
const;
351 template <
class Archive>
352 void serialize (Archive &ar,
353 const unsigned int version);
410 std::size_t memory_consumption ()
const;
416 template <
class Archive>
417 void serialize (Archive &ar,
418 const unsigned int version);
1215 template <
int dim,
int spacedim=dim>
1451 typedef typename IteratorSelector::line_iterator line_iterator;
1452 typedef typename IteratorSelector::active_line_iterator active_line_iterator;
1454 typedef typename IteratorSelector::quad_iterator quad_iterator;
1455 typedef typename IteratorSelector::active_quad_iterator active_quad_iterator;
1457 typedef typename IteratorSelector::hex_iterator hex_iterator;
1458 typedef typename IteratorSelector::active_hex_iterator active_hex_iterator;
1633 std::list<typename Triangulation<dim,spacedim>::cell_iterator>
1728 virtual void clear ();
2253 boost::signals2::signal<void ()> create;
2254 boost::signals2::signal<void ()> pre_refinement;
2255 boost::signals2::signal<void ()> post_refinement;
2256 boost::signals2::signal<void (const Triangulation<dim, spacedim> &original_tria)> copy;
2257 boost::signals2::signal<void ()>
clear;
2258 boost::signals2::signal<void ()> any_change;
2618 cell_iterator
begin (const
unsigned int level = 0) const;
2632 active_cell_iterator
begin_active(const
unsigned int level = 0) const;
2640 cell_iterator
end () const;
2648 cell_iterator
end (const
unsigned int level) const;
2655 active_cell_iterator
end_active (const
unsigned int level) const;
2662 cell_iterator
last () const;
2727 unsigned int n_lines () const;
2733 unsigned int n_lines (const
unsigned int level) const;
2750 unsigned int n_quads () const;
2756 unsigned int n_quads (const
unsigned int level) const;
2774 unsigned int n_hexs() const;
2781 unsigned int n_hexs(const
unsigned int level) const;
2802 unsigned int n_cells () const;
2810 unsigned int n_cells (const
unsigned int level) const;
2835 unsigned int n_faces () const;
2900 const
std::vector<
Point<spacedim> > &
2915 bool vertex_used (const
unsigned int index) const;
2924 const
std::vector<
bool> &
3007 unsigned int n_raw_lines (const
unsigned int level) const;
3045 unsigned int n_raw_quads (const
unsigned int level) const;
3083 unsigned int n_raw_hexs (const
unsigned int level) const;
3102 unsigned int n_raw_cells (const
unsigned int level) const;
3153 template <class Archive>
3154 void save (Archive &ar,
3155 const
unsigned int version) const;
3181 template <class Archive>
3182 void load (Archive &ar,
3183 const
unsigned int version);
3185 BOOST_SERIALIZATION_SPLIT_MEMBER()
3197 << "The given level " << arg1
3198 << " is not in the
valid range!");
3228 << "You tried to do something on level " << arg1
3229 << ", but this level is empty.");
3272 const
std::vector<
bool> &v,
3273 const
unsigned int magic_number2,
3282 std::vector<
bool> &v,
3283 const
unsigned int magic_number2,
3306 typedef typename IteratorSelector::raw_line_iterator raw_line_iterator;
3307 typedef typename IteratorSelector::raw_quad_iterator raw_quad_iterator;
3308 typedef typename IteratorSelector::raw_hex_iterator raw_hex_iterator;
3316 raw_cell_iterator
begin_raw (const
unsigned int level = 0) const;
3324 raw_cell_iterator
end_raw (const
unsigned int level) const;
3352 begin_line (const
unsigned int level = 0) const;
3358 active_line_iterator
3394 begin_quad (const
unsigned int level = 0) const;
3400 active_quad_iterator
3434 begin_hex (const
unsigned int level = 0) const;
3626 std::multimap<const RefinementListener *,
std::vector<boost::signals2::
connection> >
3633 friend class TriaAccessor<0, 1, spacedim>;
3637 friend struct ::
internal::TriaAccessor::Implementation;
3651 template <
int structdim>
3655 for (
unsigned int i=0; i<GeometryInfo<structdim>::vertices_per_cell; ++i)
3667 template <
class Archive>
3668 void NumberCache<1>::serialize (Archive &ar,
3677 template <
class Archive>
3678 void NumberCache<2>::serialize (Archive &ar,
3679 const unsigned int version)
3681 this->NumberCache<1>::serialize (ar, version);
3688 template <
class Archive>
3689 void NumberCache<3>::serialize (Archive &ar,
3690 const unsigned int version)
3692 this->NumberCache<2>::serialize (ar, version);
3694 ar &n_hexes &n_hexes_level;
3695 ar &n_active_hexes &n_active_hexes_level;
3702 template <
int dim,
int spacedim>
3707 Assert (index < vertices_used.size(),
3709 return vertices_used[index];
3714 template <
int dim,
int spacedim>
3718 return number_cache.n_levels;
3721 template <
int dim,
int spacedim>
3725 return number_cache.n_levels;
3729 template <
int dim,
int spacedim>
3734 return vertices.size();
3739 template <
int dim,
int spacedim>
3741 const std::vector<Point<spacedim> > &
3748 template <
int dim,
int spacedim>
3749 template <
class Archive>
3752 const unsigned int)
const
3775 template <
int dim,
int spacedim>
3776 template <
class Archive>
3798 bool my_check_for_distorted_cells;
3799 ar &my_check_for_distorted_cells;
3801 Assert (my_check_for_distorted_cells == check_for_distorted_cells,
3802 ExcMessage (
"The triangulation loaded into here must have the "
3803 "same setting with regard to reporting distorted "
3804 "cell as the one previously stored."));
3865 DEAL_II_NAMESPACE_CLOSE
3871 #include <deal.II/grid/tria_accessor.h>
std::vector< CellData< 1 > > boundary_lines
std::vector<::internal::Triangulation::TriaLevel< dim > * > levels
unsigned int n_raw_faces() const
active_cell_iterator begin_active(const unsigned int level=0) const
static const unsigned int space_dimension
std::map< unsigned int, types::boundary_id > * vertex_to_boundary_id_map_1d
static const unsigned int invalid_unsigned_int
void load_user_flags_line(std::istream &in)
virtual void pre_refinement_notification(const Triangulation< dim, spacedim > &tria)
Iterator points to a valid object.
cell_iterator last() const
const std::vector< Point< spacedim > > & get_vertices() const
::internal::Triangulation::NumberCache< dim > number_cache
virtual unsigned int n_global_levels() const
void save_user_flags_hex(std::ostream &out) const
line_iterator end_line() const
unsigned int n_active_lines() const
unsigned int n_used_vertices() const
std::list< typename Triangulation< dim, spacedim >::cell_iterator > distorted_cells
void distort_random(const double factor, const bool keep_boundary=true) DEAL_II_DEPRECATED
unsigned char material_id
bool check_consistency(const unsigned int dim) const
unsigned int n_faces() const
active_face_iterator begin_active_face() const
std::vector< Point< spacedim > > vertices
virtual types::subdomain_id locally_owned_subdomain() const
void set_all_refine_flags()
void load_user_flags(std::istream &in)
::ExceptionBase & ExcMessage(std::string arg1)
bool anisotropic_refinement
std::vector< unsigned int > n_active_lines_level
std::vector< unsigned int > n_hexes_level
void clear_user_flags_quad()
std::vector< unsigned int > n_quads_level
void save_user_pointers_quad(std::vector< void * > &v) const
line_iterator begin_line(const unsigned int level=0) const
void flip_all_direction_flags()
raw_cell_iterator begin_raw(const unsigned int level=0) const
virtual std::size_t memory_consumption() const
std::multimap< const RefinementListener *, std::vector< boost::signals2::connection > > refinement_listener_map
std::vector< unsigned int > n_active_quads_level
static void write_bool_vector(const unsigned int magic_number1, const std::vector< bool > &v, const unsigned int magic_number2, std::ostream &out)
face_iterator end_face() const
void execute_coarsening()
void load_user_flags_quad(std::istream &in)
void save_user_flags_line(std::ostream &out) const
unsigned int n_active_cells() const
virtual void create_notification(const Triangulation< dim, spacedim > &tria)
hex_iterator begin_hex(const unsigned int level=0) const
static void read_bool_vector(const unsigned int magic_number1, std::vector< bool > &v, const unsigned int magic_number2, std::istream &in)
virtual void set_mesh_smoothing(const MeshSmoothing mesh_smoothing)
void load_user_pointers_line(const std::vector< void * > &v)
unsigned int n_levels() const
virtual void post_refinement_notification(const Triangulation< dim, spacedim > &tria)
const Boundary< dim, spacedim > & get_boundary(const types::boundary_id number) const
cell_iterator end() const
bool get_anisotropic_refinement_flag() const
void load_coarsen_flags(std::istream &out)
void load_user_flags_hex(std::istream &in)
void save_user_indices_hex(std::vector< unsigned int > &v) const
unsigned int n_active_quads() const
DeclException1(ExcInvalidLevel, int,<< "The given level "<< arg1<< " is not in the valid range!")
void save_coarsen_flags(std::ostream &out) const
virtual void create_triangulation_compatibility(const std::vector< Point< spacedim > > &vertices, const std::vector< CellData< dim > > &cells, const SubCellData &subcelldata)
const std::vector< bool > & get_used_vertices() const
void save_user_indices(std::vector< unsigned int > &v) const
bool prepare_coarsening_and_refinement()
unsigned int n_raw_lines() const
const bool check_for_distorted_cells
static const unsigned int dimension
Triangulation(const MeshSmoothing smooth_grid=none, const bool check_for_distorted_cells=false)
unsigned int n_cells() const
raw_hex_iterator begin_raw_hex(const unsigned int level=0) const
void clear_user_flags_hex()
void load_user_indices_line(const std::vector< unsigned int > &v)
void clear_user_pointers() DEAL_II_DEPRECATED
#define Assert(cond, exc)
face_iterator begin_face() const
void save_user_flags(std::ostream &out) const
unsigned int n_raw_quads() const
unsigned int n_hexs() const
void load_user_pointers_quad(const std::vector< void * > &v)
raw_quad_iterator begin_raw_quad(const unsigned int level=0) const
void load(Archive &ar, const unsigned int version)
virtual void copy_triangulation(const Triangulation< dim, spacedim > &old_tria)
std::vector< bool > vertices_used
void add_refinement_listener(RefinementListener &listener) const DEAL_II_DEPRECATED
cell_iterator begin(const unsigned int level=0) const
void load_user_indices(const std::vector< unsigned int > &v)
void set_boundary(const types::boundary_id number, const Boundary< dim, spacedim > &boundary_object)
void save_user_pointers(std::vector< void * > &v) const
void clear_despite_subscriptions()
::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
void save_refine_flags(std::ostream &out) const
unsigned int n_lines() const
quad_iterator begin_quad(const unsigned int level=0) const
virtual ~DistortedCellList()
::internal::Triangulation::Iterators< dim, spacedim > IteratorSelector
BlockCompressedSparsityPattern CompressedBlockSparsityPattern DEAL_II_DEPRECATED
void save_user_indices_line(std::vector< unsigned int > &v) const
void remove_refinement_listener(RefinementListener &listener) const DEAL_II_DEPRECATED
bool vertex_used(const unsigned int index) const
void save_user_pointers_line(std::vector< void * > &v) const
void load_user_indices_hex(const std::vector< unsigned int > &v)
void save_user_indices_quad(std::vector< unsigned int > &v) const
std::map< types::boundary_id, SmartPointer< const Boundary< dim, spacedim >, Triangulation< dim, spacedim > > > boundary
unsigned int n_raw_cells(const unsigned int level) const
unsigned int n_active_faces() const
std::vector< unsigned int > n_active_hexes_level
active_quad_iterator begin_active_quad(const unsigned int level=0) const
void save_user_pointers_hex(std::vector< void * > &v) const
raw_cell_iterator end_raw(const unsigned int level) const
void save(Archive &ar, const unsigned int version) const
::internal::Triangulation::TriaFaces< dim > * faces
unsigned int n_active_quads
std::vector< CellData< 2 > > boundary_quads
hex_iterator end_hex() const
static const StraightBoundary< dim, spacedim > straight_boundary
active_cell_iterator end_active(const unsigned int level) const
std::vector< types::boundary_id > get_boundary_indicators() const
MeshSmoothing smooth_grid
active_cell_iterator last_active() const
DistortedCellList execute_refinement()
unsigned int n_quads() const
void refine_global(const unsigned int times=1)
unsigned int n_raw_hexs() const
unsigned char boundary_id
void load_user_pointers_hex(const std::vector< void * > &v)
virtual void execute_coarsening_and_refinement()
DeclException0(ExcTriangulationNotEmpty)
raw_line_iterator begin_raw_line(const unsigned int level=0) const
void load_user_pointers(const std::vector< void * > &v)
virtual ~RefinementListener()
void clear_user_flags_line()
unsigned int max_adjacent_cells() const
quad_iterator end_quad() const
active_hex_iterator begin_active_hex(const unsigned int level=0) const
unsigned int n_vertices() const
unsigned int n_active_hexes
unsigned int n_active_hexs() const
virtual void create_triangulation(const std::vector< Point< spacedim > > &vertices, const std::vector< CellData< dim > > &cells, const SubCellData &subcelldata)
void load_user_indices_quad(const std::vector< unsigned int > &v)
unsigned int n_active_lines
virtual void copy_notification(const Triangulation< dim, spacedim > &old_tria, const Triangulation< dim, spacedim > &new_tria)
void save_user_flags_quad(std::ostream &out) const
active_line_iterator begin_active_line(const unsigned int level=0) const
void load_refine_flags(std::istream &in)
unsigned int vertices[GeometryInfo< structdim >::vertices_per_cell]
std::vector< unsigned int > n_lines_level