ViennaGrid - The Vienna Grid Library  2.1.0
Data Structures | Namespaces | Functions
viennagrid/mesh/mesh.hpp File Reference

Contains definition and implementation of mesh and mesh views. More...

#include <typeinfo>
#include "viennagrid/forwards.hpp"
#include "viennagrid/meta/algorithm.hpp"
#include "viennagrid/storage/id_generator.hpp"
#include "viennagrid/storage/inserter.hpp"
#include "viennagrid/storage/algorithm.hpp"
#include "viennagrid/config/element_config.hpp"
#include "viennagrid/config/mesh_config.hpp"
#include "viennagrid/element/element_view.hpp"

Go to the source code of this file.

Data Structures

struct  boundary_information_wrapper< container_type_, change_counter_type >
 For internal use only. More...
struct  cell< something >
 Metafunction for obtaining the cell type of something. Will fail if there is more than one cell type. More...
struct  cell_tag< something >
 Metafunction for obtaining the cell tag of something. Will fail if there is more than one cell type. More...
struct  cells< something >
 Metafunction for obtaining an element typelist of all cell types of something. More...
struct  coboundary_container_wrapper< container_type_, change_counter_type >
 For internal use only. More...
struct  const_element_range< MeshSegmentHandleType, element_type_or_tag >
 Metafunction for the type retrieval of a const element range. More...
struct  const_handle< MeshSegmentHandleType, element_type_or_tag >
 Metafunction for the type retrieval of a const element handle. More...
struct  copy_element_setters< MeshT, SourceElementT, DestinationElementT >
 For internal use only. More...
class  decorated_mesh_view_config< WrappedConfigType, ElementTypeList, ContainerConfig >
 For internal use only. More...
class  decorated_mesh_view_config< decorated_mesh_view_config< WrappedConfigType, E, C >, ElementTypeList, ContainerConfig >
 For internal use only. More...
class  dereference_handle_comparator< ContainerT >
 For internal use only. More...
struct  element< MeshSegmentHandleType, element_type_or_tag >
 Metafunction for the type retrieval of an element. More...
struct  element_range< MeshSegmentHandleType, element_type_or_tag >
 Metafunction for the type retrieval of an element range. More...
struct  element_taglist< SomethingT >
 Metafunction for obtaining the element typelist of something. More...
struct  element_typelist< SomethingT >
 Metafunction for obtaining the element typelist of something. More...
struct  elements_of_topologic_dim< something, topologic_dimension >
 Metafunction for obtaining an element typelist of all element with a specific topologic dimension of something. More...
struct  fix_handle_helper< null_type >
struct  fix_handle_helper< typelist< SourceElementT, TailT > >
struct  for_each_element_functor< MeshSegmentHandleT, FunctorT >
 For internal use only. More...
struct  handle< MeshSegmentHandleType, element_type_or_tag >
 Metafunction for the type retrieval of an element handle. More...
class  handle_mesh_functor< container_collection_type >
 For internal use only. More...
struct  is_boundary< HostElementT, BoundaryElementTypeOrTagT >
 Metafunction for query if an element type/tag is boundary element of another host element. More...
struct  mesh< WrappedConfigType >
 Metafunction for obtaining a mesh from a config. More...
class  mesh< WrappedConfigType >
 The main mesh class holding all the different elements. The data structure is configured using a configuration class. See viennagrid::config for predefined configurations. More...
struct  mesh_view< MeshT, Element0TypeOrTagT, Element1TypeOrTagT, Element2TypeOrTagT, Element3TypeOrTagT, Element4TypeOrTagT, Element5TypeOrTagT, Element6TypeOrTagT, Element7TypeOrTagT, Element8TypeOrTagT, Element9TypeOrTagT >
 Metafunction for obtaining a mesh view from a mesh. Elements can be directly given. If viennagrid::null_type is specified somewhere all following types will be ignored. The default type for all element types is viennagrid::null_type. More...
struct  mesh_view_from_typelist< MeshT, ElementTypelistT, ContainerConfigT >
 Metafunction for obtaining a mesh view from a mesh using an element type list and a container configuration. More...
struct  neighbor_container_wrapper< container_type_, change_counter_type >
 For internal use only. More...
struct  referencing_element_typelist< SomethingT, ElementTypeOrTagT >
 Metafunction for obtaining the an element typelist including all element which references a given element. e.g. in a default triangle mesh the referencing element typelist based on the mesh for a vertex contains a line type and a triangle type. The host type can also be an element in which case all boundary elements referening the given element are returned (in a default tetrahedron mesh the referencing elements for a vertex based on a triangle contains only a line type) More...
struct  topologic_cell_dimension< something >
 Metafunction for returning the topologic dimension of the cell in a mesh or segment. More...
class  view_mesh_setter< container_collection_type >
 For internal use only. More...

Namespaces

namespace  viennagrid
 

The main ViennaGrid namespace. Most user functionality resides directly in this namespace rather than in sub-namespaces.


namespace  viennagrid::detail
 

Namespace for implementation details. Not intended to be used directly by a library user.


namespace  viennagrid::result_of
 

The metafunction layer. Provides type generators that derive the respective type from the mesh configuration.


Functions

template<typename element_tag , typename mesh_type >
viennagrid::detail::result_of::lookup
< typename
viennagrid::detail::result_of::lookup
< typename
mesh_type::appendix_type,
boundary_information_collection_tag >
::type, element_tag >::type & 
boundary_information_collection (mesh_type &mesh_obj)
 For internal use only.
template<typename element_tag , typename mesh_type >
viennagrid::detail::result_of::lookup
< typename
viennagrid::detail::result_of::lookup
< typename
mesh_type::appendix_type,
boundary_information_collection_tag >
::type, element_tag >::type
const & 
boundary_information_collection (mesh_type const &mesh_obj)
 For internal use only.
template<typename WrappedConfigT >
void clear (mesh< WrappedConfigT > &mesh_)
 Completely clears a mesh.
template<typename element_tag , typename coboundary_tag , typename mesh_type >
viennagrid::detail::result_of::lookup
< typename
viennagrid::detail::result_of::lookup
< typename
mesh_type::appendix_type,
coboundary_collection_tag >
::type,
viennagrid::static_pair
< element_tag, coboundary_tag >
>::type & 
coboundary_collection (mesh_type &mesh_obj)
 For internal use only.
template<typename element_tag , typename coboundary_tag , typename mesh_type >
viennagrid::detail::result_of::lookup
< typename
viennagrid::detail::result_of::lookup
< typename
mesh_type::appendix_type,
coboundary_collection_tag >
::type,
viennagrid::static_pair
< element_tag, coboundary_tag >
>::type const & 
coboundary_collection (mesh_type const &mesh_obj)
 For internal use only.
template<typename WrappedMeshConfigT , typename HandleT >
viennagrid::detail::result_of::value_type
< HandleT >::type & 
dereference_handle (mesh< WrappedMeshConfigT > &mesh_obj, HandleT const &handle)
 Function for dereferencing a handle using a mesh/segment object.
template<typename WrappedMeshConfigT , typename HandleT >
viennagrid::detail::result_of::value_type
< HandleT >::type const & 
dereference_handle (mesh< WrappedMeshConfigT > const &mesh_obj, HandleT const &handle)
 Function for dereferencing a handle using a mesh/segment object, const version.
template<typename ConfigType >
viennagrid::mesh< ConfigType >
::element_collection_type & 
element_collection (viennagrid::mesh< ConfigType > &mesh_obj)
 For internal use only.
template<typename ConfigType >
viennagrid::mesh< ConfigType >
::element_collection_type
const & 
element_collection (viennagrid::mesh< ConfigType > const &mesh_obj)
 For internal use only.
template<typename ElementTypeOrTagT , typename WrappedConfigType >
result_of::element_range
< viennagrid::mesh
< WrappedConfigType >
, ElementTypeOrTagT >::type 
elements (viennagrid::mesh< WrappedConfigType > &mesh_obj)
 Function for retrieving an element range or a boundary element range from a mesh. Non-const version.
template<typename ElementTypeOrTagT , typename WrappedConfigType >
result_of::const_element_range
< viennagrid::mesh
< WrappedConfigType >
, ElementTypeOrTagT >::type 
elements (viennagrid::mesh< WrappedConfigType > const &mesh_obj)
 Function for retrieving an element range or a boundary element range from a mesh. Const version.
template<typename MeshSegmentHandleT , typename ElementTagT , typename WrappedConfigT >
viennagrid::result_of::iterator
< typename
viennagrid::result_of::element_range
< MeshSegmentHandleT,
ElementTagT >::type >::type 
find (MeshSegmentHandleT &mesh_or_segment, element< ElementTagT, WrappedConfigT > const &element)
 Function which finds an element based on an element. The runtime of this function depends on the container but can likely be linear in the number of elements of the requested type in the mesh.
template<typename MeshSegmentHandleT , typename ElementTagT , typename WrappedConfigT >
viennagrid::result_of::const_iterator
< typename
viennagrid::result_of::element_range
< MeshSegmentHandleT,
ElementTagT >::type >::type 
find (MeshSegmentHandleT const &mesh_or_segment, element< ElementTagT, WrappedConfigT > const &element)
 Function which finds an element based on an element, const version. The runtime of this function depends on the container but can likely be linear in the number of elements of the requested type in the mesh.
template<typename MeshSegmentHandleT , typename IDT >
viennagrid::result_of::iterator
< typename
viennagrid::result_of::element_range
< MeshSegmentHandleT, typename
IDT::value_type::tag >::type >
::type 
find (MeshSegmentHandleT &mesh_or_segment, IDT id)
 Function which finds an element based on an ID. The runtime of this function depends on the container but can likely be linear in the number of elements of the requested type in the mesh.
template<typename MeshSegmentHandleT , typename IDT >
viennagrid::result_of::const_iterator
< typename
viennagrid::result_of::element_range
< MeshSegmentHandleT, typename
IDT::value_type::tag >::type >
::type 
find (MeshSegmentHandleT const &mesh_or_segment, IDT id)
 Function which finds an element based on an ID, const version. The runtime of this function depends on the container but can likely be linear in the number of elements of the requested type in the mesh.
template<typename MeshSegmentHandleT , typename HandleT >
viennagrid::result_of::iterator
< typename
viennagrid::result_of::element_range
< MeshSegmentHandleT, typename
detail::result_of::value_type
< HandleT >::type >::type >
::type 
find_by_handle (MeshSegmentHandleT &mesh_or_segment, HandleT handle)
 Function which finds an element based on a handle. The runtime of this function is linear in the number of elements of the requested type in the mesh.
template<typename MeshSegmentHandleT , typename HandleT >
viennagrid::result_of::const_iterator
< typename
viennagrid::result_of::const_element_range
< MeshSegmentHandleT, typename
detail::result_of::value_type
< HandleT >::type >::type >
::type 
find_by_handle (MeshSegmentHandleT const &mesh_or_segment, HandleT handle)
 Function which finds an element based on a handle, const version. The runtime of this function is linear in the number of elements of the requested type in the mesh.
template<typename SourceWrappedConfigT , typename DestinationWrappedConfigT >
void fix_handles (viennagrid::mesh< SourceWrappedConfigT > const &source_mesh_obj, viennagrid::mesh< DestinationWrappedConfigT > &destination_mesh)
 For internal use only.
template<int TopologicDimensionV, typename MeshSegmentHandleT , typename FunctorT >
void for_each (MeshSegmentHandleT &mesh_or_segment, FunctorT f)
 Function which executes functor for each element with specific topologic dimension.
template<int TopologicDimensionV, typename MeshSegmentHandleT , typename FunctorT >
void for_each (MeshSegmentHandleT const &mesh_or_segment, FunctorT f)
 Function which executes functor for each element with specific topologic dimension, const version.
template<typename MeshSegmentHandleT , typename FunctorT >
void for_each (MeshSegmentHandleT &mesh_or_segment, FunctorT f)
 Function which executes functor for each element (of all topological dimensions) of the mesh or segment. Non-const version.
template<typename MeshSegmentHandleT , typename FunctorT >
void for_each (MeshSegmentHandleT const &mesh_or_segment, FunctorT f)
 Function which executes functor for each element (of all topological dimensions) of the mesh or segment. Const version.
template<typename MeshOrSegmentHandleT , typename ElementTagT , typename WrappedConfigT >
result_of::handle
< MeshOrSegmentHandleT,
viennagrid::element
< ElementTagT, WrappedConfigT >
>::type 
handle (MeshOrSegmentHandleT &mesh_or_segment, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for creating a handle for a given element using a mesh/segment object.
template<typename MeshOrSegmentHandleT , typename ElementTagT , typename WrappedConfigT >
result_of::const_handle
< MeshOrSegmentHandleT,
viennagrid::element
< ElementTagT, WrappedConfigT >
>::type 
handle (MeshOrSegmentHandleT const &mesh_or_segment, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for creating a handle for a given element using a mesh/segment object, const version.
template<typename MeshT , typename ViewT >
void handle_mesh (MeshT &mesh_obj, ViewT &view_obj)
 Function for inserting handles to all element from a mesh in a mesh view.
template<typename ConfigType >
viennagrid::mesh< ConfigType >
::inserter_type::id_generator_type & 
id_generator (viennagrid::mesh< ConfigType > &mesh_obj)
 For internal use only.
template<typename ConfigType >
viennagrid::mesh< ConfigType >
::inserter_type::id_generator_type
const & 
id_generator (viennagrid::mesh< ConfigType > const &mesh_obj)
 For internal use only.
template<typename ElementTypeOrTag , typename MeshOrSegmentHandleT >
viennagrid::result_of::id
< typename
viennagrid::result_of::element
< MeshOrSegmentHandleT,
ElementTypeOrTag >::type >
::type 
id_upper_bound (MeshOrSegmentHandleT const &mesh_or_segment)
 Function for obtaining the heighest ID for a specific element type/tag in a mesh/segment.
template<typename WrappedConfigType >
void increment_change_counter (viennagrid::mesh< WrappedConfigType > &mesh_obj)
 For internal use only.
template<typename ConfigType >
viennagrid::mesh< ConfigType >
::inserter_type & 
inserter (viennagrid::mesh< ConfigType > &mesh_obj)
 For internal use only.
template<typename ConfigType >
viennagrid::mesh< ConfigType >
::inserter_type const & 
inserter (viennagrid::mesh< ConfigType > const &mesh_obj)
 For internal use only.
template<typename WrappedConfigType >
bool is_obsolete (viennagrid::mesh< WrappedConfigType > const &mesh_obj, typename viennagrid::mesh< WrappedConfigType >::change_counter_type change_counter_to_check)
 For internal use only.
template<typename ElementTagT , typename WrappedConfigT , typename BoundaryHandleT >
viennagrid::result_of::vertex_handle
< viennagrid::element
< ElementTagT, WrappedConfigT >
>::type 
local_vertex (viennagrid::element< ElementTagT, WrappedConfigT > &host_element, BoundaryHandleT const &boundary_element_handle, std::size_t index)
 Function for querying a local vertex on a boundary element within a host element.
template<typename ElementTagT , typename WrappedConfigT , typename BoundaryHandleT >
viennagrid::result_of::const_vertex_handle
< viennagrid::element
< ElementTagT, WrappedConfigT >
>::type 
local_vertex (viennagrid::element< ElementTagT, WrappedConfigT > const &host_element, BoundaryHandleT const &boundary_element_handle, std::size_t index)
 Function for querying a local vertex on a boundary element within a host element, const version.
template<typename element_tag , typename connector_element_tag , typename mesh_type >
viennagrid::detail::result_of::lookup
< typename
viennagrid::detail::result_of::lookup
< typename
mesh_type::appendix_type,
neighbor_collection_tag >
::type,
viennagrid::static_pair
< element_tag,
connector_element_tag >
>::type & 
neighbor_collection (mesh_type &mesh_obj)
 For internal use only.
template<typename element_tag , typename connector_element_tag , typename mesh_type >
viennagrid::detail::result_of::lookup
< typename
viennagrid::detail::result_of::lookup
< typename
mesh_type::appendix_type,
neighbor_collection_tag >
::type,
viennagrid::static_pair
< element_tag,
connector_element_tag >
>::type const & 
neighbor_collection (mesh_type const &mesh_obj)
 For internal use only.
template<typename WrappedConfigT >
result_of::point
< viennagrid::mesh
< WrappedConfigT > >::type & 
point (viennagrid::mesh< WrappedConfigT > &, typename result_of::vertex< viennagrid::mesh< WrappedConfigT > >::type &vertex)
 Function for obtaining the point from a vertex.
template<typename WrappedConfigT >
result_of::point
< viennagrid::mesh
< WrappedConfigT > >::type
const & 
point (mesh< WrappedConfigT > const &, typename result_of::vertex< viennagrid::mesh< WrappedConfigT > >::type const &vertex)
 Function for obtaining the point from a vertex, const version.
template<typename WrappedConfigT >
result_of::point
< viennagrid::mesh
< WrappedConfigT > >::type & 
point (mesh< WrappedConfigT > &mesh_obj, typename result_of::vertex_handle< viennagrid::mesh< WrappedConfigT > >::type vertex_handle)
 Function for obtaining the point from a vertex.
template<typename WrappedConfigT >
result_of::point
< viennagrid::mesh
< WrappedConfigT > >::type
const & 
point (mesh< WrappedConfigT > const &mesh_obj, typename result_of::const_vertex_handle< viennagrid::mesh< WrappedConfigT > >::type vertex_handle)
 Function for obtaining the point from a vertex, const version.
template<typename VertexT >
result_of::point< VertexT >::type & point (VertexT &vertex)
 Function for obtaining the point from a vertex, no mesh needed.
template<typename VertexT >
result_of::point< VertexT >
::type const & 
point (VertexT const &vertex)
 Function for obtaining the point from a vertex, no mesh needed, const version.
template<bool generate_id, bool call_callback, typename mesh_type , typename ElementTag , typename WrappedConfigType >
std::pair< typename
viennagrid::result_of::container_of
< typename
viennagrid::result_of::element_collection
< mesh_type >::type,
viennagrid::element
< ElementTag,
WrappedConfigType >
>::type::handle_type, bool > 
push_element (mesh_type &mesh_obj, viennagrid::element< ElementTag, WrappedConfigType > const &element)
 For internal use only.
template<typename ElementTag , typename WrappedConfigType , typename VertexHandleType >
void set_vertex (viennagrid::element< ElementTag, WrappedConfigType > &element, VertexHandleType vertex_handle, unsigned int pos)
 Function for setting a vertex within an element. Don't use this unless you know what you are doing!
template<typename WrappedConfigType >
void update_change_counter (viennagrid::mesh< WrappedConfigType > &mesh_obj, typename viennagrid::mesh< WrappedConfigType >::change_counter_type &change_counter_to_update)
 For internal use only.

Detailed Description

Contains definition and implementation of mesh and mesh views.