ViennaGrid - The Vienna Grid Library
2.1.0
|
Contains definition and implementation of segmentations and segments. More...
#include <limits>
#include <string>
#include <sstream>
#include "viennagrid/forwards.hpp"
#include "viennagrid/mesh/mesh.hpp"
#include "viennagrid/accessor.hpp"
Go to the source code of this file.
Data Structures | |
struct | add_functor< SegmentT > |
For internal use only. More... | |
struct | cell_only_segmentation< MeshT, ViewT, SegmentIDType, AppendixType, view_container_tag > |
Metafunction for obtaining a segmentation type using only cells for a mesh type and with settings. Segment element information is not present (see segment_element_info for more information) More... | |
class | segment_info_t< element_segment_mapping_type, container_tag >::const_iterator |
class | segmentation< WrappedConfigType >::const_iterator |
Const iterator for iterating over all segments. More... | |
struct | copy_segmentation_functor< SourceMeshT, SourceSegmentationT, DestinationMeshT, DestinationSegmentationT > |
Functor for copying a segmentation. For internal use only. More... | |
struct | element_segment_mapping< segment_id_type_, segment_element_info_type_ > |
For internal use only. More... | |
struct | interface_information_collection_typemap< element_taglist, segment_id_type, interface_information_container_tag, ChangeCounterType > |
struct | interface_information_collection_typemap_impl< segment_id_type, interface_information_container_tag, ChangeCounterType, viennagrid::null_type > |
struct | interface_information_collection_typemap_impl< segment_id_type, interface_information_container_tag, ChangeCounterType, viennagrid::typelist< element_tag, tail > > |
struct | interface_information_wrapper< segment_id_type, container_type_, ChangeCounterType > |
For internal use only. More... | |
class | segmentation< WrappedConfigType >::iterator |
Iterator for iterating over all segments. More... | |
struct | mesh< viennagrid::segment_handle< SegmentationT > > |
Meta function for querying the mesh type of a segment handle. More... | |
struct | mesh< viennagrid::segmentation< WrappedConfigType > > |
Meta function for querying the mesh type of a segmentation. More... | |
struct | non_recursive_erase_functor< SegmentHandleT > |
struct | oriented_3d_hull_segmentation< MeshT, ViewT, SegmentIDType, AppendixType, view_container_tag > |
Metafunction for obtaining a segmentation type for a 3D hull mesh type and with settings. Segment element information is a bool (see segment_element_info for more information) More... | |
struct | segmentation< WrappedConfigType >::segment |
For internal use only. | |
class | segment_handle< viennagrid::segmentation< WrappedConfigType > > |
A segment defines a submesh within a segmentation. The segment_handle is used to deal with segments, since segments are not represented by a dedicated class. More... | |
class | segment_id_not_found_exception |
Provides an exception for the case a segment id cannot be found. More... | |
struct | segment_id_range< SegmentationT, ElementTypeOrTagT > |
Defines a range of segment IDs which represents segments in which an element is included. More... | |
struct | segment_id_range_t< SegmentInfoT > |
Defines a range of segment IDs which represents segments in which an element is included, use result_of::segment_id_range for defining this type. More... | |
struct | segment_info_t< element_segment_mapping_type, container_tag > |
Information container providing iteration over segments of a segmentation. More... | |
struct | segment_interface_information_wrapper< container_type_, ChangeCounterType > |
For internal use only. More... | |
class | segment_name_collision_exception |
Provides an exception for the case of a name collision of segment names. More... | |
class | segment_name_not_found_exception |
Provides an exception for the case a segment name cannot be found. More... | |
struct | segmentation< MeshT, ViewT, SegmentIDType, AppendixType, view_container_tag > |
Metafunction for obtaining a segmentation type for a mesh type and with settings. Segment element information is not present (see segment_element_info for more information) More... | |
class | segmentation< WrappedConfigType > |
A segmentation is a logical decomposition of the mesh (or a subset thereof) into segments. Segments may overlap. More... | |
struct | segmentation< viennagrid::segment_handle< const SegmentationT > > |
struct | segmentation< viennagrid::segment_handle< SegmentationT > > |
Returns the underlying segmentation type from a segment_handle (Segment) object. More... | |
struct | segmentation_info_container_typemap< viennagrid::null_type, segment_id_type, container_tag, segment_info_container_tag > |
struct | segmentation_info_container_typemap< viennagrid::typelist< viennagrid::static_pair< element_tag, segment_info_type >, tail >, segment_id_type, container_tag, segment_info_container_tag > |
struct | trivial_segmentation_appendix< viennagrid::null_type, segment_id_type, container_tag > |
struct | trivial_segmentation_appendix< viennagrid::typelist< element_type, tail >, segment_id_type, container_tag > |
struct | unchecked_add_functor< SegmentT > |
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::config |
Provides a number of predefined configuration classes, which cover the most frequent use cases. | |
namespace | viennagrid::detail |
Namespace for implementation details. Not intended to be used directly by a library user. | |
namespace | viennagrid::detail::result_of |
Namespace for metafunctions 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 segment_handle_type , typename element_segment_mapping_type , typename container_tag > | |
void | add (segment_handle_type &segment, segment_info_t< element_segment_mapping_type, container_tag > &segment_info) |
For internal use only. | |
template<typename segment_handle_type , typename accessor_type , typename element_type > | |
void | add (segment_handle_type &segment, accessor_type accessor, element_type &element) |
For internal use only. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
void | add (SegmentHandleT &segment, viennagrid::element< ElementTagT, WrappedConfigT > &element) |
Adds an element to a segment, all boundary elements are added recursively. | |
template<typename SegmentHandleT , typename ElementHandleT > | |
void | add (SegmentHandleT &segment, ElementHandleT element_handle) |
Adds an element to a segment, all boundary elements are added recursively. | |
template<typename WrappedConfigT , typename ElementTagT , typename WrappedElementConfigT > | |
void | add (segmentation< WrappedConfigT > &segmentation_obj, typename segmentation< WrappedConfigT >::segment_id_type segment_id, viennagrid::element< ElementTagT, WrappedElementConfigT > &element) |
Adds an element to a segment, all boundary elements are added recursively. | |
template<typename WrappedConfigT , typename ElementHandleT > | |
void | add (segmentation< WrappedConfigT > &segmentation_obj, typename segmentation< WrappedConfigT >::segment_id_type segment_id, ElementHandleT element_handle) |
Adds an element to a segment, all boundary elements are added recursively. | |
template<typename WrappedConfigT , typename SegmentIDIteratorT , typename ElementTagT , typename WrappedElementConfigT > | |
void | add (segmentation< WrappedConfigT > &segmentation_obj, SegmentIDIteratorT segment_ids_it, SegmentIDIteratorT const &segment_ids_end, viennagrid::element< ElementTagT, WrappedElementConfigT > &element) |
Adds an element to all segment provided in a segment id iterator range. | |
template<typename WrappedConfigT , typename SegmentIDIteratorT , typename ElementHandleT > | |
void | add (segmentation< WrappedConfigT > &segmentation_obj, SegmentIDIteratorT segment_ids_it, SegmentIDIteratorT const &segment_ids_end, ElementHandleT element_handle) |
Adds an element to all segment provided in a segment id iterator range. | |
template<typename ViewT , typename HandleT > | |
void | add_single_handle (ViewT &view_or_segment, HandleT handle) |
Adds a single element handle (no boundary elements/handles) to a view if it isn't already present in that view. The runtime of this function is linear in the number of elements present in the view. | |
template<typename SegmentationT > | |
void | clear (segment_handle< SegmentationT > &segment_) |
Completely clears a segmentation. | |
template<typename WrappedConfigT > | |
void | clear (segmentation< WrappedConfigT > &segmentation_) |
Completely clears a segmentation. | |
template<typename SourceMeshT , typename SourceSegmentationT , typename DestinationMeshT , typename DestinationSegmentationT > | |
void | copy_segmentation (SourceMeshT const &src_mesh_, SourceSegmentationT const &src_segmentation_, DestinationMeshT &dst_mesh_, DestinationSegmentationT &dst_segmentation_) |
Copies a segmentation. Warning: may be slow! | |
template<typename SegmentationT , typename HandleT > | |
detail::result_of::value_type < HandleT >::type & | dereference_handle (segment_handle< SegmentationT > &segment_handle, HandleT const &handle) |
Function for dereferencing a handle using a segment object. | |
template<typename SegmentationT , typename HandleT > | |
detail::result_of::value_type < HandleT >::type const & | dereference_handle (segment_handle< SegmentationT > const &segment_handle, HandleT const &handle) |
Function for dereferencing a handle using a segment object. | |
template<typename WrappedConfigT , typename HandleT > | |
detail::result_of::value_type < HandleT >::type & | dereference_handle (segmentation< WrappedConfigT > &segmentation_, HandleT const &handle) |
Function for dereferencing a handle using a segmentation. | |
template<typename WrappedConfigT , typename HandleT > | |
detail::result_of::value_type < HandleT >::type const & | dereference_handle (segmentation< WrappedConfigT > const &segmentation_, HandleT const &handle) |
Function for dereferencing a handle using a segmentation. | |
template<typename SegmentationType > | |
viennagrid::segment_handle < SegmentationType > ::view_type::element_collection_type & | element_collection (segment_handle< SegmentationType > &segment) |
For internal use only. | |
template<typename SegmentationType > | |
viennagrid::segment_handle < SegmentationType > ::view_type::element_collection_type const & | element_collection (segment_handle< SegmentationType > const &segment) |
For internal use only. | |
template<typename WrappedConfigT > | |
viennagrid::segmentation < WrappedConfigT > ::view_type::element_collection_type & | element_collection (viennagrid::segmentation< WrappedConfigT > &segmentation) |
For internal use only. | |
template<typename WrappedConfigT > | |
viennagrid::segmentation < WrappedConfigT > ::view_type::element_collection_type const & | element_collection (viennagrid::segmentation< WrappedConfigT > const &segmentation) |
For internal use only. | |
template<typename SegmentationT > | |
viennagrid::detail::result_of::lookup < typename SegmentationT::appendix_type, element_segment_mapping_tag > ::type & | element_segment_mapping_collection (SegmentationT &segmentation) |
template<typename SegmentationT > | |
viennagrid::detail::result_of::lookup < typename SegmentationT::appendix_type, element_segment_mapping_tag > ::type const & | element_segment_mapping_collection (SegmentationT const &segmentation) |
template<typename segment_handle_type > | |
viennagrid::detail::result_of::lookup < typename segment_handle_type::segmentation_type::appendix_type, element_segment_mapping_tag > ::type & | element_segment_mapping_collection (segment_handle_type &segment) |
template<typename segment_handle_type > | |
viennagrid::detail::result_of::lookup < typename segment_handle_type::segmentation_type::appendix_type, element_segment_mapping_tag > ::type const & | element_segment_mapping_collection (segment_handle_type const &segment) |
template<typename SegmentHandleT , typename ElementSegmentMappingT , typename ContainerTagT > | |
void | erase (SegmentHandleT &segment, segment_info_t< ElementSegmentMappingT, ContainerTagT > &segment_info) |
For internal use only. | |
template<typename SegmentHandleT , typename AccessorT , typename ElementT > | |
void | erase (SegmentHandleT &segment, AccessorT accessor, ElementT const &element) |
For internal use only. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
void | erase (SegmentHandleT &segment, viennagrid::element< ElementTagT, WrappedConfigT > &element) |
Deletes an element from a segment. The runtime of this function is linear in the number of elements of the element type to delete. | |
template<typename SegmentationType , typename ElementTagT , typename WrappedConfigT > | |
result_of::handle < segment_handle < SegmentationType > , viennagrid::element < ElementTagT, WrappedConfigT > >::type | handle (segment_handle< SegmentationType > &mesh_or_segment, viennagrid::element< ElementTagT, WrappedConfigT > &element) |
Function for creating a handle for a given element using a mesh/segment object. | |
template<typename SegmentationType , typename ElementTagT , typename WrappedConfigT > | |
result_of::const_handle < segment_handle < SegmentationType > , viennagrid::element < ElementTagT, WrappedConfigT > >::type | handle (segment_handle< SegmentationType > 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 SegmentationType > | |
viennagrid::segment_handle < SegmentationType > ::view_type::inserter_type::id_generator_type & | id_generator (segment_handle< SegmentationType > &segment) |
For internal use only. | |
template<typename SegmentationType > | |
viennagrid::segment_handle < SegmentationType > ::view_type::inserter_type::id_generator_type const & | id_generator (segment_handle< SegmentationType > const &segment) |
For internal use only. | |
template<typename ElementTypeOrTag , typename SegmentationType > | |
viennagrid::result_of::id < typename viennagrid::result_of::element < segment_handle < SegmentationType > , ElementTypeOrTag >::type > ::type | id_upper_bound (segment_handle< SegmentationType > const &segment) |
Function for obtaining the heighest ID for a specific element type/tag in a segment. | |
template<typename SegmentationType > | |
void | increment_change_counter (segment_handle< SegmentationType > &segment) |
For internal use only. | |
template<typename SegmentationType > | |
viennagrid::segment_handle < SegmentationType > ::view_type::inserter_type & | inserter (segment_handle< SegmentationType > &segment) |
For internal use only. | |
template<typename SegmentationType > | |
viennagrid::segment_handle < SegmentationType > ::view_type::inserter_type const & | inserter (segment_handle< SegmentationType > const &segment) |
For internal use only. | |
template<typename element_tag , typename segment_handle_type > | |
viennagrid::detail::result_of::lookup < typename viennagrid::detail::result_of::lookup < typename segment_handle_type::segmentation_type::appendix_type, interface_information_collection_tag > ::type, element_tag > ::type::segment_interface_information_wrapper_type & | interface_information_collection (segment_handle_type &seg0, segment_handle_type &seg1) |
template<typename element_tag , typename segment_handle_type > | |
viennagrid::detail::result_of::lookup < typename viennagrid::detail::result_of::lookup < typename segment_handle_type::segmentation_type::appendix_type, interface_information_collection_tag > ::type, element_tag > ::type::segment_interface_information_wrapper_type const & | interface_information_collection (segment_handle_type const &seg0, segment_handle_type const &seg1) |
template<typename segment_handle_type , typename element_segment_mapping_type , typename container_tag > | |
bool | is_in_segment (segment_handle_type const &segment, segment_info_t< element_segment_mapping_type, container_tag > const &segment_info) |
For internal use only. | |
template<typename segment_handle_type , typename accessor_type , typename element_type > | |
bool | is_in_segment (segment_handle_type const &segment, accessor_type const accessor, element_type const &element) |
For internal use only. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
bool | is_in_segment (SegmentHandleT const &segment, viennagrid::element< ElementTagT, WrappedConfigT > const &element) |
Queries if element is within a given segment. | |
template<typename SegmentationType > | |
bool | is_obsolete (segment_handle< SegmentationType > const &segment, typename segment_handle< SegmentationType >::view_type::change_counter_type change_counter_to_check) |
For internal use only. | |
template<typename SegmentationT > | |
mesh_proxy< typename SegmentationT::view_type > | make_view (segment_handle< SegmentationT > &segment) |
Creates an empty view out of a segment. | |
template<typename SegmentationType > | |
result_of::point < segment_handle < SegmentationType > >::type & | point (segment_handle< SegmentationType > &segment, typename result_of::vertex< typename SegmentationType::mesh_type >::type &vertex) |
Function for obtaining the point from a vertex. | |
template<typename SegmentationType > | |
result_of::point < segment_handle < SegmentationType > >::type const & | point (segment_handle< SegmentationType > const &segment, typename result_of::vertex< typename SegmentationType::mesh_type >::type const &vertex) |
Function for obtaining the point from a vertex, const version. | |
template<typename SegmentationType > | |
result_of::point < segment_handle < SegmentationType > >::type & | point (segment_handle< SegmentationType > &segment, typename result_of::vertex_handle< typename SegmentationType::mesh_type >::type vertex_handle) |
Function for obtaining the point from a vertex. | |
template<typename SegmentationType > | |
result_of::point < segment_handle < SegmentationType > >::type const & | point (segment_handle< SegmentationType > const &segment, typename result_of::const_vertex_handle< typename SegmentationType::mesh_type >::type vertex_handle) |
Function for obtaining the point from a vertex, const version. | |
template<bool generate_id, bool call_callback, typename SegmentationType , typename ElementTag , typename WrappedConfigType > | |
std::pair< typename viennagrid::result_of::container_of < typename viennagrid::result_of::element_collection < viennagrid::segment_handle < SegmentationType > >::type, viennagrid::element < ElementTag, WrappedConfigType > >::type::handle_type, bool > | push_element (viennagrid::segment_handle< SegmentationType > &segment, viennagrid::element< ElementTag, WrappedConfigType > const &element) |
For internal use only. | |
template<typename segment_handle_type , typename element_segment_mapping_type , typename container_tag > | |
element_segment_mapping_type::segment_element_info_type * | segment_element_info (segment_handle_type const &segment, segment_info_t< element_segment_mapping_type, container_tag > &segment_info) |
For internal use only. | |
template<typename segment_handle_type , typename element_segment_mapping_type , typename container_tag > | |
element_segment_mapping_type::segment_element_info_type const * | segment_element_info (segment_handle_type const &segment, segment_info_t< element_segment_mapping_type, container_tag > const &segment_info) |
For internal use only. | |
template<typename segment_handle_type , typename accessor_type , typename element_type > | |
accessor_type::value_type::segment_element_info_type * | segment_element_info (segment_handle_type &segment, accessor_type accessor, element_type const &element) |
For internal use only. | |
template<typename segment_handle_type , typename accessor_type , typename element_type > | |
accessor_type::value_type::segment_element_info_type const * | segment_element_info (segment_handle_type const &segment, const accessor_type accessor, element_type const &element) |
For internal use only. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
viennagrid::result_of::container_of < typename viennagrid::detail::result_of::lookup < typename SegmentHandleT::segmentation_type::appendix_type, viennagrid::detail::element_segment_mapping_tag > ::type, viennagrid::element < ElementTagT, WrappedConfigT > >::type::value_type::segment_element_info_type const * | segment_element_info (SegmentHandleT const &segment, viennagrid::element< ElementTagT, WrappedConfigT > const &element) |
Returns a pointer to additional segment element information. Segment element information is meta information for a combination of a segment and an element, e.g. the orientation of a triangle in a segment in a 3D hull mesh. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
viennagrid::result_of::container_of < typename viennagrid::detail::result_of::lookup < typename SegmentHandleT::segmentation_type::appendix_type, viennagrid::detail::element_segment_mapping_tag > ::type, viennagrid::element < ElementTagT, WrappedConfigT > >::type::value_type::segment_element_info_type * | segment_element_info (SegmentHandleT &segment, viennagrid::element< ElementTagT, WrappedConfigT > const &element) |
Returns a pointer to additional segment element information. Segment element information is meta information for a combination of a segment and an element, e.g. the orientation of a triangle in a segment in a 3D hull mesh. Const version. | |
template<typename SegmentationT , typename ElementTagT , typename WrappedConfigT > | |
result_of::segment_id_range < SegmentationT, viennagrid::element < ElementTagT, WrappedConfigT > >::type | segment_ids (SegmentationT const &segmentation, viennagrid::element< ElementTagT, WrappedConfigT > const &element) |
Obtains the segment ID range of an element within a segmentation. The segment ID range holds all IDs of segments in which the element is included. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
void | simple_add (SegmentHandleT &segment, viennagrid::element< ElementTagT, WrappedConfigT > &element) |
For internal use only. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
void | simple_unchecked_add (SegmentHandleT &segment, viennagrid::element< ElementTagT, WrappedConfigT > &element) |
For internal use only. | |
template<typename SegmentHandleT , typename ElementTagT , typename WrappedConfigT > | |
void | unchecked_add (SegmentHandleT &segment, viennagrid::element< ElementTagT, WrappedConfigT > &element) |
Adds an element to a segment, all boundary elements are added recursively, does guarantee that elements are only present once within the segment. | |
template<typename SegmentHandleT , typename ElementHandleT > | |
void | unchecked_add (SegmentHandleT &segment, ElementHandleT element_handle) |
Adds an element to a segment, all boundary elements are added recursively, does guarantee that elements are only present once within the segment. | |
template<typename SegmentationType > | |
void | update_change_counter (segment_handle< SegmentationType > &segment, typename segment_handle< SegmentationType >::view_type::change_counter_type &change_counter_to_update) |
For internal use only. |
Contains definition and implementation of segmentations and segments.