ViennaGrid - The Vienna Grid Library  2.1.0
Namespaces | Data Structures | Typedefs | Functions
viennagrid Namespace Reference

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

Namespaces

namespace  config
 

Provides a number of predefined configuration classes, which cover the most frequent use cases.


namespace  detail
 

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


namespace  io
 

A namespace with all the input/output functionality, in particular file readers and writers.


namespace  result_of
 

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


Data Structures

struct  affine_transform_functor
 Affine transform functor using a ScalarType * as matrix (row major layout) and a translation vector. More...
class  appendix_accessor
 Accessor class for the data members appended (injected) to an element. More...
class  base_dynamic_accessor
 Base class for all dynamic accessor. More...
class  base_dynamic_field
 Common base class for dynamic data accessors fulfilling the field concept. More...
struct  base_id_unpack
struct  boundary_elements
 Helper class for defining boundary element information. More...
struct  boundary_elements< hypercube_tag< 2 >, simplex_tag< 0 > >
 Topological description of the 0-cells (vertices) of a quadrilateral. More...
struct  boundary_elements< hypercube_tag< 2 >, simplex_tag< 1 > >
 Topological description of the 1-cells (edges/lines) of a quadrilateral. More...
struct  boundary_elements< hypercube_tag< 3 >, hypercube_tag< 2 > >
 Topological description of the 2-cells (quadrilateral faces) of a hexahedron. More...
struct  boundary_elements< hypercube_tag< 3 >, simplex_tag< 0 > >
 Topological description of the 0-cells (vertices) of a hexahedron. More...
struct  boundary_elements< hypercube_tag< 3 >, simplex_tag< 1 > >
 Topological description of the 1-cells (edges/lines) of a hexahedron. More...
struct  boundary_elements< plc_tag, line_tag >
 Topological description of the 1-cells (edges/lines) of a polygon. More...
struct  boundary_elements< plc_tag, vertex_tag >
 Topological description of the 0-cells of a polygon. More...
struct  boundary_elements< polygon_tag, line_tag >
 Topological description of the 1-cells (edges/lines) of a polygon. More...
struct  boundary_elements< polygon_tag, vertex_tag >
 Topological description of the 0-cells of a polygon. More...
struct  boundary_elements< simplex_tag< n >, simplex_tag< k > >
 Topological description of the boundary k-cells an n-simplex. More...
struct  boundary_information_collection_tag
 A tag for identifying boundary information. More...
struct  cartesian_cs
 Provides the basic operations in a cartesian coordinate system. More...
struct  coboundary_collection_tag
 A tag for identifying the coboundary collection. More...
class  collection
 A collection is a compile-time map which returns objects of (possibly distinct) type based on the provided key type. More...
class  continuous_id_generator
 A generator which returns numerical IDs (of possibly different type) in a continuous fashion starting from zero for each requested type. More...
class  coordinate_converter
 A conversion facility for transformations between coordinate systems. More...
class  coordinate_converter< FromPointType, ToPointType, cartesian_cs< 2 >, polar_cs >
 A functor for the transformation from two-dimensional Cartesian coordinates to polar coodinates. More...
class  coordinate_converter< FromPointType, ToPointType, cartesian_cs< 3 >, cylindrical_cs >
 A functor for the transformation from three-dimensional Cartesian coordinates to cylindrical coodinates. More...
class  coordinate_converter< FromPointType, ToPointType, cartesian_cs< 3 >, spherical_cs >
 A functor for the transformation from three-dimensional Cartesian coordinates to spherical coodinates. More...
class  coordinate_converter< FromPointType, ToPointType, cylindrical_cs, cartesian_cs< 3 > >
 A functor for the transformation from cylindrical coodinates to three-dimensional Cartesian coordinates. More...
class  coordinate_converter< FromPointType, ToPointType, cylindrical_cs, spherical_cs >
 A functor for the transformation from cylindrical coordinates to spherical coodinates. More...
class  coordinate_converter< FromPointType, ToPointType, polar_cs, cartesian_cs< 2 > >
 A functor for the transformation from polar coordinates to two-dimensional Cartesian coordinates. More...
class  coordinate_converter< FromPointType, ToPointType, spherical_cs, cartesian_cs< 3 > >
 A functor for the transformation from spherical coodinates to three-dimensional Cartesian coordinates. More...
class  coordinate_converter< FromPointType, ToPointType, spherical_cs, cylindrical_cs >
 A functor for the transformation from spherical coodinates to cylindrical coordinates. More...
struct  cs_base
 Common base for all non-cartesian coordinate systems. More...
struct  cylindrical_cs
 Provides the basic operations in a cylindrical coordinate system (rho, theta, z) More...
class  dense_container_accessor
 Implementation of an accessor for dense containers (most importantly std::vector, std::deque) which fulfills the accessor concept. More...
class  dense_container_field
 Accessor class implementing the field concept for dense containers (most importantly std::vector<> and std::deque<>). More...
struct  dimension_tag
 A helper tag for dispatches based on the geometrical or topological dimension. More...
class  dynamic_accessor_wrapper
 A dynamic accessor class which wraps any user accessor type fulfilling the accessor concept. More...
class  dynamic_field_wrapper
 A dynamic accessor class which wraps any user accessor type fulfilling the field concept. More...
struct  dynamic_layout_tag
 Tag that indicates that a dynamic container has to be used for storing the boundary element handles (e.g. polygon and plc) More...
class  element
 The main element class in ViennaGrid, representing vertices, edges, triangles, etc. More...
class  element_extension
 A class for injecting additional members into topological elements (Vertex, Edge, etc.) More...
class  element_key
 A key type that uniquely identifies an element by its vertices. More...
struct  element_key_tag
 A tag for selecting element_key as a key type within metafunctions. More...
class  element_orientation
 A permutator for mapping local orientations to global vertices of a boundary k-cell. More...
struct  full_handling_tag
 A tag denoting full storage of boundary elements of a certain topological element. More...
struct  full_lazy_handling_tag
 A tag denoting lazy handling of boundary elements. Reserved for future use. More...
struct  handled_container_tag
 A tag indicating that a handled container is used. More...
class  hidden_key_map
 STL-like map where the key is automatically deduced from the value object (hence 'hidden'). More...
class  hidden_key_map_const_iterator
 A const-iterator over all values of a hidden_key_map. More...
class  hidden_key_map_const_reverse_iterator
 A const-iterator over all values of a hidden_key_map in reverse direction. More...
class  hidden_key_map_iterator
 An iterator over all values of a hidden_key_map. More...
class  hidden_key_map_reverse_iterator
 A iterator over all values of a hidden_key_map in reverse direction. More...
struct  hidden_key_map_tag
 A tag for selecting a hidden key map as a storage type. More...
struct  hypercube_tag< 1 >
 Topological description of a 1-cell (line). Same as simplex_tag<1>. More...
struct  hypercube_tag< 2 >
 Topological description of a quadrilateral. More...
struct  hypercube_tag< 3 >
 A hypercube of dimension 3, aka. hexahedron. More...
struct  id_handle_tag
 A tag defining that ID handles are used. More...
struct  id_unpack
struct  inf_norm_tag
 Tag for denoting the infinity-norm. More...
struct  interface_information_collection_tag
 A tag identifying interface information. More...
struct  iterator_handle_tag
 A tag defining that iterator handles are used. More...
struct  make_element_impl
struct  make_element_impl< plc_tag >
struct  make_typelist
 Convenience meta function for creating a typelist out of the provided types. More...
class  mesh
 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_proxy
 Proxy object for a mesh. This is used for wrapping a mesh/mesh view when creating a view. More...
struct  neighbor_collection_tag
 A tag for identifying the neighbor element collection. More...
struct  no_handle_tag
 A tag defining that no handles are used. More...
struct  no_handling_tag
 A tag denoting that the boundary elements should not be stored at all. More...
struct  no_orientation_handling_tag
 A tag denoting that the boundary elements should stored without orientation. More...
struct  no_orientation_lazy_handling_tag
 A tag denoting that orientation should be stored/computed only on request ('lazy'). More...
class  not_found
 Empty type indicating that an element in a typelist/typemap wasn't found. More...
class  null_type
 An empty type, used within typelists and typemaps. More...
struct  one_norm_tag
 Tag for denoting the 1-norm. More...
class  out_of_range
 Empty type used to indicate that an element in a typelist/typemap is out of range. More...
class  physical_inserter
 An inserter class which adds elements to a the provided container collection. For example, this inserts a triangle into a segment s, but not into the mesh or segment where s was derived from. More...
struct  plc_tag
 A tag for identifying piecewise linear complexes (PLCs) More...
struct  point_filler
 A helper class for filling point coordinates with values. More...
struct  point_filler< CoordType, 1 >
 A helper class for filling point coordinates with values. Specialization for one dimension. More...
struct  point_filler< CoordType, 2 >
 A helper class for filling point coordinates with values. Specialization for two dimensions. More...
struct  point_filler< CoordType, 3 >
 A helper class for filling point coordinates with values. Specialization for three dimensions. More...
class  point_index_out_of_bounds_exception
 An exception class for invalid point indices. More...
struct  point_less
 This class provides a less-than comparison for points. Entries are checked for inequality, starting from the first and continuing only in the case of equality. More...
struct  pointer_handle_tag
 A tag defining that pointer handles are used. More...
struct  polar_cs
 Provides the basic operations in a polar coordinate system (r, phi) More...
struct  polygon_tag
 A tag representing polygons. More...
class  recursive_inserter
 Recursive inserter which inserts an element into the provided collection and all dependent collections. More...
struct  scale_functor
 Scale functor with scaling factor and scale center. More...
struct  seg_cell_normal_data
 Data type for cell normals in algorithm/cell_normals.hpp (to be added in a future release) More...
struct  seg_cell_normal_tag
 Types for cell normals in algorithm/cell_normals.hpp (to be added in a future release) More...
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_t
 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...
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...
class  segmentation
 A segmentation is a logical decomposition of the mesh (or a subset thereof) into segments. Segments may overlap. More...
struct  segmented_mesh
 A segmented_mesh is a mesh together with a segmentation. More...
struct  segmented_mesh< viennagrid::mesh< WrappedMeshConfig >, viennagrid::segmentation< WrappedSegmentationConfig > >
 A specialization for viennagrid meshes and segmentation. More...
struct  simplex_tag
 Topological description of an n-simplex. More...
struct  simplex_tag< 0 >
 Topological description of a 0-cell (vertex). More...
class  spatial_point
 Main point class of ViennaGrid. Represents a geometric location inside the respective Euclidian space. More...
struct  spherical_cs
 Provides the basic operations in a spherical coordinate system (r, theta, phi) with theta denoting the elevation angle. More...
class  static_array
 Reimplementation of std::array<> because we cannot reasonably expect that C++11 is available on all target machines. More...
struct  static_array_tag
 A tag indicating that storage::static_array should be used. More...
struct  static_layout_tag
 Tag that indicates that a static container can be used for storing the boundary element handles (e.g. used in simplices and hypercubes) More...
struct  static_pair
 A static pair time. To be seen as the equivalent of std::pair<>, but for metaprogramming. More...
class  std_map_accessor
 An accessor (fulfilling the accessor concept) for a container of interface similar to std::map<> More...
class  std_map_field
 An accessor (fulfilling the field concept) for a container of interface similar to std::map<> More...
struct  true_functor
 A trivial functor which always returns true. More...
struct  two_norm_tag
 Tag for denoting the 2-norm. More...
struct  typelist
 Implementation of a typelist as described by Alexandrescu in his book "Modern C++ Programming". More...
class  vertex_copy_map
 A helper class for element copy operation between two differen meshes. More...
class  view
 A view holds references to a subset of elements in another elements, but represents itself to the outside as another container. More...

Typedefs

typedef vertex_1d_cell brep_1d_cell
 A default cell for a boundary representation in 1d: vertex 1d.
typedef vertex_1d_mesh brep_1d_mesh
 A default mesh for a boundary representation in 1d: vertex 1d.
typedef vertex_1d_segment_handle brep_1d_segment_handle
 A segment for a boundary representation in 1d: vertex 1d.
typedef vertex_1d_segmentation brep_1d_segmentation
 A segmentation for a boundary representation in 1d: vertex 1d.
typedef vertex_1d_view brep_1d_view
 A default view for a boundary representation in 1d: vertex 1d.
typedef line_2d_cell brep_2d_cell
 A default cell for a boundary representation in 2d: line 2d.
typedef line_2d_mesh brep_2d_mesh
 A default mesh for a boundary representation in 2d: line 2d.
typedef line_2d_segment_handle brep_2d_segment_handle
 A segment for a boundary representation in 2d: line 2d.
typedef line_2d_segmentation brep_2d_segmentation
 A segmentation for a boundary representation in 2d: line 2d.
typedef line_2d_view brep_2d_view
 A default view for a boundary representation in 2d: line 2d.
typedef plc_3d_cell brep_3d_cell
 A default cell for a boundary representation in 3d: plc 3d.
typedef plc_3d_mesh brep_3d_mesh
 A default mesh for a boundary representation in 3d: plc 3d.
typedef plc_3d_segment_handle brep_3d_segment_handle
 A segment for a boundary representation in 3d: plc 3d.
typedef plc_3d_segmentation brep_3d_segmentation
 A segmentation for a boundary representation in 3d: plc 3d.
typedef plc_3d_view brep_3d_view
 A default view for a boundary representation in 3d: plc 3d.
typedef
viennagrid::result_of::segment_handle
< cell_only_line_1d_segmentation >
::type 
cell_only_line_1d_segment_handle
 A thin segment for lines including only cells in 1d, thin config is used.
typedef
viennagrid::result_of::cell_only_segmentation
< line_1d_mesh >::type 
cell_only_line_1d_segmentation
 A thin segmentation for lines including only cells in 1d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< cell_only_line_2d_segmentation >
::type 
cell_only_line_2d_segment_handle
 A thin segment for lines including only cells in 2d, thin config is used.
typedef
viennagrid::result_of::cell_only_segmentation
< line_2d_mesh >::type 
cell_only_line_2d_segmentation
 A thin segmentation for lines including only cells in 2d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< cell_only_line_3d_segmentation >
::type 
cell_only_line_3d_segment_handle
 A thin segment for lines including only cells in 3d, thin config is used.
typedef
viennagrid::result_of::cell_only_segmentation
< line_3d_mesh >::type 
cell_only_line_3d_segmentation
 A thin segmentation for lines including only cells in 3d, thin config is used.
typedef
viennagrid::make_typemap
< default_tag, std_deque_tag >
::type 
default_container_config
 A typemap defining default container configuration for a container collection.
typedef
viennagrid::make_typemap
< default_tag, std_set_tag
< id_compare_tag > >::type 
default_view_container_config
 A typemap defining default container configuration for a view container collection.
typedef std::size_t dim_type
 A global size_type equivalent for use throughout ViennaData.
typedef simplex_tag< 1 > edge_tag
 Convenience type definition for a line (same as line_tag)
typedef
viennagrid::result_of::cell
< hexahedral_3d_mesh >::type 
hexahedral_3d_cell
 A default cell for hexahedrons in 3d, default config is used.
typedef viennagrid::mesh
< config::hexahedral_3d
hexahedral_3d_mesh
 A default mesh for hexahedrons in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< hexahedral_3d_segmentation >
::type 
hexahedral_3d_segment_handle
 A default segment for hexahedrons in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< hexahedral_3d_mesh >::type 
hexahedral_3d_segmentation
 A default segmentation for hexahedrons in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< hexahedral_3d_mesh >::type 
hexahedral_3d_view
 A default mesh view for hexahedrons in 3d, default config is used.
typedef hypercube_tag< 3 > hexahedron_tag
 Convenience type definition for a hexahedron.
typedef
viennagrid::result_of::cell
< line_1d_mesh >::type 
line_1d_cell
 A default cell for lines in 1d, default config is used.
typedef viennagrid::mesh
< config::line_1d
line_1d_mesh
 A default mesh for lines in 1d, default config is used.
typedef
viennagrid::result_of::segment_handle
< line_1d_segmentation >::type 
line_1d_segment_handle
 A default segment for lines in 1d, default config is used.
typedef
viennagrid::result_of::segmentation
< line_1d_mesh >::type 
line_1d_segmentation
 A default segmentation for lines in 1d, default config is used.
typedef
viennagrid::result_of::mesh_view
< line_1d_mesh >::type 
line_1d_view
 A default mesh view for lines in 1d, default config is used.
typedef
viennagrid::result_of::cell
< line_2d_mesh >::type 
line_2d_cell
 A default cell for lines in 2d, default config is used.
typedef viennagrid::mesh
< config::line_2d
line_2d_mesh
 A default mesh for lines in 2d, default config is used.
typedef
viennagrid::result_of::segment_handle
< line_2d_segmentation >::type 
line_2d_segment_handle
 A default segment for lines in 2d, default config is used.
typedef
viennagrid::result_of::segmentation
< line_2d_mesh >::type 
line_2d_segmentation
 A default segmentation for lines in 2d, default config is used.
typedef
viennagrid::result_of::mesh_view
< line_2d_mesh >::type 
line_2d_view
 A default mesh view for lines in 2d, default config is used.
typedef
viennagrid::result_of::cell
< line_3d_mesh >::type 
line_3d_cell
 A default cell for lines in 3d, default config is used.
typedef viennagrid::mesh
< config::line_3d
line_3d_mesh
 A default mesh for lines in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< line_3d_segmentation >::type 
line_3d_segment_handle
 A default segment for lines in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< line_3d_mesh >::type 
line_3d_segmentation
 A default segmentation for lines in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< line_3d_mesh >::type 
line_3d_view
 A default mesh view for lines in 3d, default config is used.
typedef simplex_tag< 1 > line_tag
 Convenience type definition for a line (same as edge_tag)
typedef
viennagrid::result_of::cell
< plc_3d_mesh >::type 
plc_3d_cell
 A default cell for PLCs in 3d, default config is used.
typedef viennagrid::mesh
< config::plc_3d
plc_3d_mesh
 A default mesh for PLCs in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< plc_3d_segmentation >::type 
plc_3d_segment_handle
 A default segment for PLCs in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< plc_3d_mesh >::type 
plc_3d_segmentation
 A default segmentation for PLCs in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< plc_3d_mesh >::type 
plc_3d_view
 A default mesh view for PLCs in 3d, default config is used.
typedef
viennagrid::result_of::cell
< polygonal_2d_mesh >::type 
polygonal_2d_cell
 A default cell for polygons in 2d, default config is used.
typedef viennagrid::mesh
< config::polygonal_2d
polygonal_2d_mesh
 A default mesh for polygons in 2d, default config is used.
typedef
viennagrid::result_of::segment_handle
< polygonal_2d_segmentation >
::type 
polygonal_2d_segment_handle
 A default segment for polygons in 2d, default config is used.
typedef
viennagrid::result_of::segmentation
< polygonal_2d_mesh >::type 
polygonal_2d_segmentation
 A default segmentation for polygons in 2d, default config is used.
typedef
viennagrid::result_of::mesh_view
< polygonal_2d_mesh >::type 
polygonal_2d_view
 A default mesh view for polygons in 2d, default config is used.
typedef
viennagrid::result_of::cell
< polygonal_3d_mesh >::type 
polygonal_3d_cell
 A default cell for polygons in 3d, default config is used.
typedef viennagrid::mesh
< config::polygonal_3d
polygonal_3d_mesh
 A default mesh for polygons in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< polygonal_3d_segmentation >
::type 
polygonal_3d_segment_handle
 A default segment for polygons in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< polygonal_3d_mesh >::type 
polygonal_3d_segmentation
 A default segmentation for polygons in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< polygonal_3d_mesh >::type 
polygonal_3d_view
 A default mesh view for polygons in 3d, default config is used.
typedef
viennagrid::result_of::cell
< quadrilateral_2d_mesh >
::type 
quadrilateral_2d_cell
 A default cell for quadrilaterals in 2d, default config is used.
typedef viennagrid::mesh
< config::quadrilateral_2d
quadrilateral_2d_mesh
 A default mesh for quadrilaterals in 2d, default config is used.
typedef
viennagrid::result_of::segment_handle
< quadrilateral_2d_segmentation >
::type 
quadrilateral_2d_segment_handle
 A default segment for quadrilaterals in 2d, default config is used.
typedef
viennagrid::result_of::segmentation
< quadrilateral_2d_mesh >
::type 
quadrilateral_2d_segmentation
 A default segmentation for quadrilaterals in 2d, default config is used.
typedef
viennagrid::result_of::mesh_view
< quadrilateral_2d_mesh >
::type 
quadrilateral_2d_view
 A default mesh view for quadrilaterals in 2d, default config is used.
typedef
viennagrid::result_of::cell
< quadrilateral_3d_mesh >
::type 
quadrilateral_3d_cell
 A default cell for quadrilaterals in 3d, default config is used.
typedef viennagrid::mesh
< config::quadrilateral_3d
quadrilateral_3d_mesh
 A default mesh for quadrilaterals in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< quadrilateral_3d_segmentation >
::type 
quadrilateral_3d_segment_handle
 A default segment for quadrilaterals in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< quadrilateral_3d_mesh >
::type 
quadrilateral_3d_segmentation
 A default segmentation for quadrilaterals in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< quadrilateral_3d_mesh >
::type 
quadrilateral_3d_view
 A default mesh view for quadrilaterals in 3d, default config is used.
typedef hypercube_tag< 2 > quadrilateral_tag
 Convenience type definition for a quadrilateral.
typedef
viennagrid::result_of::cell
< tetrahedral_3d_mesh >::type 
tetrahedral_3d_cell
 A default cell for tetrahedrons in 3d, default config is used.
typedef viennagrid::mesh
< config::tetrahedral_3d
tetrahedral_3d_mesh
 A default mesh for tetrahedrons in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< tetrahedral_3d_segmentation >
::type 
tetrahedral_3d_segment_handle
 A default segment for tetrahedrons in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< tetrahedral_3d_mesh >::type 
tetrahedral_3d_segmentation
 A default segmentation for tetrahedrons in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< tetrahedral_3d_mesh >::type 
tetrahedral_3d_view
 A default mesh view for tetrahedrons in 3d, default config is used.
typedef simplex_tag< 3 > tetrahedron_tag
 Convenience type definition for a tetrahedron.
typedef
viennagrid::result_of::segment_handle
< thin_cell_only_tetrahedral_3d_segmentation >
::type 
thin_cell_only_tetrahedral_3d_segment_handle
 A thin segment for tetrahedrons including only cells in 3d, thin config is used.
typedef
viennagrid::result_of::cell_only_segmentation
< thin_tetrahedral_3d_mesh >
::type 
thin_cell_only_tetrahedral_3d_segmentation
 A thin segmentation for tetrahedrons including only cells in 3d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< thin_cell_only_triangular_2d_segmentation >
::type 
thin_cell_only_triangular_2d_segment_handle
 A thin segment for triangles including only cells in 2d, thin config is used.
typedef
viennagrid::result_of::cell_only_segmentation
< thin_triangular_2d_mesh >
::type 
thin_cell_only_triangular_2d_segmentation
 A thin segmentation for triangles including only cells in 2d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< thin_cell_only_triangular_3d_segmentation >
::type 
thin_cell_only_triangular_3d_segment_handle
 A thin segment for triangles including only cells in 3d, thin config is used.
typedef
viennagrid::result_of::cell_only_segmentation
< thin_triangular_3d_mesh >
::type 
thin_cell_only_triangular_3d_segmentation
 A thin segmentation for triangles including only cells in 3d, thin config is used.
typedef
viennagrid::result_of::cell
< thin_tetrahedral_3d_mesh >
::type 
thin_tetrahedral_3d_cell
 A thin cell for tetrahedrons in 3d, thin config is used.
typedef viennagrid::mesh
< config::thin_tetrahedral_3d
thin_tetrahedral_3d_mesh
 A thin mesh for tetrahedrons in 3d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< thin_tetrahedral_3d_segmentation >
::type 
thin_tetrahedral_3d_segment_handle
 A thin segment for tetrahedrons in 3d, thin config is used.
typedef
viennagrid::result_of::segmentation
< thin_tetrahedral_3d_mesh >
::type 
thin_tetrahedral_3d_segmentation
 A thin segmentation for tetrahedrons in 3d, thin config is used.
typedef
viennagrid::result_of::mesh_view
< thin_tetrahedral_3d_mesh >
::type 
thin_tetrahedral_3d_view
 A thin mesh view for tetrahedrons in 3d, thin config is used.
typedef
viennagrid::result_of::cell
< thin_triangular_2d_mesh >
::type 
thin_triangular_2d_cell
 A thin cell for triangles in 2d, thin config is used.
typedef viennagrid::mesh
< config::thin_triangular_2d
thin_triangular_2d_mesh
 A thin mesh for triangles in 2d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< thin_triangular_2d_segmentation >
::type 
thin_triangular_2d_segment_handle
 A thin segment for triangles in 2d, thin config is used.
typedef
viennagrid::result_of::segmentation
< thin_triangular_2d_mesh >
::type 
thin_triangular_2d_segmentation
 A thin segmentation for triangles in 2d, thin config is used.
typedef
viennagrid::result_of::mesh_view
< thin_triangular_2d_mesh >
::type 
thin_triangular_2d_view
 A thin mesh view for triangles in 2d, thin config is used.
typedef
viennagrid::result_of::cell
< thin_triangular_3d_mesh >
::type 
thin_triangular_3d_cell
 A thin cell for triangles in 3d, thin config is used.
typedef viennagrid::mesh
< config::thin_triangular_3d
thin_triangular_3d_mesh
 A thin mesh for triangles in 3d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< thin_triangular_3d_segmentation >
::type 
thin_triangular_3d_segment_handle
 A thin segment for triangles in 3d, thin config is used.
typedef
viennagrid::result_of::segmentation
< thin_triangular_3d_mesh >
::type 
thin_triangular_3d_segmentation
 A thin segmentation for triangles in 3d, thin config is used.
typedef
viennagrid::result_of::mesh_view
< thin_triangular_3d_mesh >
::type 
thin_triangular_3d_view
 A thin mesh view for triangles in 3d, thin config is used.
typedef
viennagrid::result_of::segment_handle
< thin_triangular_hull_3d_segmentation >
::type 
thin_triangular_hull_3d_segment_handle
 An oriented hull segmentat for triangles in 3d, thin config is used.
typedef
viennagrid::result_of::oriented_3d_hull_segmentation
< thin_triangular_3d_mesh >
::type 
thin_triangular_hull_3d_segmentation
 An oriented hull segmentation for triangles in 3d, thin config is used.
typedef simplex_tag< 2 > triangle_tag
 Convenience type definition for a triangle.
typedef
viennagrid::result_of::cell
< triangular_2d_mesh >::type 
triangular_2d_cell
 A default cell for triangles in 2d, default config is used.
typedef viennagrid::mesh
< config::triangular_2d
triangular_2d_mesh
 A default mesh for triangles in 2d, default config is used.
typedef
viennagrid::result_of::segment_handle
< triangular_2d_segmentation >
::type 
triangular_2d_segment_handle
 A default segment for triangles in 2d, default config is used.
typedef
viennagrid::result_of::segmentation
< triangular_2d_mesh >::type 
triangular_2d_segmentation
 A default segmentation for triangles in 2d, default config is used.
typedef
viennagrid::result_of::mesh_view
< triangular_2d_mesh >::type 
triangular_2d_view
 A default mesh view for triangles in 2d, default config is used.
typedef
viennagrid::result_of::cell
< triangular_3d_mesh >::type 
triangular_3d_cell
 A default cell for triangles in 3d, default config is used.
typedef viennagrid::mesh
< config::triangular_3d
triangular_3d_mesh
 A default mesh for triangles in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< triangular_3d_segmentation >
::type 
triangular_3d_segment_handle
 A default segment for triangles in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< triangular_3d_mesh >::type 
triangular_3d_segmentation
 A default segmentation for triangles in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< triangular_3d_mesh >::type 
triangular_3d_view
 A default mesh view for triangles in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< triangular_hull_3d_segmentation >
::type 
triangular_hull_3d_segment_handle
 An oriented hull segmentat for triangles in 3d, default config is used.
typedef
viennagrid::result_of::oriented_3d_hull_segmentation
< triangular_3d_mesh >::type 
triangular_hull_3d_segmentation
 An oriented hull segmentation for triangles in 3d, default config is used.
typedef
viennagrid::result_of::cell
< vertex_1d_mesh >::type 
vertex_1d_cell
 A default cell for vertices in 1d, default config is used.
typedef viennagrid::mesh
< config::vertex_1d
vertex_1d_mesh
 A default mesh for vertices in 1d, default config is used.
typedef
viennagrid::result_of::segment_handle
< vertex_1d_segmentation >
::type 
vertex_1d_segment_handle
 A default segment for vertices in 1d, default config is used.
typedef
viennagrid::result_of::segmentation
< vertex_1d_mesh >::type 
vertex_1d_segmentation
 A default segmentation for vertices in 1d, default config is used.
typedef
viennagrid::result_of::mesh_view
< vertex_1d_mesh >::type 
vertex_1d_view
 A default mesh view for vertices in 1d, default config is used.
typedef
viennagrid::result_of::cell
< vertex_2d_mesh >::type 
vertex_2d_cell
 A default cell for vertices in 2d, default config is used.
typedef viennagrid::mesh
< config::vertex_2d
vertex_2d_mesh
 A default mesh for vertices in 2d, default config is used.
typedef
viennagrid::result_of::segment_handle
< vertex_2d_segmentation >
::type 
vertex_2d_segment_handle
 A default segment for vertices in 2d, default config is used.
typedef
viennagrid::result_of::segmentation
< vertex_2d_mesh >::type 
vertex_2d_segmentation
 A default segmentation for vertices in 2d, default config is used.
typedef
viennagrid::result_of::mesh_view
< vertex_2d_mesh >::type 
vertex_2d_view
 A default mesh view for vertices in 2d, default config is used.
typedef
viennagrid::result_of::cell
< vertex_3d_mesh >::type 
vertex_3d_cell
 A default cell for vertices in 3d, default config is used.
typedef viennagrid::mesh
< config::vertex_3d
vertex_3d_mesh
 A default mesh for vertices in 3d, default config is used.
typedef
viennagrid::result_of::segment_handle
< vertex_3d_segmentation >
::type 
vertex_3d_segment_handle
 A default segment for vertices in 3d, default config is used.
typedef
viennagrid::result_of::segmentation
< vertex_3d_mesh >::type 
vertex_3d_segmentation
 A default segmentation for vertices in 3d, default config is used.
typedef
viennagrid::result_of::mesh_view
< vertex_3d_mesh >::type 
vertex_3d_view
 A default mesh view for vertices in 3d, default config is used.
typedef simplex_tag< 0 > vertex_tag
 Convenience type definition for a vertex.

Functions

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 iterator_type , typename distance_type >
iterator_type advance (iterator_type const &in, distance_type distance)
 Advances an iterator and returns it.
template<typename MeshT >
void affine_transform (MeshT &mesh, typename viennagrid::result_of::coord< MeshT >::type const *matrix, typename viennagrid::result_of::point< MeshT >::type const &translation)
 Function for an affine transformation of a mesh, uses affine_transform_functor.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
angle (PointT const &v0, PointT const &v1)
 Implementation of the spanned angle between two vectors (i.e. the angle between the rays connecting v0 and v1 with the origin)
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
angle (PointT const &p0, PointT const &p1, PointT const &origin)
 Implementation of the angle between two lines directing from origin to p0 and p1.
template<typename ElementTypeOrTagT , typename MeshT , typename InterfaceAreaAccessorT , typename InterfaceAreaCellContributionAccessorT , typename VertexBoxVolumeAccessorT , typename VertexBoxVolumeCellContributionAccessorT , typename EdgeBoxVolumeAccessorT , typename EdgeBoxVolumeCellContributionAccessorT >
void apply_voronoi (MeshT const &mesh_obj, InterfaceAreaAccessorT interface_area_accessor, InterfaceAreaCellContributionAccessorT interface_area_cell_contribution_accessor, VertexBoxVolumeAccessorT vertex_box_volume_accessor, VertexBoxVolumeCellContributionAccessorT vertex_box_volume_cell_contribution_accessor, EdgeBoxVolumeAccessorT edge_box_volume_accessor, EdgeBoxVolumeCellContributionAccessorT edge_box_volume_cell_contribution_accessor)
 Writes Voronoi information to the mesh or segment using the provided accessors.
template<typename PointAccessorT , typename SomethingT1 , typename SomethingT2 >
viennagrid::result_of::coord
< SomethingT1 >::type 
boundary_distance (PointAccessorT const accessor, SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the distance between elements, segments and/or meshs.
template<typename SomethingT1 , typename SomethingT2 >
viennagrid::result_of::coord
< SomethingT1 >::type 
boundary_distance (SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the distance between elements, segments and/or meshs.
template<typename SomethingT , typename CoordT , typename CoordinateSystemT >
viennagrid::result_of::coord
< SomethingT >::type 
boundary_distance (SomethingT const &el1, spatial_point< CoordT, CoordinateSystemT > const &el2)
 Returns the distance between a point and an element, segment and/or mesh.
template<typename CoordT , typename CoordinateSystemT , typename SomethingT >
viennagrid::result_of::coord
< SomethingT >::type 
boundary_distance (spatial_point< CoordT, CoordinateSystemT > const &el1, SomethingT const &el2)
 Returns the distance between a point and an element, segment and/or mesh.
template<typename PointIteratorT >
std::pair< typename
std::iterator_traits
< PointIteratorT >::value_type,
typename std::iterator_traits
< PointIteratorT >::value_type > 
bounding_box (PointIteratorT it, PointIteratorT const &it_end)
 Calculates the bounding box of a point iterator range. A pair of points is return, where the first represents the coordinate-wise minimum and the second represents the coordinate-wise maximum.
template<typename MeshT >
std::pair< typename
viennagrid::result_of::point
< MeshT >::type, typename
viennagrid::result_of::point
< MeshT >::type > 
bounding_box (MeshT const &mesh)
 Calculates the bounding box a mesh. A pair of points is return, where the first represents the coordinate-wise minimum and the second represents the coordinate-wise maximum.
template<typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename CellRefinementFlagAccessorT >
void cell_refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, CellRefinementFlagAccessorT const cell_refinement_flag_accessor)
 Public interface for refinement of cells of a mesh with cell refinement accessor. If there is more than one cell type this funcion will fail.
template<typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename CellRefinementFlagAccessorT >
void cell_refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, CellRefinementFlagAccessorT const cell_refinement_flag_accessor)
 Public interface for refinement of cells of a mesh with segmentation providing cell refinement accessor. Will fail if there is more than one cell type.
template<typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT >
void cell_refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out)
 Public interface for uniform refinement of cells of a mesh. Will fail if there is more than one cell type.
template<typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT >
void cell_refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out)
 Public interface for uniform refinement of cells of a mesh with segmentation. Will fail if there is more than one cell type.
template<typename CellTagIn , typename WrappedMeshConfigInT , typename CellRefinementFlagAccessorT , typename EdgeRefinementFlagAccessorT >
void cell_refinement_to_edge_refinement (mesh< WrappedMeshConfigInT > const &mesh_in, CellRefinementFlagAccessorT cell_refinement_flag, EdgeRefinementFlagAccessorT edge_refinement_flag_accessor)
 Transfers tags for refinement from the cell to edges.
template<typename SomethingT >
result_of::cell_range
< SomethingT >::type 
cells (SomethingT &something)
 Function for retrieving a cell range object from a host object.
template<typename SomethingT >
result_of::const_cell_range
< SomethingT >::type 
cells (SomethingT const &something)
 Function for retrieving a const cell range object from a host object.
template<typename PointAccessorT , typename ElementT >
PointAccessorT::value_type centroid (PointAccessorT const accessor, ElementT const &element)
 The public interface function for the computation of a centroid of an element with explicit point accessor.
template<typename ElementTag , typename WrappedConfigT >
viennagrid::result_of::point
< viennagrid::element
< ElementTag, WrappedConfigT >
>::type 
centroid (viennagrid::element< ElementTag, WrappedConfigT > const &element)
 The public interface function for the computation of a centroid of an element.
template<typename ElementTOrTagT , typename WrappedConfigT , typename PointAccessorT >
viennagrid::result_of::point
< mesh< WrappedConfigT >
>::type 
centroid (mesh< WrappedConfigT > const &mesh_obj, PointAccessorT const point_accessor)
 The public interface function for the computation of a centroid of a mesh with explicit point accessor.
template<typename WrappedConfigT , typename PointAccessorT >
viennagrid::result_of::point
< mesh< WrappedConfigT >
>::type 
centroid (mesh< WrappedConfigT > const &mesh_obj, PointAccessorT const point_accessor)
 The public interface function for the computation of a centroid of a mesh with explicit point accessor. Cells are used for centroid calculation, will fail if there is more than one cell type.
template<typename ElementTOrTagT , typename WrappedConfigT >
viennagrid::result_of::point
< mesh< WrappedConfigT >
>::type 
centroid (mesh< WrappedConfigT > const &mesh_obj)
 The public interface function for the computation of a centroid of a mesh.
template<typename WrappedConfigT >
viennagrid::result_of::point
< mesh< WrappedConfigT >
>::type 
centroid (mesh< WrappedConfigT > const &mesh_obj)
 The public interface function for the computation of a centroid of a mesh. Cells are used for centroid calculation, will fail if there is more than one cell type.
template<typename ElementTOrTagT , typename SegmentationT , typename PointAccessorT >
viennagrid::result_of::point
< segment_handle
< SegmentationT > >::type 
centroid (segment_handle< SegmentationT > const &segment, PointAccessorT const point_accessor)
 The public interface function for the computation of a centroid of a segment with explicit point accessor.
template<typename SegmentationT , typename PointAccessorT >
viennagrid::result_of::point
< segment_handle
< SegmentationT > >::type 
centroid (segment_handle< SegmentationT > const &segment, PointAccessorT const point_accessor)
 The public interface function for the computation of a centroid of a segment with explicit point accessor. Cells are used for centroid calculation, will fail if there is more than one cell type.
template<typename ElementTOrTagT , typename SegmentationT >
viennagrid::result_of::point
< segment_handle
< SegmentationT > >::type 
centroid (segment_handle< SegmentationT > const &segment)
 The public interface function for the computation of a centroid of a segment.
template<typename SegmentationT >
viennagrid::result_of::point
< segment_handle
< SegmentationT > >::type 
centroid (segment_handle< SegmentationT > const &segment)
 The public interface function for the computation of a centroid of a segment. Cells are used for centroid calculation, will fail if there is more than one cell type.
template<typename PointAccessorT , typename ElementT >
PointAccessorT::value_type circumcenter (PointAccessorT const accessor, ElementT const &element)
 The public interface function for the calculation of the circumcenter with explicit point accessor.
template<typename ElementT >
viennagrid::result_of::point
< ElementT >::type 
circumcenter (ElementT const &element)
 The public interface function for the calculation of the circumcenter.
template<typename SegmentationT >
void clear (segment_handle< SegmentationT > &segment_)
 Completely clears a segmentation.
template<typename WrappedConfigT >
void clear (mesh< WrappedConfigT > &mesh_)
 Completely clears a mesh.
template<typename WrappedConfigT >
void clear (segmentation< WrappedConfigT > &segmentation_)
 Completely clears a segmentation.
template<typename PointAccessorT , typename SomethingT1 , typename SomethingT2 >
std::pair< typename
PointAccessorT::value_type,
typename
PointAccessorT::value_type > 
closest_points (PointAccessorT const accessor, SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the distance between n-cells.
template<typename SomethingT1 , typename SomethingT2 >
std::pair< typename
viennagrid::result_of::point
< SomethingT1 >::type,
typename
viennagrid::result_of::point
< SomethingT1 >::type > 
closest_points (SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the closest points between two elements/segments using the default accessor for geometric points on vertices.
template<typename PointAccessorT , typename SomethingT1 , typename SomethingT2 >
std::pair< typename
PointAccessorT::value_type,
typename
PointAccessorT::value_type > 
closest_points_on_boundary (PointAccessorT const accessor, SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the closest points between two elements/segments using the provided accessor for geometric points on vertices.
template<typename SomethingT1 , typename SomethingT2 >
std::pair< typename
viennagrid::result_of::point
< SomethingT1 >::type,
typename
viennagrid::result_of::point
< SomethingT1 >::type > 
closest_points_on_boundary (SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the distance between n-cells.
template<typename ElementTypeOrTagT , typename CoboundaryTypeOrTagT , typename WrappedConfigT , typename ElementOrHandleT >
result_of::coboundary_range
< viennagrid::mesh
< WrappedConfigT >
, ElementTypeOrTagT,
CoboundaryTypeOrTagT >::type 
coboundary_elements (viennagrid::mesh< WrappedConfigT > &mesh_obj, ElementOrHandleT const &element_or_handle)
 Obtaines a coboundary range of an element within a mesh. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the mesh.
template<typename ElementTypeOrTagT , typename CoboundaryTypeOrTagT , typename WrappedConfigT , typename ElementOrHandleT >
result_of::const_coboundary_range
< viennagrid::mesh
< WrappedConfigT >
, ElementTypeOrTagT,
CoboundaryTypeOrTagT >::type 
coboundary_elements (viennagrid::mesh< WrappedConfigT > const &mesh_obj, ElementOrHandleT const &element_or_handle)
 Obtaines a const coboundary range of an element within a mesh. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the mesh.
template<typename ElementTypeOrTagT , typename CoboundaryTypeOrTagT , typename SegmentationT , typename element_or_handle_type >
result_of::coboundary_range
< segment_handle
< SegmentationT >
, ElementTypeOrTagT,
CoboundaryTypeOrTagT >::type 
coboundary_elements (segment_handle< SegmentationT > &segment, element_or_handle_type const &element_or_handle)
 Obtaines a coboundary range of an element within a segment. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the segment.
template<typename ElementTypeOrTagT , typename CoboundaryTypeOrTagT , typename SegmentationT , typename element_or_handle_type >
result_of::const_coboundary_range
< segment_handle
< SegmentationT >
, ElementTypeOrTagT,
CoboundaryTypeOrTagT >::type 
coboundary_elements (segment_handle< SegmentationT > const &segment, element_or_handle_type const &element_or_handle)
 Obtaines a const coboundary range of an element within a segment. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the segment.
template<typename SrcMeshT , typename DstMeshT , typename ToCopyFunctorT >
void copy (SrcMeshT const &src_mesh, DstMeshT &dst_mesh, ToCopyFunctorT functor)
 Copies the cells of a mesh if a boolean functor is true.
template<typename SrcMeshT , typename SrcSegmentationT , typename DstMeshT , typename DstSegmentationT , typename ToCopyFunctorT >
void copy (SrcMeshT const &src_mesh, SrcSegmentationT const &src_segmentation, DstMeshT &dst_mesh, DstSegmentationT &dst_segmentation, ToCopyFunctorT functor)
 Copies the cells of a mesh and a segmentation if a boolean functor is true.
template<typename ElementT , typename MeshOrSegmentHandleT >
viennagrid::result_of::handle
< MeshOrSegmentHandleT,
typename
viennagrid::result_of::element_tag
< ElementT >::type >::type 
copy_element (ElementT const &element, MeshOrSegmentHandleT &mesh_segment, typename viennagrid::result_of::coord< MeshOrSegmentHandleT >::type tolerance)
 Function for copying an element to a mesh or segment.
template<typename ElementT , typename MeshOrSegmentHandleT >
viennagrid::result_of::handle
< MeshOrSegmentHandleT,
typename
viennagrid::result_of::element_tag
< ElementT >::type >::type 
copy_element (ElementT const &element, MeshOrSegmentHandleT &mesh_segment)
 Function for copying an element to a mesh or segment.
template<typename InputMeshOrSegmentHandleT , typename ElementHandleIteratorT , typename OutputMeshOrSegmentHandleT >
void copy_element_by_handles (InputMeshOrSegmentHandleT const &input_mesh, ElementHandleIteratorT const &begin, ElementHandleIteratorT const &end, OutputMeshOrSegmentHandleT &output_mesh, typename viennagrid::result_of::coord< OutputMeshOrSegmentHandleT >::type tolerance)
 Function for copying an element handle iterator range to a mesh or segment.
template<typename InputMeshOrSegmentHandleT , typename ElementHandleIteratorT , typename OutputMeshOrSegmentHandleT >
void copy_element_by_handles (InputMeshOrSegmentHandleT const &input_mesh, ElementHandleIteratorT const &begin, ElementHandleIteratorT const &end, OutputMeshOrSegmentHandleT &output_mesh)
 Function for copying an element handle iterator range to a mesh or segment.
template<typename ElementIteratorT , typename OutputMeshOrSegmentHandleT >
void copy_elements (ElementIteratorT const &begin, ElementIteratorT const &end, OutputMeshOrSegmentHandleT &output_mesh, typename viennagrid::result_of::coord< OutputMeshOrSegmentHandleT >::type tolerance)
 Function for copying an element iterator range to a mesh or segment.
template<typename ElementIteratorT , typename OutputMeshOrSegmentHandleT >
void copy_elements (ElementIteratorT const &begin, ElementIteratorT const &end, OutputMeshOrSegmentHandleT &output_mesh)
 Function for copying an element iterator range to a mesh or segment.
template<typename InputMeshOrSegmentHandleT , typename ElementHandleIteratorT , typename OutputMeshOrSegmentHandleT >
void copy_elements_by_handle (InputMeshOrSegmentHandleT const &input_mesh, ElementHandleIteratorT const &begin, ElementHandleIteratorT const &end, OutputMeshOrSegmentHandleT &output_mesh, typename viennagrid::result_of::coord< OutputMeshOrSegmentHandleT >::type tolerance)
template<typename InputMeshOrSegmentHandleT , typename ElementHandleIteratorT , typename OutputMeshOrSegmentHandleT >
void copy_elements_by_handle (InputMeshOrSegmentHandleT const &input_mesh, ElementHandleIteratorT const &begin, ElementHandleIteratorT const &end, OutputMeshOrSegmentHandleT &output_mesh)
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 PointT1 , typename PointT2 >
PointT1 cross_prod (PointT1 const &v1, PointT2 const &v2)
 Returns the cross product of two vectors. If the vectors have one or two components only, the zero vector is returned.
template<typename PointT1 , typename PointT2 , typename CSystem1 , typename CSystem2 >
PointT1 cross_prod_impl (PointT1 const &p1, PointT2 const &p2, CSystem1 const &, CSystem2 const &)
 Dispatched cross product function having information about the coordinate systems. Transforms to Cartesian coordinates and forwards to calculation.
template<typename PointT1 , typename PointT2 , int d>
PointT1 cross_prod_impl (PointT1 const &p1, PointT2 const &p2, cartesian_cs< d >, cartesian_cs< d >)
 Dispatched cross product function having information about the coordinate systems. Points are already in Cartesian coordinates, thus forwarding to the worker function directly.
template<typename mesh_or_element_type >
result_of::default_point_accessor
< mesh_or_element_type >::type 
default_point_accessor (mesh_or_element_type const &)
 Convenience function for returning the default point accessor (i.e. accessing the point stored in the element's appendix) for a mesh or element.
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 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 element_tag , typename WrappedConfigType , typename handle_type >
detail::result_of::value_type
< handle_type >::type & 
dereference_handle (viennagrid::element< element_tag, WrappedConfigType > &element, handle_type const &handle)
 Function for dereferencing a handle using a host element.
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 element_tag , typename WrappedConfigType , typename handle_type >
const
detail::result_of::value_type
< handle_type >::type & 
dereference_handle (viennagrid::element< element_tag, WrappedConfigType > const &element, handle_type const &handle)
 Function for dereferencing a handle using a host element.
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 WrappedMeshConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT > & 
dereference_handle (viennagrid::mesh< WrappedMeshConfigT > &, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for dereferencing an element -> identity.
template<typename WrappedMeshConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT > & 
dereference_handle (viennagrid::segment_handle< WrappedMeshConfigT > &, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for dereferencing an element -> identity.
template<typename HostElementTagT , typename WrappedHostElementConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT > & 
dereference_handle (viennagrid::element< HostElementTagT, WrappedHostElementConfigT > &, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for dereferencing an element -> identity.
template<typename WrappedMeshConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::mesh< WrappedMeshConfigT > const &, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for dereferencing a const element -> identity.
template<typename WrappedMeshConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::mesh< WrappedMeshConfigT > &, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for dereferencing a const element -> identity.
template<typename WrappedMeshConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::mesh< WrappedMeshConfigT > const &, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for dereferencing a const element -> identity.
template<typename SegmentationT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::segment_handle< SegmentationT > const &, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for dereferencing a const element -> identity.
template<typename SegmentationT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::segment_handle< SegmentationT > &, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for dereferencing a const element -> identity.
template<typename SegmentationT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::segment_handle< SegmentationT > const &, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for dereferencing an element -> identity.
template<typename HostElementTagT , typename WrappedHostElementConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::element< HostElementTagT, WrappedHostElementConfigT > const &, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for dereferencing a const element -> identity.
template<typename HostElementTagT , typename WrappedHostElementConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::element< HostElementTagT, WrappedHostElementConfigT > &, viennagrid::element< ElementTagT, WrappedConfigT > const &element)
 Function for dereferencing a const element -> identity.
template<typename HostElementTagT , typename WrappedHostElementConfigT , typename ElementTagT , typename WrappedConfigT >
viennagrid::element
< ElementTagT, WrappedConfigT >
const & 
dereference_handle (viennagrid::element< HostElementTagT, WrappedHostElementConfigT > const &, viennagrid::element< ElementTagT, WrappedConfigT > &element)
 Function for dereferencing an element -> identity.
template<typename SegmentationT >
void detect_interface (segment_handle< SegmentationT > &seg0, segment_handle< SegmentationT > &seg1)
 Public interface function for the detection of interface n-cells between two segments. No need to call this function explicitly, since it is called by is_interface()
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
determinant (PointT const &p0)
 Calculates the determinant of a 1x1 matrix with the columns provided as 1D-points.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
determinant (PointT const &p0, PointT const &p1)
 Calculates the determinant of a 2x2 matrix with the columns provided as 2D-points.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
determinant (PointT const &p0, PointT const &p1, PointT const &p2)
 Calculates the determinant of a 3x3 matrix with the columns provided as 3D-points.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
dihedral_angle (PointT const &p0, PointT const &p1, PointT const &p2, PointT const &q0, PointT const &q1, PointT const &q2)
 Implementation of the dihedral angle between two planes, each defined by 3 points.
template<typename PointAccessorT , typename SomethingT1 , typename SomethingT2 >
viennagrid::result_of::coord
< SomethingT1 >::type 
distance (PointAccessorT const accessor, SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the distance between elements, segments and/or meshs using the point accessor provided.
template<typename SomethingT1 , typename SomethingT2 >
viennagrid::result_of::coord
< SomethingT1 >::type 
distance (SomethingT1 const &el1, SomethingT2 const &el2)
 Returns the distance between elements, segments and/or meshs using the default point accessor.
template<typename SomethingT , typename CoordT , typename CoordinateSystemT >
viennagrid::result_of::coord
< SomethingT >::type 
distance (SomethingT const &el1, spatial_point< CoordT, CoordinateSystemT > const &el2)
 Returns the distance between a point and an element/segment/meshs using the default point accessor.
template<typename CoordT , typename CoordinateSystemT , typename SomethingT >
viennagrid::result_of::coord
< SomethingT >::type 
distance (spatial_point< CoordT, CoordinateSystemT > const &el1, SomethingT const &el2)
 Returns the distance between a point and an element/segment/meshs using the default point accessor.
template<typename CoordT1 , typename CoordinateSystemT1 , typename CoordT2 , typename CoordinateSystemT2 >
viennagrid::result_of::coord
< spatial_point< CoordT1,
CoordinateSystemT1 > >::type 
distance (spatial_point< CoordT1, CoordinateSystemT1 > const &el1, spatial_point< CoordT2, CoordinateSystemT2 > const &el2)
 Returns the Euclidian distance between two points.
template<typename WrappedMeshConfigT , typename SegmentationT >
result_of::coord
< segment_handle
< SegmentationT > >::type 
distance (element< line_tag, WrappedMeshConfigT > const &line, segment_handle< SegmentationT > const &segment_handle)
 Returns the Euclidian distance between the boundary of a segment and a line.
template<typename SegmentationT , typename WrappedMeshConfigT >
result_of::coord
< segment_handle
< SegmentationT > >::type 
distance (segment_handle< SegmentationT > const &segment_handle, element< line_tag, WrappedMeshConfigT > const &line)
template<typename PointType >
std::size_t dynamic_size (PointType const &p)
 Returns the dynamic (run time) size of a point. Assumes a .size() member. Other cases must be provided with overloads.
template<typename SomethingT >
result_of::element_range
< SomethingT, edge_tag >::type 
edges (SomethingT &something)
 Function for retrieving a edge range object from a host object (same as lines)
template<typename SomethingT >
result_of::const_element_range
< SomethingT, edge_tag >::type 
edges (SomethingT const &something)
 Function for retrieving a const edge range object from a host object (same as lines)
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename PointAccessorType , typename CellRefinementFlagAccessorT >
void element_refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, PointAccessorType point_accessor_in, CellRefinementFlagAccessorT const cell_refinement_flag_accessor)
 Public interface for refinement of a mesh with explicit point accessor and cell refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename CellRefinementFlagAccessorT >
void element_refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, CellRefinementFlagAccessorT const cell_refinement_flag_accessor)
 Public interface for refinement of a mesh with cell refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename PointAccessorT , typename CellRefinementFlagAccessorT >
void element_refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, PointAccessorT point_accessor_in, CellRefinementFlagAccessorT const cell_refinement_flag_accessor)
 Public interface for refinement of a mesh with segmentation providing explicit point accessor and cell refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename CellRefinementFlagAccessorT >
void element_refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, CellRefinementFlagAccessorT const cell_refinement_flag_accessor)
 Public interface for refinement of a mesh with segmentation providing cell refinement accessor.
template<typename element_type_or_tag , typename something >
result_of::element_view
< something,
element_type_or_tag >::type 
element_view (something &s)
 Returns an empty view object derived from the respective element.
template<typename element_type_or_tag , typename something , typename functor >
result_of::element_view
< something,
element_type_or_tag >::type 
element_view (something &s, functor f)
 Returns a view object derived from the respective mesh or segment. Whenever the provided filter functor evaluates to true for an element, it is added to the view. Non-const version.
template<typename element_type_or_tag , typename something , typename functor >
result_of::const_element_view
< something,
element_type_or_tag >::type 
element_view (something const &s, functor f)
 Returns a view object derived from the respective mesh or segment. Whenever the provided filter functor evaluates to true for an element, it is added to the view. Const version.
template<typename sub_element_type_or_tag , typename element_tag , typename WrappedConfigType >
result_of::element_range
< viennagrid::element
< element_tag,
WrappedConfigType >
, sub_element_type_or_tag >
::type 
elements (viennagrid::element< element_tag, WrappedConfigType > &element)
 Function for retrieving a boundary element range from a host element. Non-const version.
template<typename sub_element_type_or_tag , typename element_tag , typename WrappedConfigType >
result_of::const_element_range
< viennagrid::element
< element_tag,
WrappedConfigType >
, sub_element_type_or_tag >
::type 
elements (const viennagrid::element< element_tag, WrappedConfigType > &element)
 Function for retrieving a boundary element range from a host element. Const version.
template<typename element_type_or_tag , typename container_collection_typemap >
result_of::element_range
< collection
< container_collection_typemap >
, element_type_or_tag >::type 
elements (collection< container_collection_typemap > &collection)
 Function for retrieving an element range or a boundary element range from a container collection. Non-const version.
template<typename element_type_or_tag , typename container_collection_typemap >
result_of::const_element_range
< collection
< container_collection_typemap >
, element_type_or_tag >::type 
elements (const collection< container_collection_typemap > &collection)
 Function for retrieving an element range or a boundary element range from a container collection. Const version.
template<typename ElementTypeOrTagT , typename SomethingT >
result_of::element_range
< SomethingT,
ElementTypeOrTagT >::type 
elements (SomethingT &something)
 Function for retrieving an element range or a boundary element range from a host object.
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 SegmentationT >
result_of::element_range
< viennagrid::segment_handle
< SegmentationT >
, ElementTypeOrTagT >::type 
elements (viennagrid::segment_handle< SegmentationT > &segment)
 Function for retrieving an element range or a boundary element range from a segment.
template<typename ElementTypeOrTagT , typename WrappedConfigT >
result_of::element_range
< segmentation< WrappedConfigT >
, ElementTypeOrTagT >::type 
elements (viennagrid::segmentation< WrappedConfigT > &segm)
 Function for retrieving an element range or a boundary element range from a segmentation. Non-const version.
template<typename ElementTypeOrTagT , typename SomethingT >
result_of::const_element_range
< SomethingT,
ElementTypeOrTagT >::type 
elements (SomethingT const &something)
 Function for retrieving a const element range or a boundary element range from a host object.
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 ElementTypeOrTagT , typename SegmentationT >
result_of::const_element_range
< viennagrid::segment_handle
< SegmentationT >
, ElementTypeOrTagT >::type 
elements (viennagrid::segment_handle< SegmentationT > const &segment)
 Function for retrieving a const element range or a boundary element range from a segment. Const-version.
template<typename ElementTypeOrTagT , typename WrappedConfigT >
result_of::const_element_range
< viennagrid::segmentation
< WrappedConfigT >
, ElementTypeOrTagT >::type 
elements (viennagrid::segmentation< WrappedConfigT > const &segm)
 Function for retrieving an element range or a boundary element range from a segmentation. Const version.
template<typename CellTagIn , typename WrappedMeshConfigInT , typename EdgeRefinementFlagAccessorT >
void ensure_longest_edge_refinement (mesh< WrappedMeshConfigInT > const &mesh_in, EdgeRefinementFlagAccessorT edge_refinement_flag_accessor)
 Ensures refinement of the longest edge of each cell. If any edge is tagged for refinement in a cell, then the longest edge is refined as well.
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 MeshT , typename HandleT >
void erase_element (MeshT &mesh_obj, HandleT element_to_erase)
 Erases a single elements and all elements which references this element from a mesh. If more than one element is erase use erase_elements instead for better performance.
template<typename WrappedConfigT , typename ToEraseViewT >
void erase_elements (viennagrid::mesh< WrappedConfigT > &mesh_obj, ToEraseViewT &elements_to_erase)
 Erases all elements marked for deletion and all elements which references these elements from a mesh.
template<typename WrappedConfigType , typename ElementTypeList , typename ContainerConfig , typename ToEraseViewT >
void erase_elements (viennagrid::mesh< viennagrid::detail::decorated_mesh_view_config< WrappedConfigType, ElementTypeList, ContainerConfig > > &view_obj, ToEraseViewT &elements_to_erase)
 Erases all elements marked for deletion and all elements which references these elements from a view.
template<typename HullTypeOrTagT , typename VolumeMeshT , typename HullMeshT >
void extract_boundary (VolumeMeshT const &volume_mesh, HullMeshT &hull_mesh)
 Extracts the hull of mesh using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh.
template<typename VolumeMeshT , typename HullMeshT >
void extract_boundary (VolumeMeshT const &volume_mesh, HullMeshT &hull_mesh)
 Extracts the hull of mesh using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh. The facet type is used as the hull element type.
template<typename HullTypeOrTagT , typename VolumeMeshT , typename VolumeSegmentationT , typename HullMeshT , typename HullSegmentationT >
void extract_boundary (VolumeMeshT const &volume_mesh, VolumeSegmentationT const &volume_segmentation, HullMeshT &hull_mesh, HullSegmentationT &hull_segmentation)
 Extracts the hull of mesh and a segmentation using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh.
template<typename VolumeMeshT , typename VolumeSegmentationT , typename HullMeshT , typename HullSegmentationT >
void extract_boundary (VolumeMeshT const &volume_mesh, VolumeSegmentationT const &volume_segmentation, HullMeshT &hull_mesh, HullSegmentationT &hull_segmentation)
 Extracts the hull of mesh and a segmentation using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh. The facet type is used as the hull element type.
template<typename MeshSegmentT , typename SeedPointContainerT >
void extract_seed_points (MeshSegmentT const &mesh, SeedPointContainerT &seed_points)
 Extracts seed points of a mesh. For each connected part of the mesh, a point which is inside this part is added to the seed_points container.
template<typename MeshT , typename SegmentationT , typename SeedPointContainerT >
void extract_seed_points (MeshT const &mesh, SegmentationT const &segmentation, SeedPointContainerT &seed_points)
 Extracts seed points of a mesh with segmentation. For each segment, seed points are extracted.
template<typename ElementT >
result_of::facet_range
< ElementT >::type 
facets (ElementT &element)
 Function for retrieving a facet range object from a host object.
template<typename ElementT >
result_of::const_facet_range
< ElementT >::type 
facets (const ElementT &element)
 Function for retrieving a const facet range object from a host object.
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<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 BoundaryElementTypelistT , typename ElementT , typename FunctorT >
void for_each_boundary_element (ElementT &element, FunctorT functor)
 Applies a functor to all boundary cells of an element. For example, this applies a functor to all vertices and edges of a triangle.
template<typename ElementT , typename FunctorT >
void for_each_boundary_element (ElementT &element, FunctorT functor)
template<typename MeshT , typename FunctorT , typename PointAccessorT >
void geometric_transform (MeshT &mesh, FunctorT func, PointAccessorT accessor)
 Transforms all points of a mesh based on a functor.
template<typename MeshT , typename FunctorT >
void geometric_transform (MeshT &mesh, FunctorT func)
 Transforms all points of a mesh based on a functor.
template<typename KeyTypeT , typename TypeMapT >
viennagrid::detail::result_of::lookup
< TypeMapT, typename
viennagrid::detail::remove_const
< KeyTypeT >::type >::type & 
get (collection< TypeMapT > &c)
 Generic accessor function for accessing the respective value type identified by the provided type from a collection. Non-const version.
template<typename KeyTypeT , typename TypeMapT >
viennagrid::detail::result_of::lookup
< TypeMapT, typename
viennagrid::detail::remove_const
< KeyTypeT >::type >::type
const & 
get (collection< TypeMapT > const &c)
 Generic accessor function for accessing the respective value type identified by the provided type from a collection. Const version.
template<typename ElementTag1 , typename WrappedConfigType1 , typename ElementTag2 , typename WrappedConfigType2 >
result_of::handle
< viennagrid::element
< ElementTag1,
WrappedConfigType1 >
, viennagrid::element
< ElementTag2,
WrappedConfigType2 > >::type 
handle (viennagrid::element< ElementTag1, WrappedConfigType1 > &element, viennagrid::element< ElementTag2, WrappedConfigType2 > &boundary_element)
 Function for creating a handle for a given boundary element of a host element. Non-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 ElementTag1 , typename WrappedConfigType1 , typename ElementTag2 , typename WrappedConfigType2 >
result_of::const_handle
< viennagrid::element
< ElementTag1,
WrappedConfigType1 >
, viennagrid::element
< ElementTag2,
WrappedConfigType2 > >::type 
handle (viennagrid::element< ElementTag1, WrappedConfigType1 > const &element, viennagrid::element< ElementTag2, WrappedConfigType2 > const &boundary_element)
 Function for creating a handle for a given boundary element of a host element. Const-version.
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 MeshOrSegmentHandleT , typename HandleT >
HandleT handle (MeshOrSegmentHandleT &, HandleT handle)
 Function for creating a handle, default implementation -> identity.
template<typename MeshOrSegmentHandleT , typename HandleT >
const HandleT handle (MeshOrSegmentHandleT const &, HandleT handle)
 Function for creating a const handle, default implementation -> identity.
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 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 SomethingT >
result_of::element_range
< SomethingT, hexahedron_tag >
::type 
hexahedra (SomethingT &something)
 Function for retrieving a hexahedron range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT, hexahedron_tag >
::type 
hexahedra (SomethingT const &something)
 Function for retrieving a const hexahedron range object from a host object.
template<typename PLCT >
PLCT::appendix_type & hole_points (PLCT &plc)
 Returns the hole points associated with a PLC.
template<typename PLCT >
PLCT::appendix_type const & hole_points (PLCT const &plc)
 Returns the hole points associated with a PLC.
template<typename SrcMeshT , typename DstMeshT , typename PointT , typename NumericConfigT >
void hyperplane_refine (SrcMeshT const &src_mesh, DstMeshT &dst_mesh, PointT const &hyperplane_point, PointT const &hyperplane_normal, NumericConfigT numeric_config)
 Refines a mesh based on a hyperplane. All elements which intersects the hyperplane are refined in a way that they don't intersect the hyperplane afterwards.
template<typename SrcMeshT , typename SrcSegmentationT , typename DstMeshT , typename DstSegmentationT , typename PointT , typename NumericConfigT >
void hyperplane_refine (SrcMeshT const &src_mesh, SrcSegmentationT const &src_segmentation, DstMeshT &dst_mesh, DstSegmentationT &dst_segmentation, PointT const &hyperplane_point, PointT const &hyperplane_normal, NumericConfigT numeric_config)
 Refines a mesh and a segmentation based on a hyperplane. All elements which intersects the hyperplane are refined in a way that they don't intersect the hyperplane afterwards.
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 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 PointT1 , typename PointT2 >
viennagrid::result_of::coord
< PointT1 >::type 
inner_prod (PointT1 const &p1, PointT2 const &p2)
 Returns the inner product of two vectors, which can be given in different coordinate systems.
template<typename PointT1 , typename PointT2 , typename CoordinateSystemT1 , typename CoordinateSystemT2 >
viennagrid::result_of::coord
< PointT1 >::type 
inner_prod_impl (PointT1 const &p1, PointT2 const &p2, CoordinateSystemT1 const &, CoordinateSystemT2 const &)
 Dispatched inner product function having full information about the coordinate systems. Transforms to Cartesian coordinates and forwards the calculation to the worker.
template<typename PointT1 , typename PointT2 , int d>
viennagrid::result_of::coord
< PointT1 >::type 
inner_prod_impl (PointT1 const &p1, PointT2 const &p2, cartesian_cs< d >, cartesian_cs< d >)
 Dispatched inner product function having full information about the coordinate systems. Vectors/Points are in a Cartesian coordinate system already, thus no transformation required.
template<typename WrappedConfigT , typename ElementT >
bool is_boundary (mesh< WrappedConfigT > const &mesh_obj, ElementT const &element)
 Returns true if an element is located on the boundary of the mesh.
template<typename SegmentationT , typename ElementT >
bool is_boundary (segment_handle< SegmentationT > const &segment, ElementT const &element)
 Returns true if an element is located on the boundary of the segment.
template<typename ElementTag1 , typename WrappedConfigT1 , typename ElementTag2 , typename WrappedConfigT2 >
bool is_boundary (viennagrid::element< ElementTag1, WrappedConfigT1 > const &host_element, viennagrid::element< ElementTag2, WrappedConfigT2 > const &element)
 Returns true if the element provided as second argument is on the boundary of the element provided as first argument.
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 PointAccessorT , typename ElementT , typename CoordType , typename CoordinateSystem , typename NumericConfigT >
bool is_inside (PointAccessorT const accessor, ElementT const &element, spatial_point< CoordType, CoordinateSystem > const &point, NumericConfigT numeric_config)
 Determines if a given point is inside an element. Returns true if the point is inside the element, false otherwise.
template<typename ElementT , typename CoordType , typename CoordinateSystem , typename NumericConfigT >
bool is_inside (ElementT const &element, spatial_point< CoordType, CoordinateSystem > const &point, NumericConfigT numeric_config)
 Determines if a given point is inside an element. Returns true if the point is inside the element, false otherwise.
template<typename ElementT , typename CoordType , typename CoordinateSystem >
bool is_inside (ElementT const &element, spatial_point< CoordType, CoordinateSystem > const &point)
 Determines if a given point is inside an element. Returns true if the point is inside the element, false otherwise.
template<typename SegmentationT , typename ElementT >
bool is_interface (segment_handle< SegmentationT > const &seg0, segment_handle< SegmentationT > const &seg1, ElementT const &element)
 Returns true if the n-cell is located at the interface between two segments.
template<typename BoundaryElementTTag , typename MeshT , typename ElementT >
viennagrid::result_of::handle
< MeshT, BoundaryElementTTag >
::type 
largest_boundary_volume (MeshT &mesh_obj, ElementT &element)
 Returns a handle to the boundary element with the largest volume.
template<typename BoundaryElementTTag , typename MeshT , typename ElementT >
viennagrid::result_of::const_handle
< MeshT, BoundaryElementTTag >
::type 
largest_boundary_volume (MeshT const &mesh_obj, ElementT const &element)
 Returns a const handle to the boundary element with the largest volume.
template<typename SomethingT >
result_of::element_range
< SomethingT, line_tag >::type 
lines (SomethingT &something)
 Function for retrieving a line range object from a host object (same as edges)
template<typename SomethingT >
result_of::const_element_range
< SomethingT, line_tag >::type 
lines (SomethingT const &something)
 Function for retrieving a const line range object from a host object (same as edges)
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 AccessType , typename ContainerType >
result_of::accessor
< ContainerType, AccessType >
::type 
make_accessor (ContainerType &container)
 Convenience function for returning an accessor for the supplied container. Non-const version.
template<typename AccessType , typename ContainerType >
result_of::accessor< const
ContainerType, AccessType >
::type 
make_accessor (ContainerType const &container)
 Convenience function for returning an accessor for the supplied container. Const-version.
template<typename AccessType , typename ContainerCollectionTypemapT >
result_of::accessor< typename
result_of::container_of
< ContainerCollectionTypemapT,
AccessType >::type, AccessType >
::type 
make_accessor (collection< ContainerCollectionTypemapT > &collection_obj)
 Convenience function for returning an accessor for the supplied container collection. Non-const-version.
template<typename AccessType , typename ContainerCollectionTypemapT >
result_of::accessor< const
typename
result_of::container_of
< ContainerCollectionTypemapT,
AccessType >::type, AccessType >
::type 
make_accessor (collection< ContainerCollectionTypemapT > const &collection_obj)
 Convenience function for returning an accessor for the supplied container collection. Const-version.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleIteratorT >
result_of::cell_handle
< MeshOrSegmentHandleTypeT >
::type 
make_cell (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleIteratorT vertices_begin, VertexHandleIteratorT const &vertices_end)
 Function for creating an cell within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleIteratorT >
result_of::cell_handle
< MeshOrSegmentHandleTypeT >
::type 
make_cell_with_id (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleIteratorT vertices_begin, VertexHandleIteratorT const &vertices_end, typename viennagrid::result_of::cell< MeshOrSegmentHandleTypeT >::type::id_type id)
 Function for creating an cell with ID within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleT >
result_of::edge_handle
< MeshOrSegmentHandleTypeT >
::type 
make_edge (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleT v0, VertexHandleT v1)
 Function for creating an edge within a mesh or a segment (same as make_edge)
template<typename ElementTypeOrTagT , typename MeshOrSegmentHandleTypeT , typename VertexHandleIteratorT >
result_of::handle
< MeshOrSegmentHandleTypeT,
ElementTypeOrTagT >::type 
make_element (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleIteratorT array_start, VertexHandleIteratorT const &array_end)
 Function for creating an element within a mesh or a segment. For PLC use make_plc.
template<typename ElementTypeOrTagT , typename MeshOrSegmentHandleTypeT , typename VertexHandleIteratorT , typename IDT >
result_of::handle
< MeshOrSegmentHandleTypeT,
ElementTypeOrTagT >::type 
make_element_with_id (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleIteratorT array_start, VertexHandleIteratorT const &array_end, IDT id)
 Function for creating an element within a mesh or segment with a specific ID. For PLC use make_plc.
template<typename AccessType , typename ContainerType >
result_of::field
< ContainerType, AccessType >
::type 
make_field (ContainerType &container)
 Convenience function for creating a suitable field out of a container. Non-const version.
template<typename AccessType , typename ContainerType >
result_of::field< const
ContainerType, AccessType >
::type 
make_field (ContainerType const &container)
 Convenience function for creating a suitable field out of a container. Const-version.
template<typename AccessType , typename ContainerCollectionTypemapT >
result_of::field< typename
result_of::container_of
< ContainerCollectionTypemapT,
AccessType >::type, AccessType >
::type 
make_field (collection< ContainerCollectionTypemapT > &collection_obj)
 Convenience function for creating a suitable field out of a collection of containers. Non-const-version.
template<typename AccessType , typename ContainerCollectionTypemapT >
result_of::field< const
typename
result_of::container_of
< ContainerCollectionTypemapT,
AccessType >::type, AccessType >
::type 
make_field (collection< ContainerCollectionTypemapT > const &collection_obj)
 Convenience function for creating a suitable field out of a collection of containers. Const-version.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleT >
result_of::hexahedron_handle
< MeshOrSegmentHandleTypeT >
::type 
make_hexahedron (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleT v0, VertexHandleT v1, VertexHandleT v2, VertexHandleT v3, VertexHandleT v4, VertexHandleT v5, VertexHandleT v6, VertexHandleT v7)
 Function for creating a hexahedron within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleT >
result_of::line_handle
< MeshOrSegmentHandleTypeT >
::type 
make_line (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleT v0, VertexHandleT v1)
 Function for creating a line within a mesh or a segment (same as make_edge)
template<typename MeshOrSegmentHandleTypeT , typename LineHandleIteratorT , typename VertexHandleIteratorT >
result_of::plc_handle
< MeshOrSegmentHandleTypeT >
::type 
make_plc (MeshOrSegmentHandleTypeT &mesh_obj, LineHandleIteratorT lines_begin, LineHandleIteratorT lines_end, VertexHandleIteratorT loose_vertices_begin, VertexHandleIteratorT loose_vertices_end)
template<typename MeshOrSegmentHandleTypeT , typename LineHandleIteratorT >
result_of::plc_handle
< MeshOrSegmentHandleTypeT >
::type 
make_plc (MeshOrSegmentHandleTypeT &mesh_obj, LineHandleIteratorT lines_begin, LineHandleIteratorT lines_end)
template<typename MeshOrSegmentHandleTypeT , typename LineHandleIteratorT , typename VertexHandleIteratorT , typename PointIteratorT >
result_of::plc_handle
< MeshOrSegmentHandleTypeT >
::type 
make_plc (MeshOrSegmentHandleTypeT &mesh_segment, LineHandleIteratorT lines_begin, LineHandleIteratorT lines_end, VertexHandleIteratorT loose_vertices_begin, VertexHandleIteratorT loose_vertices_end, PointIteratorT hole_points_begin, PointIteratorT hole_points_end)
 Function for creating a PLC within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleT >
result_of::quadrilateral_handle
< MeshOrSegmentHandleTypeT >
::type 
make_quadrilateral (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleT v0, VertexHandleT v1, VertexHandleT v2, VertexHandleT v3)
 Function for creating a quadrilateral within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleT >
result_of::tetrahedron_handle
< MeshOrSegmentHandleTypeT >
::type 
make_tetrahedron (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleT v0, VertexHandleT v1, VertexHandleT v2, VertexHandleT v3)
 Function for creating a tetrahedron within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT , typename VertexHandleT >
result_of::triangle_handle
< MeshOrSegmentHandleTypeT >
::type 
make_triangle (MeshOrSegmentHandleTypeT &mesh_segment, VertexHandleT v0, VertexHandleT v1, VertexHandleT v2)
 Function for creating a triangle within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT >
result_of::vertex_handle
< MeshOrSegmentHandleTypeT >
::type 
make_unique_vertex (MeshOrSegmentHandleTypeT &mesh_segment, typename result_of::point< MeshOrSegmentHandleTypeT >::type const &point, typename result_of::coord< MeshOrSegmentHandleTypeT >::type tolerance)
 Function for creating a unique vertex. The uniqueness is checked by using the point of the vertex: if there is any vertex whose point is close to the point currently inserted, this handle is returned. A new vertex is created otherwise. A classical 2-norm and the tolerance is used for distance checking. The runtime of this function is linear in the vertices within the mesh.
template<typename MeshOrSegmentHandleTypeT >
result_of::vertex_handle
< MeshOrSegmentHandleTypeT >
::type 
make_unique_vertex (MeshOrSegmentHandleTypeT &mesh_segment, typename result_of::point< MeshOrSegmentHandleTypeT >::type const &p)
 Function for creating a unique vertex. The uniqueness is checked by using the point of the vertex: if there is any vertex whose point is close to the point currently inserted, this handle is returned. A new vertex is created otherwise. A classical 2-norm and the 2-norm of points as tolerance is used for distance checking. The runtime of this function is linear in the vertices within the mesh.
template<typename MeshOrSegmentHandleTypeT >
result_of::vertex_handle
< MeshOrSegmentHandleTypeT >
::type 
make_vertex (MeshOrSegmentHandleTypeT &mesh_segment)
 Function for creating a vertex within a mesh or a segment.
template<typename MeshOrSegmentHandleTypeT >
result_of::vertex_handle
< MeshOrSegmentHandleTypeT >
::type 
make_vertex (MeshOrSegmentHandleTypeT &mesh_segment, typename result_of::point< MeshOrSegmentHandleTypeT >::type const &point)
 Function for creating a vertex within a mesh or a segment with a specific point.
template<typename MeshOrSegmentHandleTypeT >
result_of::vertex_handle
< MeshOrSegmentHandleTypeT >
::type 
make_vertex_with_id (MeshOrSegmentHandleTypeT &mesh_segment, typename viennagrid::result_of::element< MeshOrSegmentHandleTypeT, vertex_tag >::type::id_type id, typename result_of::point< MeshOrSegmentHandleTypeT >::type const &point)
 Function for creating a vertex within a mesh or a segment with a specific point and specific ID.
template<typename WrappedConfigT >
mesh_proxy< viennagrid::mesh
< WrappedConfigT > > 
make_view (viennagrid::mesh< WrappedConfigT > &mesh_obj)
 Creates a view out of a mesh using the mesh_proxy object.
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 WrappedMeshConfigInT , typename EdgeRefinementFlagAccessorT >
void mark_all_edge_refinement (mesh< WrappedMeshConfigInT > const &mesh_in, EdgeRefinementFlagAccessorT edge_refinement_flag_accessor)
 Mark all edges for refinement -> unform refinement.
template<typename SrcMeshT , typename DstMeshT , typename PointT , typename LineRefinementTagContainerT , typename LineRefinementVertexHandleContainerT , typename NumericConfigT >
void mark_edges_for_hyperplane_refine (SrcMeshT const &src_mesh, DstMeshT &dst_mesh, PointT const &hyperplane_point, PointT const &hyperplane_normal, LineRefinementTagContainerT &line_refinement_tag_accessor, LineRefinementVertexHandleContainerT &line_refinement_vertex_handle_accessor, NumericConfigT numeric_config)
 Mark edges for refinement based on a hyperplane.
template<typename MeshT , typename MeshViewT , typename HandleT >
void mark_erase_elements (MeshT &mesh_obj, MeshViewT &elements_to_erase, HandleT host_element)
 Tags all elements connected to a given host_element for erasure. Call erase_element on 'elements_to_erase' to finally delete them.
template<typename MeshT , typename MeshViewT , typename HandleT >
void mark_referencing_elements (MeshT &mesh_obj, MeshViewT &element_view, HandleT host_element)
 Marks elements which reference a given host element.
template<typename CoordType , typename CoordinateSystem >
spatial_point< CoordType,
CoordinateSystem > 
max (const spatial_point< CoordType, CoordinateSystem > &p1, const spatial_point< CoordType, CoordinateSystem > &p2)
 Returns the pointwise maximum point of two points, i.e. result[i] = max(x[i], y[i]) for all i.
template<typename MeshT >
viennagrid::result_of::coord
< MeshT >::type 
mesh_size (MeshT const &mesh)
 Calculates the size of a mesh: ||bounding_box.min - bounding_box.max||.
template<typename CoordType , typename CoordinateSystem >
spatial_point< CoordType,
CoordinateSystem > 
min (const spatial_point< CoordType, CoordinateSystem > &p1, const spatial_point< CoordType, CoordinateSystem > &p2)
 Returns the pointwise minimum point of two points, i.e. result[i] = min(x[i], y[i]) for all i.
template<typename ElementTypeOrTagT , typename ConnectorElementTypeOrTagT , typename WrappedConfigT , typename ElementOrHandleT >
result_of::neighbor_range
< viennagrid::mesh
< WrappedConfigT >
, ElementTypeOrTagT,
ConnectorElementTypeOrTagT >
::type 
neighbor_elements (viennagrid::mesh< WrappedConfigT > &mesh_obj, ElementOrHandleT const &element_or_handle)
 Obtaines a neighbor range of an element within a mesh. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the mesh.
template<typename ElementTypeOrTagT , typename ConnectorElementTypeOrTagT , typename WrappedConfigT , typename ElementOrHandleT >
result_of::const_neighbor_range
< viennagrid::mesh
< WrappedConfigT >
, ElementTypeOrTagT,
ConnectorElementTypeOrTagT >
::type 
neighbor_elements (viennagrid::mesh< WrappedConfigT > const &mesh_obj, ElementOrHandleT const &element_or_handle)
 Obtaines a const neighbor range of an element within a mesh. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the mesh.
template<typename ElementTypeOrTagT , typename ConnectorElementTypeOrTagT , typename SegmentationT , typename ElementOrHandleT >
result_of::neighbor_range
< segment_handle
< SegmentationT >
, ElementTypeOrTagT,
ConnectorElementTypeOrTagT >
::type 
neighbor_elements (segment_handle< SegmentationT > &segment, ElementOrHandleT const &element_or_handle)
 Obtaines a neighbor range of an element within a segment. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the segment.
template<typename ElementTypeOrTagT , typename ConnectorElementTypeOrTagT , typename SegmentationT , typename ElementOrHandleT >
result_of::const_neighbor_range
< segment_handle
< SegmentationT >
, ElementTypeOrTagT,
ConnectorElementTypeOrTagT >
::type 
neighbor_elements (segment_handle< SegmentationT > const &segment, ElementOrHandleT const &element_or_handle)
 Obtaines a const neighbor range of an element within a segment. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the segment.
template<typename PointT , typename Tag >
viennagrid::result_of::coord
< PointT >::type 
norm (PointT const &p, Tag)
 Returns the norm of a point. The type of the norm is specified by a tag. Supported tags are one_norm_tag, two_norm_tag and inf_norm_tag.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
norm (PointT const &p)
 Returns the 2-norm of a point. Result is such as if the point were transformed to Cartesian coordinates first.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
norm_1 (PointT const &p)
 Convenience shortcut for the 1-norm of a vector.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
norm_2 (PointT const &p)
 Convenience shortcut for the 2-norm of a vector.
template<typename NormTag , typename PointT , typename CoordinateSystemT >
viennagrid::result_of::coord
< PointT >::type 
norm_impl (PointT const &p, CoordinateSystemT const &)
 Dispatch for a point that needs coordinate conversion.
template<typename NormTag , typename PointT1 , int d>
viennagrid::result_of::coord
< PointT1 >::type 
norm_impl (PointT1 const &p, cartesian_cs< d >)
 Dispatch for a point that does not need coordinate conversion.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
norm_inf (PointT const &p)
 Convenience shortcut for the inf-norm of a vector.
template<typename PointAccessorT , typename ElementT >
PointAccessorT::value_type normal_vector (PointAccessorT const point_accessor, ElementT const &element)
 Calculates the normal vector of an element.
template<typename ElementT >
viennagrid::result_of::point
< ElementT >::type 
normal_vector (ElementT const &element)
 Calculates the normal vector of an element.
template<class T , std::size_t N>
bool operator!= (const static_array< T, N > &x, const static_array< T, N > &y)
template<typename CoordType , typename CoordinateSystem >
spatial_point< CoordType,
CoordinateSystem > 
operator* (double val, spatial_point< CoordType, CoordinateSystem > const &p)
 Overload for stretching a vector from the left.
template<class T , std::size_t N>
bool operator< (const static_array< T, N > &x, const static_array< T, N > &y)
template<typename CoordType , typename CoordinateSystem >
std::ostream & operator<< (std::ostream &os, spatial_point< CoordType, CoordinateSystem > const &p)
 Overload of the output stream operator. Allows simple printing to screen or streaming to file.
std::ostream & operator<< (std::ostream &os, viennagrid::null_type)
template<typename WrappedConfigType >
std::ostream & operator<< (std::ostream &os, viennagrid::element< vertex_tag, WrappedConfigType > const &el)
 Overload for the output streaming operator for the vertex type.
template<typename element_tag , typename WrappedConfigType >
std::ostream & operator<< (std::ostream &os, viennagrid::element< element_tag, WrappedConfigType > const &el)
 Overload for the output streaming operator.
template<class T , std::size_t N>
bool operator<= (const static_array< T, N > &x, const static_array< T, N > &y)
template<class T , std::size_t N>
bool operator== (const static_array< T, N > &x, const static_array< T, N > &y)
template<class T , std::size_t N>
bool operator> (const static_array< T, N > &x, const static_array< T, N > &y)
template<class T , std::size_t N>
bool operator>= (const static_array< T, N > &x, const static_array< T, N > &y)
template<typename IteratorT , typename NumericConfigT >
std::size_t orthogonalize (IteratorT start, IteratorT end, NumericConfigT nc)
 Makes a set of vectors orthogonal (Gram–Schmidt process step).
template<typename VectorIteratorT , typename VectorT >
VectorT orthogonalize_vector (VectorIteratorT it, VectorIteratorT const &end, VectorT vec)
 Makes a vector orthogonal to a set of linearly independent orthogonal vectors (Gram–Schmidt process step)
template<typename SomethingT >
result_of::element_range
< SomethingT, plc_tag >::type 
plcs (SomethingT &something)
 Function for retrieving a PLC range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT, plc_tag >::type 
plcs (SomethingT const &something)
 Function for retrieving a const PLC range object from a host object.
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<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<typename SomethingT >
result_of::element_range
< SomethingT, polygon_tag >
::type 
polygons (SomethingT &something)
 Function for retrieving a polygon range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT, polygon_tag >
::type 
polygons (SomethingT const &something)
 Function for retrieving a const polygon range object from a host object.
template<typename SomethingT >
result_of::element_range
< SomethingT,
quadrilateral_tag >::type 
quadrilaterals (SomethingT &something)
 Function for retrieving a quadrilaterals range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT,
quadrilateral_tag >::type 
quadrilaterals (SomethingT const &something)
 Function for retrieving a const quadrilateral range object from a host object.
template<typename SourceTypeOrTag , typename DestinationTypeOrTag , typename MeshOrSegmentT , typename SourceAccessorT , typename DestinationSetterT , typename AveragerT , typename SourceFilterT , typename DestinationFilterT >
void quantity_transfer (MeshOrSegmentT const &mesh_or_segment, SourceAccessorT const &accessor_src, DestinationSetterT &setter_dest, AveragerT const &averager, SourceFilterT const &filter_src, DestinationFilterT const &filter_dest)
 Transfers data defined on 'source' elements to 'destination' elements. For example, values defined on cells are tranferred to vertices.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename PointAccessorType , typename VertexCopyMapT , typename EdgeRefinementFlagAccessorT , typename RefinementVertexAccessor >
void refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, PointAccessorType point_accessor_in, VertexCopyMapT &vertex_copy_map_, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor, RefinementVertexAccessor &edge_to_vertex_handle_accessor)
 Public interface for refinement of a mesh with explicit point accessor, edge refinement accessor and temporary accessors.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename PointAccessorType , typename EdgeRefinementFlagAccessorT >
void refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, PointAccessorType point_accessor_in, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for refinement of a mesh with explicit point accessor and edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename EdgeRefinementFlagAccessorT >
void refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for refinement of a mesh with edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename PointAccessorT , typename VertexCopyMapT , typename EdgeRefinementFlagAccessorT , typename RefinementVertexAccessorT >
void refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, PointAccessorT point_accessor_in, VertexCopyMapT &vertex_copy_map_, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor, RefinementVertexAccessorT &edge_to_vertex_handle_accessor)
 Public interface for refinement of a mesh with segmentation providing explicit point accessor, edge refinement accessor and temporary accessors.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename PointAccessorT , typename EdgeRefinementFlagAccessorT >
void refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, PointAccessorT point_accessor_in, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for refinement of a mesh with segmentation providing explicit point accessor and edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename EdgeRefinementFlagAccessorT >
void refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for refinement of a mesh with segmentation providing edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename PointAccessorType , typename VertexCopyMapT , typename EdgeRefinementFlagAccessorT , typename RefinementVertexAccessor >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, PointAccessorType point_accessor_in, VertexCopyMapT vertex_copy_map_, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor, RefinementVertexAccessor edge_to_vertex_handle_accessor)
 Public interface for uniform refinement of a mesh with explicit point accessor, edge refinement accessor and temporary accessors.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename PointAccessorType , typename EdgeRefinementFlagAccessorT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, PointAccessorType point_accessor_in, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for uniform refinement of a mesh with explicit point accessor and edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename EdgeRefinementFlagAccessorT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for uniform refinement of a mesh with edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out)
 Public interface for uniform refinement of a mesh.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename PointAccessorT , typename VertexCopyMapT , typename EdgeRefinementFlagAccessorT , typename RefinementVertexAccessorT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, PointAccessorT point_accessor_in, VertexCopyMapT &vertex_copy_map_, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor, RefinementVertexAccessorT &edge_to_vertex_handle_accessor)
 Public interface for uniform refinement of a mesh with segmentation providing explicit point accessor, edge refinement accessor and temporary accessors.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename PointAccessorT , typename EdgeRefinementFlagAccessorT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, PointAccessorT point_accessor_in, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for uniform refinement of a mesh with segmentation providing explicit point accessor and edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename EdgeRefinementFlagAccessorT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor)
 Public interface for uniform refinement of a mesh with segmentation providing edge refinement accessor.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT >
void refine_uniformly (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out)
 Public interface for uniform refinement of a mesh with segmentation.
template<typename MeshT , typename ScalarT , typename PointType >
void scale (MeshT &mesh, ScalarT factor, PointType const &scaling_center)
 Function for scaling a mesh, uses scale_functor.
template<typename MeshT , typename ScalarT >
void scale (MeshT &mesh, ScalarT factor)
 Function for scaling a mesh, uses scale_functor. Scaling center is the origin.
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 base_container_collection_type , typename view_container_collection_type >
void set_base_container (base_container_collection_type &base_container_collection, view_container_collection_type &view_container_collection)
 Sets the reference to the parent container for a view. Also supports views of views, etc.
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 PointT1 , typename PointT2 >
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume (PointT1 const &p1, PointT2 const &p2)
 Returns the volume of the 1-simplex (line) spanned by the two points.
template<typename PointT1 , typename PointT2 , typename PointT3 >
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3)
 Returns the two-dimensional volume of the 2-simplex (triangle) spanned by the three points.
template<typename PointT1 , typename PointT2 , typename PointT3 , typename PointT4 >
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3, PointT4 const &p4)
 Returns the three-dimensional volume of the 3-simplex (tetrahedron) spanned by the four points.
template<typename PointT1 , typename PointT2 , typename CoordinateSystemT1 , typename CoordinateSystemT2 >
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume_impl (PointT1 const &p1, PointT2 const &p2, CoordinateSystemT1 const &, CoordinateSystemT2 const &)
 Dispatch facility for two points with possibly different coordinate systems.
template<typename PointT1 , typename PointT2 , typename PointT3 , typename CoordinateSystemT1 , typename CoordinateSystemT2 , typename CoordinateSystemT3 >
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume_impl (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3, CoordinateSystemT1 const &, CoordinateSystemT2 const &, CoordinateSystemT3 const &)
 Dispatch facility for three points with possibly different coordinate systems.
template<typename PointT1 , typename PointT2 , typename PointT3 , typename PointT4 , typename CoordinateSystemT1 , typename CoordinateSystemT2 , typename CoordinateSystemT3 , typename CoordinateSystemT4 >
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume_impl (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3, PointT4 const &p4, CoordinateSystemT1 const &, CoordinateSystemT2 const &, CoordinateSystemT3 const &, CoordinateSystemT4 const &)
 Dispatch facility for four points with possibly different coordinate systems.
template<typename PointT1 , typename PointT2 , int DimV>
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume_impl (PointT1 const &p1, PointT2 const &p2, cartesian_cs< DimV >, cartesian_cs< DimV >)
 Dispatch facility for two points in Cartesian coordinates.
template<typename PointT1 , typename PointT2 , typename PointT3 , int DimV>
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume_impl (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3, cartesian_cs< DimV >, cartesian_cs< DimV >, cartesian_cs< DimV >)
 Dispatch facility for three points in Cartesian coordinates.
template<typename PointT1 , typename PointT2 , typename PointT3 , typename PointT4 , int DimV>
viennagrid::result_of::coord
< PointT1 >::type 
signed_spanned_volume_impl (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3, PointT4 const &p4, cartesian_cs< DimV >, cartesian_cs< DimV >, cartesian_cs< DimV >, cartesian_cs< DimV >)
 Dispatch facility for four points in Cartesian coordinates.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedMeshConfigOutT , typename VertexCopyMapT , typename EdgeRefinementFlagAccessorT , typename RefinementVertexAccessorT >
void simple_refine (mesh< WrappedMeshConfigInT > const &mesh_in, mesh< WrappedMeshConfigOutT > &mesh_out, VertexCopyMapT &vertex_copy_map_, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor, RefinementVertexAccessorT const &edge_to_vertex_handle_accessor)
 Refines a mesh based on edge information. A bool accessor, indicating if an edge should be refined, and a vertex handle accessor, representing the new vertex of an edge to refine, are used for the refinement process.
template<typename ElementTypeOrTagT , typename WrappedMeshConfigInT , typename WrappedSegmentationConfigInT , typename WrappedMeshConfigOutT , typename WrappedSegmentationConfigOutT , typename VertexCopyMapT , typename EdgeRefinementFlagAccessorT , typename RefinementVertexAccessorT >
void simple_refine (mesh< WrappedMeshConfigInT > const &mesh_in, segmentation< WrappedSegmentationConfigInT > const &segmentation_in, mesh< WrappedMeshConfigOutT > &mesh_out, segmentation< WrappedSegmentationConfigOutT > &segmentation_out, VertexCopyMapT &vertex_copy_map_, EdgeRefinementFlagAccessorT const &edge_refinement_flag_accessor, RefinementVertexAccessorT const &edge_to_vertex_handle_accessor)
 Refines a mesh and a segmentation based on edge information. A bool accessor, indicating if an edge should be refined, and a vertex handle accessor, representing the new vertex of an edge to refine, are used for the refinement process.
template<typename BoundaryElementTTag , typename MeshT , typename ElementT >
viennagrid::result_of::handle
< MeshT, BoundaryElementTTag >
::type 
smallest_boundary_volume (MeshT &mesh_obj, ElementT &element)
 Returns a handle to the boundary element with the smallest volume.
template<typename BoundaryElementTTag , typename MeshT , typename ElementT >
viennagrid::result_of::const_handle
< MeshT, BoundaryElementTTag >
::type 
smallest_boundary_volume (MeshT const &mesh_obj, ElementT const &element)
 Returns a const handle to the boundary element with the smallest volume.
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
solid_angle (PointT const &a, PointT const &b, PointT const &c)
 Implementation of the spanned (solid) angle by three points with respect to the origin (the solid angle defined by the tetrahedron (a, b, c, origin)
template<typename PointT >
viennagrid::result_of::coord
< PointT >::type 
solid_angle (PointT const &p0, PointT const &p1, PointT const &p2, PointT const &origin)
 Implementation of the solid angle from an origin to p0, p1 and p2.
template<typename PointT1 , typename PointT2 >
viennagrid::result_of::coord
< PointT1 >::type 
spanned_volume (PointT1 const &p1, PointT2 const &p2)
 Returns the volume of the 1-simplex (line) spanned by the two points.
template<typename PointT1 , typename PointT2 , typename PointT3 >
viennagrid::result_of::coord
< PointT1 >::type 
spanned_volume (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3)
 Returns the two-dimensional volume of the 2-simplex (triangle) spanned by the three points.
template<typename PointT1 , typename PointT2 , typename PointT3 , typename PointT4 >
viennagrid::result_of::coord
< PointT1 >::type 
spanned_volume (PointT1 const &p1, PointT2 const &p2, PointT3 const &p3, PointT4 const &p4)
 Returns the three-dimensional volume of the 3-simplex (tetrahedron) spanned by the four points.
template<typename PointAccessorT , typename ElementTag , typename WrappedConfigT >
viennagrid::result_of::coord
< typename
PointAccessorT::value_type >
::type 
surface (PointAccessorT const accessor, viennagrid::element< ElementTag, WrappedConfigT > const &element)
 Returns the surface of a n-cell using the provided point accessor to obtain the spatial points from each vertex.
template<typename ElementTag , typename WrappedConfigT >
viennagrid::result_of::coord
< viennagrid::element
< ElementTag, WrappedConfigT >
>::type 
surface (viennagrid::element< ElementTag, WrappedConfigT > const &element)
 Returns the surface of a n-cell using the default point accessor.
template<typename ElementTypeOrTag , typename WrappedConfigT >
viennagrid::result_of::coord
< mesh< WrappedConfigT >
>::type 
surface (mesh< WrappedConfigT > const &d)
 Returns the surface of a mesh with explicit element type/tag.
template<typename WrappedConfigT >
viennagrid::result_of::coord
< mesh< WrappedConfigT >
>::type 
surface (mesh< WrappedConfigT > const &d)
 Returns the surface of a mesh.
template<typename SegmentationT >
viennagrid::result_of::coord
< typename
SegmentationT::mesh_type >
::type 
surface (segment_handle< SegmentationT > const &segment)
 Returns the surface of a segment.
template<class T , std::size_t N>
void swap (static_array< T, N > &x, static_array< T, N > &y)
 Swaps the entries of the two arrays.
template<typename SomethingT >
result_of::element_range
< SomethingT, tetrahedron_tag >
::type 
tetrahedra (SomethingT &something)
 Function for retrieving a tetrahedron range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT, tetrahedron_tag >
::type 
tetrahedra (SomethingT const &something)
 Function for retrieving a const tetrahedron range object from a host object.
template<typename PointType >
result_of::cartesian_point
< PointType >::type 
to_cartesian (PointType const &p)
 Convenience function for converting a point to Cartesian coordinates.
template<typename PointType , typename CoordinateSystem >
result_of::cartesian_point
< PointType >::type 
to_cartesian_impl (PointType const &p, CoordinateSystem const &)
 Helper function for the conversion to Cartesian coordinates. Should not be called directly. Use to_cartesian() instead.
template<typename PointType , int d>
PointType const & to_cartesian_impl (PointType const &p, cartesian_cs< d >)
 Helper function for the transformation of any point to Cartesian coordinates. Should not be called directly - use to_cartesian() instead.
template<typename PointType , int d>
PointType & to_cartesian_impl (PointType &p, cartesian_cs< d >)
 Helper function for the transformation of any point to Cartesian coordinates. Should not be called directly - use to_cartesian() instead.
template<typename SomethingT >
result_of::element_range
< SomethingT, triangle_tag >
::type 
triangles (SomethingT &something)
 Function for retrieving a triangle range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT, triangle_tag >
::type 
triangles (SomethingT const &something)
 Function for retrieving a const triangles range object from a host object.
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 SomethingT >
result_of::element_range
< SomethingT, vertex_tag >
::type 
vertices (SomethingT &something)
 Function for retrieving a vertex range object from a host object.
template<typename SomethingT >
result_of::const_element_range
< SomethingT, vertex_tag >
::type 
vertices (SomethingT const &something)
 Function for retrieving a const vertex range object from a host object.
template<typename PointAccessorT , typename ElementT >
viennagrid::result_of::coord
< typename
PointAccessorT::value_type >
::type 
volume (PointAccessorT const accessor, ElementT const &cell)
 Returns the n-dimensional volume of a n-cell.
template<typename ElementTag , typename WrappedConfigT >
viennagrid::result_of::coord
< viennagrid::element
< ElementTag, WrappedConfigT >
>::type 
volume (viennagrid::element< ElementTag, WrappedConfigT > const &cell)
 Returns the n-dimensional volume of a n-cell.
template<typename ElementTOrTag , typename WrappedConfigT >
viennagrid::result_of::coord
< mesh< WrappedConfigT >
>::type 
volume (mesh< WrappedConfigT > const &mesh_obj)
 Returns the n-dimensional volume of a whole mesh.
template<typename MeshSegmentHandleType >
viennagrid::result_of::coord
< MeshSegmentHandleType >
::type 
volume (MeshSegmentHandleType const &mesh_obj)
 Returns the n-dimensional volume of a segment.

Detailed Description

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


Typedef Documentation

A default cell for a boundary representation in 1d: vertex 1d.

A default mesh for a boundary representation in 1d: vertex 1d.

A segment for a boundary representation in 1d: vertex 1d.

A segmentation for a boundary representation in 1d: vertex 1d.

A default view for a boundary representation in 1d: vertex 1d.

A default cell for a boundary representation in 2d: line 2d.

A default mesh for a boundary representation in 2d: line 2d.

A segment for a boundary representation in 2d: line 2d.

A segmentation for a boundary representation in 2d: line 2d.

A default view for a boundary representation in 2d: line 2d.

A default cell for a boundary representation in 3d: plc 3d.

A default mesh for a boundary representation in 3d: plc 3d.

A segment for a boundary representation in 3d: plc 3d.

A segmentation for a boundary representation in 3d: plc 3d.

A default view for a boundary representation in 3d: plc 3d.

typedef viennagrid::result_of::segment_handle< cell_only_line_1d_segmentation >::type cell_only_line_1d_segment_handle

A thin segment for lines including only cells in 1d, thin config is used.

A thin segmentation for lines including only cells in 1d, thin config is used.

typedef viennagrid::result_of::segment_handle< cell_only_line_2d_segmentation >::type cell_only_line_2d_segment_handle

A thin segment for lines including only cells in 2d, thin config is used.

A thin segmentation for lines including only cells in 2d, thin config is used.

typedef viennagrid::result_of::segment_handle< cell_only_line_3d_segmentation >::type cell_only_line_3d_segment_handle

A thin segment for lines including only cells in 3d, thin config is used.

A thin segmentation for lines including only cells in 3d, thin config is used.

typedef viennagrid::make_typemap< default_tag, std_deque_tag >::type default_container_config

A typemap defining default container configuration for a container collection.

typedef viennagrid::make_typemap< default_tag, std_set_tag<id_compare_tag> >::type default_view_container_config

A typemap defining default container configuration for a view container collection.

typedef std::size_t dim_type

A global size_type equivalent for use throughout ViennaData.

typedef simplex_tag<1> edge_tag

Convenience type definition for a line (same as line_tag)

A default cell for hexahedrons in 3d, default config is used.

A default mesh for hexahedrons in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< hexahedral_3d_segmentation >::type hexahedral_3d_segment_handle

A default segment for hexahedrons in 3d, default config is used.

A default segmentation for hexahedrons in 3d, default config is used.

A default mesh view for hexahedrons in 3d, default config is used.

typedef hypercube_tag<3> hexahedron_tag

Convenience type definition for a hexahedron.

A default cell for lines in 1d, default config is used.

A default mesh for lines in 1d, default config is used.

typedef viennagrid::result_of::segment_handle< line_1d_segmentation >::type line_1d_segment_handle

A default segment for lines in 1d, default config is used.

A default segmentation for lines in 1d, default config is used.

A default mesh view for lines in 1d, default config is used.

A default cell for lines in 2d, default config is used.

A default mesh for lines in 2d, default config is used.

typedef viennagrid::result_of::segment_handle< line_2d_segmentation >::type line_2d_segment_handle

A default segment for lines in 2d, default config is used.

A default segmentation for lines in 2d, default config is used.

A default mesh view for lines in 2d, default config is used.

A default cell for lines in 3d, default config is used.

A default mesh for lines in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< line_3d_segmentation >::type line_3d_segment_handle

A default segment for lines in 3d, default config is used.

A default segmentation for lines in 3d, default config is used.

A default mesh view for lines in 3d, default config is used.

typedef simplex_tag<1> line_tag

Convenience type definition for a line (same as edge_tag)

A default cell for PLCs in 3d, default config is used.

A default mesh for PLCs in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< plc_3d_segmentation >::type plc_3d_segment_handle

A default segment for PLCs in 3d, default config is used.

A default segmentation for PLCs in 3d, default config is used.

A default mesh view for PLCs in 3d, default config is used.

A default cell for polygons in 2d, default config is used.

A default mesh for polygons in 2d, default config is used.

typedef viennagrid::result_of::segment_handle< polygonal_2d_segmentation >::type polygonal_2d_segment_handle

A default segment for polygons in 2d, default config is used.

A default segmentation for polygons in 2d, default config is used.

A default mesh view for polygons in 2d, default config is used.

A default cell for polygons in 3d, default config is used.

A default mesh for polygons in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< polygonal_3d_segmentation >::type polygonal_3d_segment_handle

A default segment for polygons in 3d, default config is used.

A default segmentation for polygons in 3d, default config is used.

A default mesh view for polygons in 3d, default config is used.

A default cell for quadrilaterals in 2d, default config is used.

A default mesh for quadrilaterals in 2d, default config is used.

typedef viennagrid::result_of::segment_handle< quadrilateral_2d_segmentation >::type quadrilateral_2d_segment_handle

A default segment for quadrilaterals in 2d, default config is used.

A default segmentation for quadrilaterals in 2d, default config is used.

A default mesh view for quadrilaterals in 2d, default config is used.

A default cell for quadrilaterals in 3d, default config is used.

A default mesh for quadrilaterals in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< quadrilateral_3d_segmentation >::type quadrilateral_3d_segment_handle

A default segment for quadrilaterals in 3d, default config is used.

A default segmentation for quadrilaterals in 3d, default config is used.

A default mesh view for quadrilaterals in 3d, default config is used.

typedef hypercube_tag<2> quadrilateral_tag

Convenience type definition for a quadrilateral.

A default cell for tetrahedrons in 3d, default config is used.

A default mesh for tetrahedrons in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< tetrahedral_3d_segmentation >::type tetrahedral_3d_segment_handle

A default segment for tetrahedrons in 3d, default config is used.

A default segmentation for tetrahedrons in 3d, default config is used.

A default mesh view for tetrahedrons in 3d, default config is used.

Convenience type definition for a tetrahedron.

typedef viennagrid::result_of::segment_handle< thin_cell_only_tetrahedral_3d_segmentation >::type thin_cell_only_tetrahedral_3d_segment_handle

A thin segment for tetrahedrons including only cells in 3d, thin config is used.

A thin segmentation for tetrahedrons including only cells in 3d, thin config is used.

typedef viennagrid::result_of::segment_handle< thin_cell_only_triangular_2d_segmentation >::type thin_cell_only_triangular_2d_segment_handle

A thin segment for triangles including only cells in 2d, thin config is used.

A thin segmentation for triangles including only cells in 2d, thin config is used.

typedef viennagrid::result_of::segment_handle< thin_cell_only_triangular_3d_segmentation >::type thin_cell_only_triangular_3d_segment_handle

A thin segment for triangles including only cells in 3d, thin config is used.

A thin segmentation for triangles including only cells in 3d, thin config is used.

A thin cell for tetrahedrons in 3d, thin config is used.

A thin mesh for tetrahedrons in 3d, thin config is used.

typedef viennagrid::result_of::segment_handle< thin_tetrahedral_3d_segmentation >::type thin_tetrahedral_3d_segment_handle

A thin segment for tetrahedrons in 3d, thin config is used.

A thin segmentation for tetrahedrons in 3d, thin config is used.

A thin mesh view for tetrahedrons in 3d, thin config is used.

A thin cell for triangles in 2d, thin config is used.

A thin mesh for triangles in 2d, thin config is used.

typedef viennagrid::result_of::segment_handle< thin_triangular_2d_segmentation >::type thin_triangular_2d_segment_handle

A thin segment for triangles in 2d, thin config is used.

A thin segmentation for triangles in 2d, thin config is used.

A thin mesh view for triangles in 2d, thin config is used.

A thin cell for triangles in 3d, thin config is used.

A thin mesh for triangles in 3d, thin config is used.

typedef viennagrid::result_of::segment_handle< thin_triangular_3d_segmentation >::type thin_triangular_3d_segment_handle

A thin segment for triangles in 3d, thin config is used.

A thin segmentation for triangles in 3d, thin config is used.

A thin mesh view for triangles in 3d, thin config is used.

typedef viennagrid::result_of::segment_handle< thin_triangular_hull_3d_segmentation >::type thin_triangular_hull_3d_segment_handle

An oriented hull segmentat for triangles in 3d, thin config is used.

An oriented hull segmentation for triangles in 3d, thin config is used.

Convenience type definition for a triangle.

A default cell for triangles in 2d, default config is used.

A default mesh for triangles in 2d, default config is used.

typedef viennagrid::result_of::segment_handle< triangular_2d_segmentation >::type triangular_2d_segment_handle

A default segment for triangles in 2d, default config is used.

A default segmentation for triangles in 2d, default config is used.

A default mesh view for triangles in 2d, default config is used.

A default cell for triangles in 3d, default config is used.

A default mesh for triangles in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< triangular_3d_segmentation >::type triangular_3d_segment_handle

A default segment for triangles in 3d, default config is used.

A default segmentation for triangles in 3d, default config is used.

A default mesh view for triangles in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< triangular_hull_3d_segmentation >::type triangular_hull_3d_segment_handle

An oriented hull segmentat for triangles in 3d, default config is used.

An oriented hull segmentation for triangles in 3d, default config is used.

A default cell for vertices in 1d, default config is used.

A default mesh for vertices in 1d, default config is used.

typedef viennagrid::result_of::segment_handle< vertex_1d_segmentation >::type vertex_1d_segment_handle

A default segment for vertices in 1d, default config is used.

A default segmentation for vertices in 1d, default config is used.

A default mesh view for vertices in 1d, default config is used.

A default cell for vertices in 2d, default config is used.

A default mesh for vertices in 2d, default config is used.

typedef viennagrid::result_of::segment_handle< vertex_2d_segmentation >::type vertex_2d_segment_handle

A default segment for vertices in 2d, default config is used.

A default segmentation for vertices in 2d, default config is used.

A default mesh view for vertices in 2d, default config is used.

A default cell for vertices in 3d, default config is used.

A default mesh for vertices in 3d, default config is used.

typedef viennagrid::result_of::segment_handle< vertex_3d_segmentation >::type vertex_3d_segment_handle

A default segment for vertices in 3d, default config is used.

A default segmentation for vertices in 3d, default config is used.

A default mesh view for vertices in 3d, default config is used.

typedef simplex_tag<0> vertex_tag

Convenience type definition for a vertex.


Function Documentation

void viennagrid::add ( SegmentHandleT &  segment,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Adds an element to a segment, all boundary elements are added recursively.

Template Parameters:
SegmentHandleTThe segment type
ElementTagTThe element tag of the element
WrappedConfigTThe wrapped config of the element
Parameters:
segmentThe segment object to which the element is added
elementThe element object to be added
void viennagrid::add ( SegmentHandleT &  segment,
ElementHandleT  element_handle 
)

Adds an element to a segment, all boundary elements are added recursively.

Template Parameters:
SegmentHandleTThe segment type
ElementHandleTThe element tag of the element
Parameters:
segmentThe segment object to which the element is added
element_handleA handle of the element object to be added
void viennagrid::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 Parameters:
WrappedConfigTThe wrapped config of the segmentation
ElementTagTThe element tag of the element
WrappedConfigTThe wrapped config of the element
Parameters:
segmentation_objThe segmentation object
segment_idThe id of the segment element is added
elementThe element object to be added
void viennagrid::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 Parameters:
WrappedConfigTThe wrapped config of the segmentation
ElementHandleTThe element tag of the element
Parameters:
segmentation_objThe segmentation object
segment_idThe id of the segment element is added
element_handleA handle of the element object to be added
void viennagrid::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 Parameters:
WrappedConfigTThe wrapped config of the segmentation
SegmentIDIteratorTThe segment id iterator type
ElementTagTThe element tag of the element
WrappedConfigTThe wrapped config of the element
Parameters:
segmentation_objThe segmentation
segment_ids_itThe begin segment id iterator
segment_ids_endThe end segment id iterator
elementThe element to be added
void viennagrid::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 Parameters:
WrappedConfigTThe wrapped config of the segmentation
SegmentIDIteratorTThe segment id iterator type
ElementHandleTThe element tag of the element
Parameters:
segmentation_objThe segmentation object
segment_ids_itThe begin segment id iterator
segment_ids_endThe end segment id iterator
element_handleA handle of the element object to be added
void viennagrid::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 Parameters:
ViewTThe view/segment type
HandleTThe handle to be added
Parameters:
view_or_segmentThe view/segment object
handleThe handle object to be inserted
iterator_type viennagrid::advance ( iterator_type const &  in,
distance_type  distance 
)

Advances an iterator and returns it.

Parameters:
inthe input iterator
distancethe distance to advance
Returns:
the iterator, advanced by distance
void viennagrid::affine_transform ( MeshT &  mesh,
typename viennagrid::result_of::coord< MeshT >::type const *  matrix,
typename viennagrid::result_of::point< MeshT >::type const &  translation 
)

Function for an affine transformation of a mesh, uses affine_transform_functor.

Parameters:
meshThe input mesh
matrixThe matrix representing the linear transformation part, row major layout. Attention! There are no out-of boundary checks, the user is responsible to provide a suitable matrix pointer.
translationThe translation vector
viennagrid::result_of::coord<PointT>::type viennagrid::angle ( PointT const &  v0,
PointT const &  v1 
)

Implementation of the spanned angle between two vectors (i.e. the angle between the rays connecting v0 and v1 with the origin)

viennagrid::result_of::coord<PointT>::type viennagrid::angle ( PointT const &  p0,
PointT const &  p1,
PointT const &  origin 
)

Implementation of the angle between two lines directing from origin to p0 and p1.

void viennagrid::apply_voronoi ( MeshT const &  mesh_obj,
InterfaceAreaAccessorT  interface_area_accessor,
InterfaceAreaCellContributionAccessorT  interface_area_cell_contribution_accessor,
VertexBoxVolumeAccessorT  vertex_box_volume_accessor,
VertexBoxVolumeCellContributionAccessorT  vertex_box_volume_cell_contribution_accessor,
EdgeBoxVolumeAccessorT  edge_box_volume_accessor,
EdgeBoxVolumeCellContributionAccessorT  edge_box_volume_cell_contribution_accessor 
)

Writes Voronoi information to the mesh or segment using the provided accessors.

Template Parameters:
ElementTypeOrTagTThe element/cell type/tag for which the voronoi information is calculated
Parameters:
mesh_objThe mesh
interface_area_accessorAn accessor where the interface areas are stored
interface_area_cell_contribution_accessorAn accessor where the interface area element contributions are stored
vertex_box_volume_accessorAn accessor where the vertex box volumes are stored
vertex_box_volume_cell_contribution_accessorAn accessor where the vertex box volume element contributions are stored
edge_box_volume_accessorAn accessor where the edge box volumes are stored
edge_box_volume_cell_contribution_accessorAn accessor where the edge box volume element contributions are stored
viennagrid::result_of::coord<SomethingT1>::type viennagrid::boundary_distance ( PointAccessorT const  accessor,
SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the distance between elements, segments and/or meshs.

Parameters:
accessorAccessor functor for obtaining a point from a vertex
el1The first element/mesh/vertex
el2The second element/mesh/vertex
viennagrid::result_of::coord<SomethingT1>::type viennagrid::boundary_distance ( SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the distance between elements, segments and/or meshs.

viennagrid::result_of::coord<SomethingT>::type viennagrid::boundary_distance ( SomethingT const &  el1,
spatial_point< CoordT, CoordinateSystemT > const &  el2 
)

Returns the distance between a point and an element, segment and/or mesh.

viennagrid::result_of::coord<SomethingT>::type viennagrid::boundary_distance ( spatial_point< CoordT, CoordinateSystemT > const &  el1,
SomethingT const &  el2 
)

Returns the distance between a point and an element, segment and/or mesh.

std::pair< typename std::iterator_traits<PointIteratorT>::value_type, typename std::iterator_traits<PointIteratorT>::value_type > viennagrid::bounding_box ( PointIteratorT  it,
PointIteratorT const &  it_end 
)

Calculates the bounding box of a point iterator range. A pair of points is return, where the first represents the coordinate-wise minimum and the second represents the coordinate-wise maximum.

Parameters:
itThe start point iterator
it_endThe end point iterator
std::pair< typename viennagrid::result_of::point<MeshT>::type, typename viennagrid::result_of::point<MeshT>::type > viennagrid::bounding_box ( MeshT const &  mesh)

Calculates the bounding box a mesh. A pair of points is return, where the first represents the coordinate-wise minimum and the second represents the coordinate-wise maximum.

Parameters:
meshThe input mesh
void viennagrid::cell_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
CellRefinementFlagAccessorT const  cell_refinement_flag_accessor 
)

Public interface for refinement of cells of a mesh with cell refinement accessor. If there is more than one cell type this funcion will fail.

Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
cell_refinement_flag_accessorAccessor storing flags if a cell is marked for refinement
void viennagrid::cell_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
CellRefinementFlagAccessorT const  cell_refinement_flag_accessor 
)

Public interface for refinement of cells of a mesh with segmentation providing cell refinement accessor. Will fail if there is more than one cell type.

Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
cell_refinement_flag_accessorAccessor storing flags if a cell is marked for refinement
void viennagrid::cell_refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out 
)

Public interface for uniform refinement of cells of a mesh. Will fail if there is more than one cell type.

Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
void viennagrid::cell_refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out 
)

Public interface for uniform refinement of cells of a mesh with segmentation. Will fail if there is more than one cell type.

Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
void viennagrid::cell_refinement_to_edge_refinement ( mesh< WrappedMeshConfigInT > const &  mesh_in,
CellRefinementFlagAccessorT  cell_refinement_flag,
EdgeRefinementFlagAccessorT  edge_refinement_flag_accessor 
)

Transfers tags for refinement from the cell to edges.

result_of::cell_range<SomethingT>::type viennagrid::cells ( SomethingT &  something)

Function for retrieving a cell range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A cell range
result_of::const_cell_range<SomethingT>::type viennagrid::cells ( SomethingT const &  something)

Function for retrieving a const cell range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const cell range
PointAccessorT::value_type viennagrid::centroid ( PointAccessorT const  accessor,
ElementT const &  element 
)

The public interface function for the computation of a centroid of an element with explicit point accessor.

Parameters:
elementThe element for which the centroid should be computed
accessorThe point accessor providing point information for geometric calculation
viennagrid::result_of::point< viennagrid::element<ElementTag,WrappedConfigT> >::type viennagrid::centroid ( viennagrid::element< ElementTag, WrappedConfigT > const &  element)

The public interface function for the computation of a centroid of an element.

Parameters:
elementThe element for which the centroid should be computed
viennagrid::result_of::point< mesh<WrappedConfigT> >::type viennagrid::centroid ( mesh< WrappedConfigT > const &  mesh_obj,
PointAccessorT const  point_accessor 
)

The public interface function for the computation of a centroid of a mesh with explicit point accessor.

Template Parameters:
ElementTOrTagTThe element type/tag of the elements for which the centroid is calculcated
Parameters:
mesh_objThe mesh which centroid is to be calculated
point_accessorThe point accessor providing point information for geometric calculation
viennagrid::result_of::point< mesh<WrappedConfigT> >::type viennagrid::centroid ( mesh< WrappedConfigT > const &  mesh_obj,
PointAccessorT const  point_accessor 
)

The public interface function for the computation of a centroid of a mesh with explicit point accessor. Cells are used for centroid calculation, will fail if there is more than one cell type.

Parameters:
mesh_objThe mesh which centroid is to be calculated
point_accessorThe point accessor providing point information for geometric calculation
viennagrid::result_of::point< mesh<WrappedConfigT> >::type viennagrid::centroid ( mesh< WrappedConfigT > const &  mesh_obj)

The public interface function for the computation of a centroid of a mesh.

Template Parameters:
ElementTOrTagTThe element type/tag of the elements for which the centroid is calculcated
Parameters:
mesh_objThe mesh which centroid is to be calculated
viennagrid::result_of::point< mesh<WrappedConfigT> >::type viennagrid::centroid ( mesh< WrappedConfigT > const &  mesh_obj)

The public interface function for the computation of a centroid of a mesh. Cells are used for centroid calculation, will fail if there is more than one cell type.

Parameters:
mesh_objThe mesh which centroid is to be calculated
viennagrid::result_of::point< segment_handle<SegmentationT> >::type viennagrid::centroid ( segment_handle< SegmentationT > const &  segment,
PointAccessorT const  point_accessor 
)

The public interface function for the computation of a centroid of a segment with explicit point accessor.

Template Parameters:
ElementTOrTagTThe element type/tag of the elements for which the centroid is calculcated
Parameters:
segmentThe segment which centroid is to be calculated
point_accessorThe point accessor providing point information for geometric calculation
viennagrid::result_of::point< segment_handle<SegmentationT> >::type viennagrid::centroid ( segment_handle< SegmentationT > const &  segment,
PointAccessorT const  point_accessor 
)

The public interface function for the computation of a centroid of a segment with explicit point accessor. Cells are used for centroid calculation, will fail if there is more than one cell type.

Parameters:
segmentThe segment which centroid is to be calculated
point_accessorThe point accessor providing point information for geometric calculation
viennagrid::result_of::point< segment_handle<SegmentationT> >::type viennagrid::centroid ( segment_handle< SegmentationT > const &  segment)

The public interface function for the computation of a centroid of a segment.

Template Parameters:
ElementTOrTagTThe element type/tag of the elements for which the centroid is calculcated
Parameters:
segmentThe segment which centroid is to be calculated
viennagrid::result_of::point< segment_handle<SegmentationT> >::type viennagrid::centroid ( segment_handle< SegmentationT > const &  segment)

The public interface function for the computation of a centroid of a segment. Cells are used for centroid calculation, will fail if there is more than one cell type.

Parameters:
segmentThe segment which centroid is to be calculated
PointAccessorT::value_type viennagrid::circumcenter ( PointAccessorT const  accessor,
ElementT const &  element 
)

The public interface function for the calculation of the circumcenter with explicit point accessor.

Parameters:
elementThe element for which the circumcenter should be computed
accessorThe point accessor providing point information for geometric calculation
viennagrid::result_of::point< ElementT >::type viennagrid::circumcenter ( ElementT const &  element)

The public interface function for the calculation of the circumcenter.

Parameters:
elementThe element for which the circumcenter should be computed
void viennagrid::clear ( segment_handle< SegmentationT > &  segment_)

Completely clears a segmentation.

void viennagrid::clear ( mesh< WrappedConfigT > &  mesh_)

Completely clears a mesh.

void viennagrid::clear ( segmentation< WrappedConfigT > &  segmentation_)

Completely clears a segmentation.

std::pair< typename PointAccessorT::value_type, typename PointAccessorT::value_type > viennagrid::closest_points ( PointAccessorT const  accessor,
SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the distance between n-cells.

std::pair< typename viennagrid::result_of::point<SomethingT1>::type, typename viennagrid::result_of::point<SomethingT1>::type > viennagrid::closest_points ( SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the closest points between two elements/segments using the default accessor for geometric points on vertices.

std::pair< typename PointAccessorT::value_type, typename PointAccessorT::value_type > viennagrid::closest_points_on_boundary ( PointAccessorT const  accessor,
SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the closest points between two elements/segments using the provided accessor for geometric points on vertices.

std::pair< typename viennagrid::result_of::point<SomethingT1>::type, typename viennagrid::result_of::point<SomethingT1>::type > viennagrid::closest_points_on_boundary ( SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the distance between n-cells.

result_of::coboundary_range< viennagrid::mesh< WrappedConfigT >, ElementTypeOrTagT, CoboundaryTypeOrTagT >::type coboundary_elements ( viennagrid::mesh< WrappedConfigT > &  mesh_obj,
ElementOrHandleT const &  element_or_handle 
)

Obtaines a coboundary range of an element within a mesh. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the mesh.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the coboundary range is obtained
CoboundaryTypeOrTagTThe coboundary element type/tag
WrappedConfigTThe wrapped config of the mesh
ElementOrHandleTThe element or handle type for which the coboundary range is obtained
Parameters:
mesh_objThe host mesh object in which the elements of the coboundary range exist
element_or_handleA handle or the element for which the coboundary range is obained
Returns:
The coboundary range
result_of::const_coboundary_range< viennagrid::mesh< WrappedConfigT >, ElementTypeOrTagT, CoboundaryTypeOrTagT >::type coboundary_elements ( viennagrid::mesh< WrappedConfigT > const &  mesh_obj,
ElementOrHandleT const &  element_or_handle 
)

Obtaines a const coboundary range of an element within a mesh. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the mesh.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the coboundary range is obtained
CoboundaryTypeOrTagTThe coboundary element type/tag
WrappedConfigTThe wrapped config of the mesh
ElementOrHandleTThe element or handle type for which the coboundary range is obtained
Parameters:
mesh_objThe host mesh object in which the elements of the coboundary range exist
element_or_handleA handle or the element for which the coboundary range is obained
Returns:
The const coboundary range
result_of::coboundary_range< segment_handle< SegmentationT >, ElementTypeOrTagT, CoboundaryTypeOrTagT >::type coboundary_elements ( segment_handle< SegmentationT > &  segment,
element_or_handle_type const &  element_or_handle 
)

Obtaines a coboundary range of an element within a segment. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the segment.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the coboundary range is obtained
CoboundaryTypeOrTagTThe coboundary element type/tag
SegmentationTThe segmentation type of the segment type
ElementOrHandleTThe element or handle type for which the coboundary range is obtained
Parameters:
segmentThe host segment object in which the elements of the coboundary range exist
element_or_handleA handle or the element for which the coboundary range is obained
Returns:
The coboundary range
result_of::const_coboundary_range< segment_handle< SegmentationT >, ElementTypeOrTagT, CoboundaryTypeOrTagT >::type coboundary_elements ( segment_handle< SegmentationT > const &  segment,
element_or_handle_type const &  element_or_handle 
)

Obtaines a const coboundary range of an element within a segment. This function caches the coboundary information and re-creates it if the cached information is out of date. The runtime of a re-creation is linear in the number of elements of type CoboundaryTypeOrTagT within the segment.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the coboundary range is obtained
CoboundaryTypeOrTagTThe coboundary element type/tag
SegmentationTThe segmentation type of the segment type
ElementOrHandleTThe element or handle type for which the coboundary range is obtained
Parameters:
segmentThe host segment object in which the elements of the coboundary range exist
element_or_handleA handle or the element for which the coboundary range is obained
Returns:
The const coboundary range
void viennagrid::copy ( SrcMeshT const &  src_mesh,
DstMeshT &  dst_mesh,
ToCopyFunctorT  functor 
)

Copies the cells of a mesh if a boolean functor is true.

Parameters:
src_meshThe source mesh
dst_meshThe destination mesh
functorBoolean functor, if functor(cell) returns true, the cell is copied.
void viennagrid::copy ( SrcMeshT const &  src_mesh,
SrcSegmentationT const &  src_segmentation,
DstMeshT &  dst_mesh,
DstSegmentationT &  dst_segmentation,
ToCopyFunctorT  functor 
)

Copies the cells of a mesh and a segmentation if a boolean functor is true.

Parameters:
src_meshThe source mesh
src_segmentationThe source segmentation
dst_meshThe destination mesh
dst_segmentationThe destination segmentation
functorBoolean functor, if functor(cell) returns true, the cell is copied.
viennagrid::result_of::handle< MeshOrSegmentHandleT, typename viennagrid::result_of::element_tag< ElementT >::type >::type copy_element ( ElementT const &  element,
MeshOrSegmentHandleT &  mesh_segment,
typename viennagrid::result_of::coord< MeshOrSegmentHandleT >::type  tolerance 
)

Function for copying an element to a mesh or segment.

Template Parameters:
ElementTThe element type which is copied
MeshOrSegmentHandleTThe mesh or segment type where the element is created
Parameters:
elementThe element which is copied
mesh_segmentThe mesh or segment object where the element is copied to
toleranceAn absolute tolerance of the 2-norm for checking if two points are equal. If tolerance is less of equal to zero, no quality check is performed.
Returns:
A handle to the copied element
viennagrid::result_of::handle< MeshOrSegmentHandleT, typename viennagrid::result_of::element_tag< ElementT >::type >::type copy_element ( ElementT const &  element,
MeshOrSegmentHandleT &  mesh_segment 
)

Function for copying an element to a mesh or segment.

Template Parameters:
ElementTThe element type which is copied
MeshOrSegmentHandleTThe mesh or segment type where the element is created
Parameters:
elementThe element which is copied
mesh_segmentThe mesh or segment object where the element is copied to
Returns:
A handle to the copied element
void viennagrid::copy_element_by_handles ( InputMeshOrSegmentHandleT const &  input_mesh,
ElementHandleIteratorT const &  begin,
ElementHandleIteratorT const &  end,
OutputMeshOrSegmentHandleT &  output_mesh,
typename viennagrid::result_of::coord< OutputMeshOrSegmentHandleT >::type  tolerance 
)

Function for copying an element handle iterator range to a mesh or segment.

Template Parameters:
InputMeshOrSegmentHandleTThe mesh or segment type where the original elements live
ElementHandleIteratorTThe element handle iterator type which is copied
OutputMeshOrSegmentHandleTThe mesh or segment type where the elements are created
Parameters:
input_meshThe mesh or segment object where the original elements live
beginThe begin of element handle the iterator range of element to be copied
endThe end of the element handle iterator range of element to be copied
output_meshThe mesh or segment object where the elements are copied to
toleranceAn absolute tolerance of the 2-norm for checking if two points are equal. If tolerance is less of equal to zero, no quality check is performed.
void viennagrid::copy_element_by_handles ( InputMeshOrSegmentHandleT const &  input_mesh,
ElementHandleIteratorT const &  begin,
ElementHandleIteratorT const &  end,
OutputMeshOrSegmentHandleT &  output_mesh 
)

Function for copying an element handle iterator range to a mesh or segment.

Template Parameters:
InputMeshOrSegmentHandleTThe mesh or segment type where the original elements live
ElementHandleIteratorTThe element handle iterator type which is copied
OutputMeshOrSegmentHandleTThe mesh or segment type where the elements are created
Parameters:
input_meshThe mesh or segment object where the original elements live
beginThe begin of element handle the iterator range of element to be copied
endThe end of the element handle iterator range of element to be copied
output_meshThe mesh or segment object where the elements are copied to
void copy_elements ( ElementIteratorT const &  begin,
ElementIteratorT const &  end,
OutputMeshOrSegmentHandleT &  output_mesh,
typename viennagrid::result_of::coord< OutputMeshOrSegmentHandleT >::type  tolerance 
)

Function for copying an element iterator range to a mesh or segment.

Template Parameters:
ElementIteratorTThe element iterator type which is copied
OutputMeshOrSegmentHandleTThe mesh or segment type where the elements are created
Parameters:
beginThe begin of the element iterator range of element to be copied
endThe end of the element iterator range of element to be copied
output_meshThe mesh or segment object where the elements are copied to
toleranceAn absolute tolerance of the 2-norm for checking if two points are equal. If tolerance is less of equal to zero, no quality check is performed.
void copy_elements ( ElementIteratorT const &  begin,
ElementIteratorT const &  end,
OutputMeshOrSegmentHandleT &  output_mesh 
)

Function for copying an element iterator range to a mesh or segment.

Template Parameters:
ElementIteratorTThe element iterator type which is copied
OutputMeshOrSegmentHandleTThe mesh or segment type where the elements are created
Parameters:
beginThe begin of the element iterator range of element to be copied
endThe end of the element iterator range of element to be copied
output_meshThe mesh or segment object where the elements are copied to
void viennagrid::copy_elements_by_handle ( InputMeshOrSegmentHandleT const &  input_mesh,
ElementHandleIteratorT const &  begin,
ElementHandleIteratorT const &  end,
OutputMeshOrSegmentHandleT &  output_mesh,
typename viennagrid::result_of::coord< OutputMeshOrSegmentHandleT >::type  tolerance 
)
void viennagrid::copy_elements_by_handle ( InputMeshOrSegmentHandleT const &  input_mesh,
ElementHandleIteratorT const &  begin,
ElementHandleIteratorT const &  end,
OutputMeshOrSegmentHandleT &  output_mesh 
)
void viennagrid::copy_segmentation ( SourceMeshT const &  src_mesh_,
SourceSegmentationT const &  src_segmentation_,
DestinationMeshT &  dst_mesh_,
DestinationSegmentationT &  dst_segmentation_ 
)

Copies a segmentation. Warning: may be slow!

Parameters:
src_mesh_The source mesh
src_segmentation_The source segmentation
dst_mesh_The destination mesh
dst_segmentation_The destination segmentation
PointT1 viennagrid::cross_prod ( PointT1 const &  v1,
PointT2 const &  v2 
)

Returns the cross product of two vectors. If the vectors have one or two components only, the zero vector is returned.

Parameters:
v1The first vector given in some coordinate system
v2The second vector given in another coordinate system
PointT1 viennagrid::cross_prod_impl ( PointT1 const &  p1,
PointT2 const &  p2,
CSystem1 const &  ,
CSystem2 const &   
)

Dispatched cross product function having information about the coordinate systems. Transforms to Cartesian coordinates and forwards to calculation.

PointT1 viennagrid::cross_prod_impl ( PointT1 const &  p1,
PointT2 const &  p2,
cartesian_cs< d >  ,
cartesian_cs< d >   
)

Dispatched cross product function having information about the coordinate systems. Points are already in Cartesian coordinates, thus forwarding to the worker function directly.

result_of::default_point_accessor<mesh_or_element_type>::type viennagrid::default_point_accessor ( mesh_or_element_type const &  )

Convenience function for returning the default point accessor (i.e. accessing the point stored in the element's appendix) for a mesh or element.

detail::result_of::value_type<HandleT>::type& viennagrid::dereference_handle ( segment_handle< SegmentationT > &  segment_handle,
HandleT const &  handle 
)

Function for dereferencing a handle using a segment object.

Parameters:
segment_handleThe host segment object
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
detail::result_of::value_type<HandleT>::type const& viennagrid::dereference_handle ( segment_handle< SegmentationT > const &  segment_handle,
HandleT const &  handle 
)

Function for dereferencing a handle using a segment object.

Parameters:
segment_handleThe host segment object
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
viennagrid::detail::result_of::value_type<HandleT>::type& viennagrid::dereference_handle ( mesh< WrappedMeshConfigT > &  mesh_obj,
HandleT const &  handle 
)

Function for dereferencing a handle using a mesh/segment object.

Template Parameters:
WrappedConfigTThe wrapped config of the mesh/segment type
HandleTA handle type
Parameters:
mesh_objThe host mesh/segment object
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
detail::result_of::value_type<handle_type>::type& viennagrid::dereference_handle ( viennagrid::element< element_tag, WrappedConfigType > &  element,
handle_type const &  handle 
)

Function for dereferencing a handle using a host element.

Parameters:
elementThe host element
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
viennagrid::detail::result_of::value_type<HandleT>::type const& viennagrid::dereference_handle ( mesh< WrappedMeshConfigT > const &  mesh_obj,
HandleT const &  handle 
)

Function for dereferencing a handle using a mesh/segment object, const version.

Template Parameters:
WrappedConfigTThe wrapped config of the mesh/segment type
HandleTA handle type
Parameters:
mesh_objThe host mesh/segment object
handleThe handle to be dereferenced
Returns:
A C++ const reference to an element which is referenced by handle
const detail::result_of::value_type<handle_type>::type& viennagrid::dereference_handle ( viennagrid::element< element_tag, WrappedConfigType > const &  element,
handle_type const &  handle 
)

Function for dereferencing a handle using a host element.

Parameters:
elementThe host element
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
detail::result_of::value_type<HandleT>::type& viennagrid::dereference_handle ( segmentation< WrappedConfigT > &  segmentation_,
HandleT const &  handle 
)

Function for dereferencing a handle using a segmentation.

Parameters:
segmentation_The segmentation object
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
detail::result_of::value_type<HandleT>::type const& viennagrid::dereference_handle ( segmentation< WrappedConfigT > const &  segmentation_,
HandleT const &  handle 
)

Function for dereferencing a handle using a segmentation.

Parameters:
segmentation_The segmentation object
handleThe handle to be dereferenced
Returns:
A C++ reference to an element which is referenced by handle
viennagrid::element<ElementTagT, WrappedConfigT>& viennagrid::dereference_handle ( viennagrid::mesh< WrappedMeshConfigT > &  ,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Function for dereferencing an element -> identity.

Template Parameters:
WrappedMeshConfigTWrapped config of the mesh type
ElementTagTElement tag of the element to dereference
WrappedConfigTWrapped config of the element to dereference
Parameters:
elementThe element to be derferenced, this object is returned
Returns:
element (identity)
viennagrid::element<ElementTagT, WrappedConfigT>& viennagrid::dereference_handle ( viennagrid::segment_handle< WrappedMeshConfigT > &  ,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Function for dereferencing an element -> identity.

Template Parameters:
WrappedMeshConfigTWrapped config of the mesh type
ElementTagTElement tag of the element to dereference
WrappedConfigTWrapped config of the element to dereference
Parameters:
elementThe element to be derferenced, this object is returned
Returns:
element (identity)
viennagrid::element<ElementTagT, WrappedConfigT>& viennagrid::dereference_handle ( viennagrid::element< HostElementTagT, WrappedHostElementConfigT > &  ,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Function for dereferencing an element -> identity.

Template Parameters:
WrappedMeshConfigTWrapped config of the mesh type
ElementTagTElement tag of the element to dereference
WrappedConfigTWrapped config of the element to dereference
Parameters:
elementThe element to be derferenced, this object is returned
Returns:
element (identity)
viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::mesh< WrappedMeshConfigT > const &  ,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Function for dereferencing a const element -> identity.

Template Parameters:
WrappedMeshConfigTWrapped config of the mesh type
ElementTagTElement tag of the element to dereference
WrappedConfigTWrapped config of the element to dereference
Parameters:
elementThe element to be derferenced, this object is returned
Returns:
element (identity)
viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::mesh< WrappedMeshConfigT > &  ,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Function for dereferencing a const element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::mesh< WrappedMeshConfigT > const &  ,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Function for dereferencing a const element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::segment_handle< SegmentationT > const &  ,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Function for dereferencing a const element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::segment_handle< SegmentationT > &  ,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Function for dereferencing a const element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::segment_handle< SegmentationT > const &  ,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Function for dereferencing an element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::element< HostElementTagT, WrappedHostElementConfigT > const &  ,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Function for dereferencing a const element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::element< HostElementTagT, WrappedHostElementConfigT > &  ,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Function for dereferencing a const element -> identity.

viennagrid::element<ElementTagT, WrappedConfigT> const& viennagrid::dereference_handle ( viennagrid::element< HostElementTagT, WrappedHostElementConfigT > const &  ,
viennagrid::element< ElementTagT, WrappedConfigT > &  element 
)

Function for dereferencing an element -> identity.

void viennagrid::detect_interface ( segment_handle< SegmentationT > &  seg0,
segment_handle< SegmentationT > &  seg1 
)

Public interface function for the detection of interface n-cells between two segments. No need to call this function explicitly, since it is called by is_interface()

Parameters:
seg0The first segment
seg1The second segment
viennagrid::result_of::coord<PointT>::type viennagrid::determinant ( PointT const &  p0)

Calculates the determinant of a 1x1 matrix with the columns provided as 1D-points.

Parameters:
p0The first column/point
viennagrid::result_of::coord<PointT>::type viennagrid::determinant ( PointT const &  p0,
PointT const &  p1 
)

Calculates the determinant of a 2x2 matrix with the columns provided as 2D-points.

Parameters:
p0The first column
p1The second column
viennagrid::result_of::coord<PointT>::type viennagrid::determinant ( PointT const &  p0,
PointT const &  p1,
PointT const &  p2 
)

Calculates the determinant of a 3x3 matrix with the columns provided as 3D-points.

Parameters:
p0The first column
p1The second column
p2The third column
viennagrid::result_of::coord<PointT>::type viennagrid::dihedral_angle ( PointT const &  p0,
PointT const &  p1,
PointT const &  p2,
PointT const &  q0,
PointT const &  q1,
PointT const &  q2 
)

Implementation of the dihedral angle between two planes, each defined by 3 points.

viennagrid::result_of::coord<SomethingT1>::type viennagrid::distance ( PointAccessorT const  accessor,
SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the distance between elements, segments and/or meshs using the point accessor provided.

viennagrid::result_of::coord<SomethingT1>::type viennagrid::distance ( SomethingT1 const &  el1,
SomethingT2 const &  el2 
)

Returns the distance between elements, segments and/or meshs using the default point accessor.

viennagrid::result_of::coord<SomethingT>::type viennagrid::distance ( SomethingT const &  el1,
spatial_point< CoordT, CoordinateSystemT > const &  el2 
)

Returns the distance between a point and an element/segment/meshs using the default point accessor.

viennagrid::result_of::coord<SomethingT>::type viennagrid::distance ( spatial_point< CoordT, CoordinateSystemT > const &  el1,
SomethingT const &  el2 
)

Returns the distance between a point and an element/segment/meshs using the default point accessor.

viennagrid::result_of::coord< spatial_point<CoordT1, CoordinateSystemT1> >::type viennagrid::distance ( spatial_point< CoordT1, CoordinateSystemT1 > const &  el1,
spatial_point< CoordT2, CoordinateSystemT2 > const &  el2 
)

Returns the Euclidian distance between two points.

result_of::coord< segment_handle<SegmentationT> >::type viennagrid::distance ( element< line_tag, WrappedMeshConfigT > const &  line,
segment_handle< SegmentationT > const &  segment_handle 
)

Returns the Euclidian distance between the boundary of a segment and a line.

result_of::coord< segment_handle<SegmentationT> >::type viennagrid::distance ( segment_handle< SegmentationT > const &  segment_handle,
element< line_tag, WrappedMeshConfigT > const &  line 
)
std::size_t viennagrid::dynamic_size ( PointType const &  p)

Returns the dynamic (run time) size of a point. Assumes a .size() member. Other cases must be provided with overloads.

result_of::element_range<SomethingT, edge_tag>::type viennagrid::edges ( SomethingT &  something)

Function for retrieving a edge range object from a host object (same as lines)

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
An edge range
result_of::const_element_range<SomethingT, edge_tag>::type viennagrid::edges ( SomethingT const &  something)

Function for retrieving a const edge range object from a host object (same as lines)

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const edge range
void viennagrid::element_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
PointAccessorType  point_accessor_in,
CellRefinementFlagAccessorT const  cell_refinement_flag_accessor 
)

Public interface for refinement of a mesh with explicit point accessor and cell refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
point_accessor_inPoint accessor for input points
cell_refinement_flag_accessorAccessor storing flags if a cell is marked for refinement
void viennagrid::element_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
CellRefinementFlagAccessorT const  cell_refinement_flag_accessor 
)

Public interface for refinement of a mesh with cell refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
cell_refinement_flag_accessorAccessor storing flags if a cell is marked for refinement
void viennagrid::element_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
PointAccessorT  point_accessor_in,
CellRefinementFlagAccessorT const  cell_refinement_flag_accessor 
)

Public interface for refinement of a mesh with segmentation providing explicit point accessor and cell refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
point_accessor_inPoint accessor for input points
cell_refinement_flag_accessorAccessor storing flags if a cell is marked for refinement
void viennagrid::element_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
CellRefinementFlagAccessorT const  cell_refinement_flag_accessor 
)

Public interface for refinement of a mesh with segmentation providing cell refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
cell_refinement_flag_accessorAccessor storing flags if a cell is marked for refinement
result_of::element_view<something, element_type_or_tag>::type viennagrid::element_view ( something &  s)

Returns an empty view object derived from the respective element.

result_of::element_view<something, element_type_or_tag>::type viennagrid::element_view ( something &  s,
functor  f 
)

Returns a view object derived from the respective mesh or segment. Whenever the provided filter functor evaluates to true for an element, it is added to the view. Non-const version.

result_of::const_element_view<something, element_type_or_tag>::type viennagrid::element_view ( something const &  s,
functor  f 
)

Returns a view object derived from the respective mesh or segment. Whenever the provided filter functor evaluates to true for an element, it is added to the view. Const version.

result_of::element_range< viennagrid::element< element_tag, WrappedConfigType >, sub_element_type_or_tag >::type elements ( viennagrid::element< element_tag, WrappedConfigType > &  element)

Function for retrieving a boundary element range from a host element. Non-const version.

Template Parameters:
sub_element_type_or_tagThe element type/tag for the requested boundary element range
element_tagThe element tag of the host element
WrappedConfigTypeThe host mesh/element configuration class (providing the typemap as 'type' member type)
Parameters:
elementThe host element from which the boundary element range should be obtained
Returns:
An element range
result_of::const_element_range< viennagrid::element< element_tag, WrappedConfigType >, sub_element_type_or_tag >::type elements ( const viennagrid::element< element_tag, WrappedConfigType > &  element)

Function for retrieving a boundary element range from a host element. Const version.

Template Parameters:
sub_element_type_or_tagThe element type/tag for the requested boundary element range
element_tagThe element tag of the host element
WrappedConfigTypeThe host mesh/element configuration class (providing the typemap as 'type' member type)
Parameters:
elementThe host element from which the boundary element range should be obtained
Returns:
An element range
result_of::element_range<collection<container_collection_typemap>, element_type_or_tag>::type viennagrid::elements ( collection< container_collection_typemap > &  collection)

Function for retrieving an element range or a boundary element range from a container collection. Non-const version.

Template Parameters:
element_type_or_tagThe element type/tag for the requested element range
container_collection_typemapThe configuration typemap for the collection
Parameters:
collectionThe container collection from which to build the range.
Returns:
An element range
result_of::const_element_range<collection<container_collection_typemap>, element_type_or_tag>::type viennagrid::elements ( const collection< container_collection_typemap > &  collection)

Function for retrieving an element range or a boundary element range from a container collection. Const version.

Template Parameters:
element_type_or_tagThe element type/tag for the requested element range
container_collection_typemapThe configuration typemap for the collection
Parameters:
collectionThe container collection from which to build the range.
Returns:
An element range
result_of::element_range<SomethingT, ElementTypeOrTagT>::type viennagrid::elements ( SomethingT &  something)

Function for retrieving an element range or a boundary element range from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
ElementTypeOrTagTThe element type/tag for the requested element range
Parameters:
somethingThe host object of type SomethingT
Returns:
An element range
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 Parameters:
WrappedConfigTypeThe host mesh configuration class (providing the typemap as 'type' member type)
ElementTypeOrTagTThe element type/tag for the requested element range
Parameters:
mesh_objThe mesh object
Returns:
An element range
result_of::element_range< viennagrid::segment_handle<SegmentationT>, ElementTypeOrTagT>::type viennagrid::elements ( viennagrid::segment_handle< SegmentationT > &  segment)

Function for retrieving an element range or a boundary element range from a segment.

Template Parameters:
SegmentationTThe host segmentation
ElementTypeOrTagTThe element type/tag for the requested element range
Parameters:
segmentThe host object of type SomethingT
Returns:
An element range
result_of::element_range<segmentation<WrappedConfigT>, ElementTypeOrTagT>::type viennagrid::elements ( viennagrid::segmentation< WrappedConfigT > &  segm)

Function for retrieving an element range or a boundary element range from a segmentation. Non-const version.

Template Parameters:
ElementTypeOrTagTThe element type/tag for the requested element range
WrappedConfigTThe host mesh configuration class (providing the typemap as 'type' member type)
Parameters:
segmThe hosting segmentation object
Returns:
An element range
result_of::const_element_range<SomethingT, ElementTypeOrTagT>::type viennagrid::elements ( SomethingT const &  something)

Function for retrieving a const element range or a boundary element range from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
ElementTypeOrTagTThe element type/tag for the requested element range
Parameters:
somethingThe host object of type SomethingT
Returns:
A const element range
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 Parameters:
WrappedConfigTypeThe host mesh configuration class (providing the typemap as 'type' member type)
ElementTypeOrTagTThe element type/tag for the requested element range
Parameters:
mesh_objThe mesh object
Returns:
An element range
result_of::const_element_range< viennagrid::segment_handle<SegmentationT>, ElementTypeOrTagT>::type viennagrid::elements ( viennagrid::segment_handle< SegmentationT > const &  segment)

Function for retrieving a const element range or a boundary element range from a segment. Const-version.

Template Parameters:
SegmentationTThe host segmentation
ElementTypeOrTagTThe element type/tag for the requested element range
Parameters:
segmentThe host object of type SomethingT
Returns:
A const element range
result_of::const_element_range<viennagrid::segmentation<WrappedConfigT>, ElementTypeOrTagT>::type viennagrid::elements ( viennagrid::segmentation< WrappedConfigT > const &  segm)

Function for retrieving an element range or a boundary element range from a segmentation. Const version.

Template Parameters:
ElementTypeOrTagTThe element type/tag for the requested element range
WrappedConfigTThe host mesh configuration class (providing the typemap as 'type' member type)
Parameters:
segmThe hosting segmentation object
Returns:
An element range
void viennagrid::ensure_longest_edge_refinement ( mesh< WrappedMeshConfigInT > const &  mesh_in,
EdgeRefinementFlagAccessorT  edge_refinement_flag_accessor 
)

Ensures refinement of the longest edge of each cell. If any edge is tagged for refinement in a cell, then the longest edge is refined as well.

void viennagrid::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 Parameters:
SegmentHandleTThe segment type
ElementTagTThe element tag of the element type to be deleted
WrappedConfigTThe wrapped config of the element type to be deleted
Parameters:
segmentThe segment object from which the element is to be deleted
elementThe element object to be deleted from the segment
Returns:
True if the element is deleted from the segment, false otherwise
void viennagrid::erase_element ( MeshT &  mesh_obj,
HandleT  element_to_erase 
)

Erases a single elements and all elements which references this element from a mesh. If more than one element is erase use erase_elements instead for better performance.

Template Parameters:
MeshTThe mesh type
HandleTThe handle type of the element to delete
Parameters:
mesh_objThe host mesh object
element_to_eraseA handle to the element to be deleted
void viennagrid::erase_elements ( viennagrid::mesh< WrappedConfigT > &  mesh_obj,
ToEraseViewT &  elements_to_erase 
)

Erases all elements marked for deletion and all elements which references these elements from a mesh.

Template Parameters:
WrappedConfigTThe wrapped config of the mesh type in which the elements to erase live
ToEraseViewTThe mesh view type which stores all elements to erase
Parameters:
mesh_objThe host mesh object
elements_to_eraseA mesh view which stores all elements marked for deletion
void viennagrid::erase_elements ( viennagrid::mesh< viennagrid::detail::decorated_mesh_view_config< WrappedConfigType, ElementTypeList, ContainerConfig > > &  view_obj,
ToEraseViewT &  elements_to_erase 
)

Erases all elements marked for deletion and all elements which references these elements from a view.

Parameters:
view_objThe host mesh object
elements_to_eraseA mesh view which stores all elements marked for deletion
void viennagrid::extract_boundary ( VolumeMeshT const &  volume_mesh,
HullMeshT &  hull_mesh 
)

Extracts the hull of mesh using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh.

Template Parameters:
HullTypeOrTagTThe type or tag of the hull element
Parameters:
volume_meshThe input mesh
hull_meshThe output hull mesh
void viennagrid::extract_boundary ( VolumeMeshT const &  volume_mesh,
HullMeshT &  hull_mesh 
)

Extracts the hull of mesh using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh. The facet type is used as the hull element type.

Parameters:
volume_meshThe input mesh
hull_meshThe output hull mesh
void viennagrid::extract_boundary ( VolumeMeshT const &  volume_mesh,
VolumeSegmentationT const &  volume_segmentation,
HullMeshT &  hull_mesh,
HullSegmentationT &  hull_segmentation 
)

Extracts the hull of mesh and a segmentation using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh.

Template Parameters:
HullTypeOrTagTThe type or tag of the hull element
Parameters:
volume_meshThe input mesh
volume_segmentationThe input segmentation
hull_meshThe output hull mesh
hull_segmentationThe output hull segmentation
void viennagrid::extract_boundary ( VolumeMeshT const &  volume_mesh,
VolumeSegmentationT const &  volume_segmentation,
HullMeshT &  hull_mesh,
HullSegmentationT &  hull_segmentation 
)

Extracts the hull of mesh and a segmentation using viennagrid::boundary, e.g. the triangular hull of a tetrahedral mesh. The facet type is used as the hull element type.

Parameters:
volume_meshThe input mesh
volume_segmentationThe input segmentation
hull_meshThe output hull mesh
hull_segmentationThe output hull segmentation
void viennagrid::extract_seed_points ( MeshSegmentT const &  mesh,
SeedPointContainerT &  seed_points 
)

Extracts seed points of a mesh. For each connected part of the mesh, a point which is inside this part is added to the seed_points container.

Parameters:
meshThe input mesh
seed_pointsA container of seed points. The container has to support .push_back() for points of the mesh.
void viennagrid::extract_seed_points ( MeshT const &  mesh,
SegmentationT const &  segmentation,
SeedPointContainerT &  seed_points 
)

Extracts seed points of a mesh with segmentation. For each segment, seed points are extracted.

Parameters:
meshThe input mesh
segmentationThe input segmentation
seed_pointsA container of seed points and segment ids. The container has to support .push_back() for std::pair<MeshPointType,int>
result_of::facet_range<ElementT>::type viennagrid::facets ( ElementT &  element)

Function for retrieving a facet range object from a host object.

Template Parameters:
ElementTThe host element (cell)
Parameters:
elementThe host object of type ElementT
Returns:
A facet range
result_of::const_facet_range<ElementT>::type viennagrid::facets ( const ElementT &  element)

Function for retrieving a const facet range object from a host object.

Template Parameters:
ElementTThe host element type
Parameters:
elementThe host object of type SomethingT
Returns:
A const facet range
viennagrid::result_of::iterator< typename viennagrid::result_of::element_range<MeshSegmentHandleT, ElementTagT>::type >::type viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
IDTID type of the object to be found
Parameters:
mesh_or_segmentHost mesh/segment object
elementThe mesh element (cell, vertex, etc.) to be found
Returns:
An iterator pointing to the found element. If no element was found it points to viennagrid::elements<ElementType>(mesh_or_segment).end()
viennagrid::result_of::const_iterator< typename viennagrid::result_of::element_range<MeshSegmentHandleT, ElementTagT>::type >::type viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
IDTID type of the object to be found
Parameters:
mesh_or_segmentHost mesh/segment object
elementThe mesh element (cell, vertex, etc.) to be found
Returns:
An iterator pointing to the found element. If no element was found it points to viennagrid::elements<ElementType>(mesh_or_segment).end()
viennagrid::result_of::iterator< typename viennagrid::result_of::element_range<MeshSegmentHandleT, typename IDT::value_type::tag>::type >::type viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
IDTID type of the object to be found
Parameters:
mesh_or_segmentHost mesh/segment object
idid of the object to be found
Returns:
An iterator pointing to the found element. If no element was found it points to viennagrid::elements<ElementType>(mesh_or_segment).end()
viennagrid::result_of::const_iterator< typename viennagrid::result_of::element_range<MeshSegmentHandleT, typename IDT::value_type::tag>::type >::type viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
IDTID type of the object to be found
Parameters:
mesh_or_segmentHost mesh/segment object
idid of the object to be found
Returns:
A const iterator pointing to the found element. If no element was found it points to viennagrid::elements<ElementType>(mesh_or_segment).end()
viennagrid::result_of::iterator< typename viennagrid::result_of::element_range<MeshSegmentHandleT, typename detail::result_of::value_type<HandleT>::type >::type >::type viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
HandleTThe handle type of the object to be found
Parameters:
mesh_or_segmentHost mesh/segment object
handleIdentification handle of the object to be found
Returns:
An iterator pointing to the found element. If no element was found it points to viennagrid::elements<ElementType>(mesh_or_segment).end()
viennagrid::result_of::const_iterator< typename viennagrid::result_of::const_element_range<MeshSegmentHandleT, typename detail::result_of::value_type<HandleT>::type >::type >::type viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
HandleTThe handle type of the object to be found
Parameters:
mesh_or_segmentHost mesh/segment object
handleIdentification handle of the object to be found
Returns:
A const iterator pointing to the found element. If no element was found it points to viennagrid::elements<ElementType>(mesh_or_segment).end()
void viennagrid::for_each ( MeshSegmentHandleT &  mesh_or_segment,
FunctorT  f 
)

Function which executes functor for each element with specific topologic dimension.

Template Parameters:
TopologicDimensionVTopologic dimension of the elements on which the functor is executed
MeshSegmentHandleTHost mesh/segment type
FunctorTFunctor type, needs to provide void operator(ElementType &/const &) for each element type with topologic dimension equal to TopologicDimensionV
Parameters:
mesh_or_segmentHost mesh/segment object
fFunctor object
void viennagrid::for_each ( MeshSegmentHandleT const &  mesh_or_segment,
FunctorT  f 
)

Function which executes functor for each element with specific topologic dimension, const version.

Template Parameters:
TopologicDimensionVTopologic dimension of the elements on which the functor is executed
MeshSegmentHandleTHost mesh/segment type
FunctorTFunctor type, needs to provide void operator(ElementType &/const &) for each element type with topologic dimension equal to TopologicDimensionV
Parameters:
mesh_or_segmentHost mesh/segment object
fFunctor object
void viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
FunctorTFunctor type, needs to provide void operator(ElementType &/const &) for each element type with topologic dimension equal to TopologicDimensionV
Parameters:
mesh_or_segmentHost mesh/segment object
fFunctor object
void viennagrid::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 Parameters:
MeshSegmentHandleTHost mesh/segment type
FunctorTFunctor type, needs to provide void operator(ElementType &/const &) for each element type with topologic dimension equal to TopologicDimensionV
Parameters:
mesh_or_segmentHost mesh/segment object
fFunctor object
void viennagrid::for_each_boundary_element ( ElementT &  element,
FunctorT  functor 
)

Applies a functor to all boundary cells of an element. For example, this applies a functor to all vertices and edges of a triangle.

void viennagrid::for_each_boundary_element ( ElementT &  element,
FunctorT  functor 
)
void viennagrid::geometric_transform ( MeshT &  mesh,
FunctorT  func,
PointAccessorT  accessor 
)

Transforms all points of a mesh based on a functor.

Parameters:
meshThe input mesh
funcThe functor object, has to be a function or provide an operator(). Interface: MeshPointType func(MeshPointType)
accessorPoint accessor for input points
void viennagrid::geometric_transform ( MeshT &  mesh,
FunctorT  func 
)

Transforms all points of a mesh based on a functor.

Parameters:
meshThe input mesh
funcThe functor object, has to be a function or provide an operator(). Interface: MeshPointType func(MeshPointType)
viennagrid::detail::result_of::lookup<TypeMapT, typename viennagrid::detail::remove_const<KeyTypeT>::type >::type& viennagrid::get ( collection< TypeMapT > &  c)

Generic accessor function for accessing the respective value type identified by the provided type from a collection. Non-const version.

Template Parameters:
KeyTypeTThe key type for identifying the element inside a collection
TypeMapTThe typemap used for configuring the collection
viennagrid::detail::result_of::lookup<TypeMapT, typename viennagrid::detail::remove_const<KeyTypeT>::type >::type const& viennagrid::get ( collection< TypeMapT > const &  c)

Generic accessor function for accessing the respective value type identified by the provided type from a collection. Const version.

Template Parameters:
KeyTypeTThe key type for identifying the element inside a collection
TypeMapTThe typemap used for configuring the collection
result_of::handle<viennagrid::element<ElementTag1, WrappedConfigType1>, viennagrid::element<ElementTag2, WrappedConfigType2> >::type viennagrid::handle ( viennagrid::element< ElementTag1, WrappedConfigType1 > &  element,
viennagrid::element< ElementTag2, WrappedConfigType2 > &  boundary_element 
)

Function for creating a handle for a given boundary element of a host element. Non-const version.

result_of::handle<MeshOrSegmentHandleT, viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
MeshOrSegmentHandleTThe host mesh/segment type
ElementTagTThe tag of the element of which a handle is created
WrappedConfigTThe wrapped config of the element of which a handle is created
Parameters:
mesh_or_segmentThe host mesh/segment object
elementThe element of which a handle is created
Returns:
A handle referencing the given element
result_of::const_handle<viennagrid::element<ElementTag1, WrappedConfigType1>, viennagrid::element<ElementTag2, WrappedConfigType2> >::type viennagrid::handle ( viennagrid::element< ElementTag1, WrappedConfigType1 > const &  element,
viennagrid::element< ElementTag2, WrappedConfigType2 > const &  boundary_element 
)

Function for creating a handle for a given boundary element of a host element. Const-version.

result_of::const_handle<MeshOrSegmentHandleT, viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
MeshOrSegmentHandleTThe host mesh/segment type
ElementTagTThe tag of the element of which a handle is created
WrappedConfigTThe wrapped config of the element of which a handle is created
Parameters:
mesh_or_segmentThe host mesh/segment object
elementThe element of which a handle is created
Returns:
A const handle referencing the given element
HandleT viennagrid::handle ( MeshOrSegmentHandleT &  ,
HandleT  handle 
)

Function for creating a handle, default implementation -> identity.

Template Parameters:
MeshOrSegmentHandleTWrapped config of the mesh type
HandleTType of the handle
Parameters:
handleThe handle object
Returns:
handle (identity)
const HandleT viennagrid::handle ( MeshOrSegmentHandleT const &  ,
HandleT  handle 
)

Function for creating a const handle, default implementation -> identity.

Template Parameters:
MeshOrSegmentHandleTWrapped config of the mesh type
HandleTType of the handle
Parameters:
handleThe handle object
Returns:
handle (identity)
result_of::handle<segment_handle<SegmentationType>, viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
MeshOrSegmentHandleTThe host mesh/segment type
ElementTagTThe tag of the element of which a handle is created
WrappedConfigTThe wrapped config of the element of which a handle is created
Parameters:
mesh_or_segmentThe host mesh/segment object
elementThe element of which a handle is created
Returns:
A handle referencing the given element
result_of::const_handle<segment_handle<SegmentationType>, viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
MeshOrSegmentHandleTThe host mesh/segment type
ElementTagTThe tag of the element of which a handle is created
WrappedConfigTThe wrapped config of the element of which a handle is created
Parameters:
mesh_or_segmentThe host mesh/segment object
elementThe element of which a handle is created
Returns:
A const handle referencing the given element
void viennagrid::handle_mesh ( MeshT &  mesh_obj,
ViewT &  view_obj 
)

Function for inserting handles to all element from a mesh in a mesh view.

Template Parameters:
MeshTThe mesh or segment type
ViewTThe mesh view type
Parameters:
mesh_objThe input mesh/segment object
view_objThe output view object
result_of::element_range<SomethingT, hexahedron_tag>::type viennagrid::hexahedra ( SomethingT &  something)

Function for retrieving a hexahedron range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A hexahedron range
result_of::const_element_range<SomethingT, hexahedron_tag>::type viennagrid::hexahedra ( SomethingT const &  something)

Function for retrieving a const hexahedron range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const hexahedron range
PLCT::appendix_type& viennagrid::hole_points ( PLCT &  plc)

Returns the hole points associated with a PLC.

PLCT::appendix_type const& viennagrid::hole_points ( PLCT const &  plc)

Returns the hole points associated with a PLC.

void viennagrid::hyperplane_refine ( SrcMeshT const &  src_mesh,
DstMeshT &  dst_mesh,
PointT const &  hyperplane_point,
PointT const &  hyperplane_normal,
NumericConfigT  numeric_config 
)

Refines a mesh based on a hyperplane. All elements which intersects the hyperplane are refined in a way that they don't intersect the hyperplane afterwards.

Parameters:
src_meshThe input mesh
dst_meshThe output mesh
hyperplane_pointA point representing the hyperplane
hyperplane_normalThe normale vector representing the hyperplane
numeric_configThe numeric config
void viennagrid::hyperplane_refine ( SrcMeshT const &  src_mesh,
SrcSegmentationT const &  src_segmentation,
DstMeshT &  dst_mesh,
DstSegmentationT &  dst_segmentation,
PointT const &  hyperplane_point,
PointT const &  hyperplane_normal,
NumericConfigT  numeric_config 
)

Refines a mesh and a segmentation based on a hyperplane. All elements which intersects the hyperplane are refined in a way that they don't intersect the hyperplane afterwards.

Parameters:
src_meshThe input mesh
src_segmentationThe input segmentation
dst_meshThe output mesh
dst_segmentationThe output segmentation
hyperplane_pointA point representing the hyperplane
hyperplane_normalThe normale vector representing the hyperplane
numeric_configThe numeric config
viennagrid::result_of::id< typename viennagrid::result_of::element< segment_handle<SegmentationType>, ElementTypeOrTag>::type >::type viennagrid::id_upper_bound ( segment_handle< SegmentationType > const &  segment)

Function for obtaining the heighest ID for a specific element type/tag in a segment.

viennagrid::result_of::id< typename viennagrid::result_of::element<MeshOrSegmentHandleT, ElementTypeOrTag>::type >::type viennagrid::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 Parameters:
ElementTypeOrTagThe element type/tag from which the heighest ID is queried
MeshOrSegmentHandleTThe mesh/segment type
Parameters:
mesh_or_segmentThe mesh/segment object
Returns:
The heighest ID for specified element type/tag
viennagrid::result_of::coord<PointT1>::type viennagrid::inner_prod ( PointT1 const &  p1,
PointT2 const &  p2 
)

Returns the inner product of two vectors, which can be given in different coordinate systems.

Parameters:
p1First vector
p2Second vector
viennagrid::result_of::coord<PointT1>::type viennagrid::inner_prod_impl ( PointT1 const &  p1,
PointT2 const &  p2,
CoordinateSystemT1 const &  ,
CoordinateSystemT2 const &   
)

Dispatched inner product function having full information about the coordinate systems. Transforms to Cartesian coordinates and forwards the calculation to the worker.

viennagrid::result_of::coord<PointT1>::type viennagrid::inner_prod_impl ( PointT1 const &  p1,
PointT2 const &  p2,
cartesian_cs< d >  ,
cartesian_cs< d >   
)

Dispatched inner product function having full information about the coordinate systems. Vectors/Points are in a Cartesian coordinate system already, thus no transformation required.

bool viennagrid::is_boundary ( mesh< WrappedConfigT > const &  mesh_obj,
ElementT const &  element 
)

Returns true if an element is located on the boundary of the mesh.

Parameters:
mesh_objThe ViennaGrid mesh
elementThe element
bool viennagrid::is_boundary ( segment_handle< SegmentationT > const &  segment,
ElementT const &  element 
)

Returns true if an element is located on the boundary of the segment.

Parameters:
segmentThe ViennaGrid segment
elementThe element
bool viennagrid::is_boundary ( viennagrid::element< ElementTag1, WrappedConfigT1 > const &  host_element,
viennagrid::element< ElementTag2, WrappedConfigT2 > const &  element 
)

Returns true if the element provided as second argument is on the boundary of the element provided as first argument.

Parameters:
host_elementThe host element
elementThe (potential) boundary element
bool viennagrid::is_in_segment ( SegmentHandleT const &  segment,
viennagrid::element< ElementTagT, WrappedConfigT > const &  element 
)

Queries if element is within a given segment.

Template Parameters:
SegmentHandleTThe segment type which might include the element
ElementTagTThe element tag of the element which might be included in the segment
WrappedConfigTThe wrapped config of the element which might be included in the segment
Parameters:
segmentThe segment object which might include the element
elementThe element object which might be included in the segment
Returns:
True if the element is in the segment, false otherwise
bool viennagrid::is_inside ( PointAccessorT const  accessor,
ElementT const &  element,
spatial_point< CoordType, CoordinateSystem > const &  point,
NumericConfigT  numeric_config 
)

Determines if a given point is inside an element. Returns true if the point is inside the element, false otherwise.

Parameters:
accessorThe point accessor providing point information for geometric calculation
elementThe element to test
pointThe point to test
numeric_configThe numeric config
bool viennagrid::is_inside ( ElementT const &  element,
spatial_point< CoordType, CoordinateSystem > const &  point,
NumericConfigT  numeric_config 
)

Determines if a given point is inside an element. Returns true if the point is inside the element, false otherwise.

Parameters:
elementThe element to test
pointThe point to test
numeric_configThe numeric config
bool viennagrid::is_inside ( ElementT const &  element,
spatial_point< CoordType, CoordinateSystem > const &  point 
)

Determines if a given point is inside an element. Returns true if the point is inside the element, false otherwise.

Parameters:
elementThe element to test
pointThe point to test
bool viennagrid::is_interface ( segment_handle< SegmentationT > const &  seg0,
segment_handle< SegmentationT > const &  seg1,
ElementT const &  element 
)

Returns true if the n-cell is located at the interface between two segments.

Parameters:
seg0The first segment
seg1The sevond segment
elementThe element under test
viennagrid::result_of::handle<MeshT, BoundaryElementTTag>::type viennagrid::largest_boundary_volume ( MeshT &  mesh_obj,
ElementT &  element 
)

Returns a handle to the boundary element with the largest volume.

viennagrid::result_of::const_handle<MeshT, BoundaryElementTTag>::type viennagrid::largest_boundary_volume ( MeshT const &  mesh_obj,
ElementT const &  element 
)

Returns a const handle to the boundary element with the largest volume.

result_of::element_range<SomethingT, line_tag>::type viennagrid::lines ( SomethingT &  something)

Function for retrieving a line range object from a host object (same as edges)

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A line range
result_of::const_element_range<SomethingT, line_tag>::type viennagrid::lines ( SomethingT const &  something)

Function for retrieving a const line range object from a host object (same as edges)

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const line range
viennagrid::result_of::vertex_handle< viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
ElementTagTThe element tag of the host element type
WrappedConfigTThe wrapped config of the host element type
BoundaryHandleTThe handle type of the boundary element
Parameters:
host_elementThe host element object
boundary_element_handleThe boundary element handle
indexThe index defining which vertex within the boundary element is queried
Returns:
A handle referencing the given element
viennagrid::result_of::const_vertex_handle< viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
ElementTagTThe element tag of the host element type
WrappedConfigTThe wrapped config of the host element type
BoundaryHandleTThe handle type of the boundary element
Parameters:
host_elementThe host element object
boundary_element_handleThe boundary element handle
indexThe index defining which vertex within the boundary element is queried
Returns:
A const handle referencing the given element
result_of::accessor<ContainerType, AccessType>::type viennagrid::make_accessor ( ContainerType &  container)

Convenience function for returning an accessor for the supplied container. Non-const version.

Template Parameters:
AccessTypeThe element type for which data should be accessed (for example a vertex type)
ContainerTypeThe container type. Usually not supplied explicitly by the user.
result_of::accessor<const ContainerType, AccessType>::type viennagrid::make_accessor ( ContainerType const &  container)

Convenience function for returning an accessor for the supplied container. Const-version.

Template Parameters:
AccessTypeThe element type for which data should be accessed (for example a vertex type)
ContainerTypeThe container type. Usually not supplied explicitly by the user.
result_of::accessor< typename result_of::container_of< ContainerCollectionTypemapT, AccessType >::type, AccessType>::type viennagrid::make_accessor ( collection< ContainerCollectionTypemapT > &  collection_obj)

Convenience function for returning an accessor for the supplied container collection. Non-const-version.

Template Parameters:
AccessTypeThe element type for which data should be accessed (for example a vertex type)
ContainerCollectionTypemapTConfiguration typemap for the collection. To be deduced by the compiler, not passed explicitly.
result_of::accessor< const typename result_of::container_of< ContainerCollectionTypemapT, AccessType >::type, AccessType>::type viennagrid::make_accessor ( collection< ContainerCollectionTypemapT > const &  collection_obj)

Convenience function for returning an accessor for the supplied container collection. Const-version.

Template Parameters:
AccessTypeThe element type for which data should be accessed (for example a vertex type)
ContainerCollectionTypemapTConfiguration typemap for the collection. To be deduced by the compiler, not passed explicitly.
result_of::cell_handle<MeshOrSegmentHandleTypeT>::type viennagrid::make_cell ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleIteratorT  vertices_begin,
VertexHandleIteratorT const &  vertices_end 
)

Function for creating an cell within a mesh or a segment.

Parameters:
mesh_segmentThe mesh or segment object where the cell should be created
vertices_beginAn iterator pointing to the first vertex handle of the cell
vertices_endAn iterator defining the end of the vertices
Returns:
A handle to the created cell
result_of::cell_handle<MeshOrSegmentHandleTypeT>::type viennagrid::make_cell_with_id ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleIteratorT  vertices_begin,
VertexHandleIteratorT const &  vertices_end,
typename viennagrid::result_of::cell< MeshOrSegmentHandleTypeT >::type::id_type  id 
)

Function for creating an cell with ID within a mesh or a segment.

Parameters:
mesh_segmentThe mesh or segment object where the cell should be created
vertices_beginAn iterator pointing to the first vertex handle of the cell
vertices_endAn iterator defining the end of the vertices
idThe cell ID to be used for the cell within the mesh or segment
Returns:
A handle to the created cell
result_of::edge_handle< MeshOrSegmentHandleTypeT >::type make_edge ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleT  v0,
VertexHandleT  v1 
)

Function for creating an edge within a mesh or a segment (same as make_edge)

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the edge is created
VertexHandleTThe vertex handle type
Parameters:
mesh_segmentThe mesh or segment object where the edge should be created
v0A handle to the first vertex of the edge
v1A handle to the second vertex of the edge
Returns:
A handle to the created edge
result_of::handle< MeshOrSegmentHandleTypeT, ElementTypeOrTagT >::type make_element ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleIteratorT  array_start,
VertexHandleIteratorT const &  array_end 
)

Function for creating an element within a mesh or a segment. For PLC use make_plc.

Template Parameters:
ElementTypeOrTagTThe element type/tag to be created
MeshOrSegmentHandleTypeTThe mesh or segment type where the element is created
VertexHandleIteratorTA vertex handle iterator type
Parameters:
mesh_segmentThe mesh or segment object where the element should be created
array_startAn iterator pointing to the first vertex handle of the element
array_endAn iterator defining the end of the vertices
Returns:
A handle to the created element
result_of::handle< MeshOrSegmentHandleTypeT, ElementTypeOrTagT >::type make_element_with_id ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleIteratorT  array_start,
VertexHandleIteratorT const &  array_end,
IDT  id 
)

Function for creating an element within a mesh or segment with a specific ID. For PLC use make_plc.

Template Parameters:
ElementTypeOrTagTThe element type/tag to be created
MeshOrSegmentHandleTypeTThe mesh or segment type where the element is created
VertexHandleIteratorTA vertex handle iterator type
Parameters:
mesh_segmentThe mesh or segment object where the element should be created
array_startAn iterator pointing to the first vertex handle of the element
array_endAn iterator defining the end of the vertices
idThe id of the new element
Returns:
A handle to the created element
result_of::field<ContainerType, AccessType>::type viennagrid::make_field ( ContainerType &  container)

Convenience function for creating a suitable field out of a container. Non-const version.

Template Parameters:
AccessTypeThe element for which the container is accessed
ContainerTypeType of the container. Possible types: std::vector, std::deque, std::map
result_of::field<const ContainerType, AccessType>::type viennagrid::make_field ( ContainerType const &  container)

Convenience function for creating a suitable field out of a container. Const-version.

Template Parameters:
AccessTypeThe element for which the container is accessed
ContainerTypeType of the container. Possible types: std::vector, std::deque, std::map
result_of::field< typename result_of::container_of< ContainerCollectionTypemapT, AccessType >::type, AccessType>::type viennagrid::make_field ( collection< ContainerCollectionTypemapT > &  collection_obj)

Convenience function for creating a suitable field out of a collection of containers. Non-const-version.

Template Parameters:
AccessTypeThe element for which the container is accessed
ContainerTypeType of the container. Possible types: std::vector, std::deque, std::map
result_of::field< const typename result_of::container_of< ContainerCollectionTypemapT, AccessType >::type, AccessType>::type viennagrid::make_field ( collection< ContainerCollectionTypemapT > const &  collection_obj)

Convenience function for creating a suitable field out of a collection of containers. Const-version.

Template Parameters:
AccessTypeThe element for which the container is accessed
ContainerTypeType of the container. Possible types: std::vector, std::deque, std::map
result_of::hexahedron_handle< MeshOrSegmentHandleTypeT >::type make_hexahedron ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleT  v0,
VertexHandleT  v1,
VertexHandleT  v2,
VertexHandleT  v3,
VertexHandleT  v4,
VertexHandleT  v5,
VertexHandleT  v6,
VertexHandleT  v7 
)

Function for creating a hexahedron within a mesh or a segment.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the hexahedron is created
VertexHandleTThe vertex handle type
Parameters:
mesh_segmentThe mesh or segment object where the hexahedron should be created
v0A handle to the first vertex of the hexahedron
v1A handle to the second vertex of the hexahedron
v2A handle to the third vertex of the hexahedron
v3A handle to the forth vertex of the hexahedron
v4A handle to the fifth vertex of the hexahedron
v5A handle to the sixth vertex of the hexahedron
v6A handle to the seventh vertex of the hexahedron
v7A handle to the eighth vertex of the hexahedron
Returns:
A handle to the created hexahedron
result_of::line_handle< MeshOrSegmentHandleTypeT >::type make_line ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleT  v0,
VertexHandleT  v1 
)

Function for creating a line within a mesh or a segment (same as make_edge)

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the line is created
VertexHandleTThe vertex handle type
Parameters:
mesh_segmentThe mesh or segment object where the line should be created
v0A handle to the first vertex of the line
v1A handle to the second vertex of the line
Returns:
A handle to the created line
result_of::plc_handle<MeshOrSegmentHandleTypeT>::type viennagrid::make_plc ( MeshOrSegmentHandleTypeT &  mesh_obj,
LineHandleIteratorT  lines_begin,
LineHandleIteratorT  lines_end,
VertexHandleIteratorT  loose_vertices_begin,
VertexHandleIteratorT  loose_vertices_end 
)
result_of::plc_handle<MeshOrSegmentHandleTypeT>::type viennagrid::make_plc ( MeshOrSegmentHandleTypeT &  mesh_obj,
LineHandleIteratorT  lines_begin,
LineHandleIteratorT  lines_end 
)
result_of::plc_handle< MeshOrSegmentHandleTypeT >::type make_plc ( MeshOrSegmentHandleTypeT &  mesh_segment,
LineHandleIteratorT  lines_begin,
LineHandleIteratorT  lines_end,
VertexHandleIteratorT  loose_vertices_begin,
VertexHandleIteratorT  loose_vertices_end,
PointIteratorT  hole_points_begin,
PointIteratorT  hole_points_end 
)

Function for creating a PLC within a mesh or a segment.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the PLC is created
LineHandleIteratorTA line handle iterator type
VertexHandleIteratorTA vertex handle iterator type
PointIteratorTA point handle iterator type
Parameters:
mesh_segmentThe mesh or segment object where the PLC should be created
lines_beginAn iterator pointing to the first line handle of the PLC
lines_endAn iterator defining the end of the lines
loose_vertices_beginAn iterator pointing to the first loose vertex handle of the PLC
loose_vertices_endAn iterator defining the end of the loose vertices
hole_points_beginAn iterator pointing to the first hole point of the PLC
hole_points_endAn iterator defining the end of the hole points
Returns:
A handle to the created PLC
result_of::quadrilateral_handle< MeshOrSegmentHandleTypeT >::type make_quadrilateral ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleT  v0,
VertexHandleT  v1,
VertexHandleT  v2,
VertexHandleT  v3 
)

Function for creating a quadrilateral within a mesh or a segment.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the quadrilateral is created
VertexHandleTThe vertex handle type
Parameters:
mesh_segmentThe mesh or segment object where the quadrilateral should be created
v0A handle to the first vertex of the quadrilateral
v1A handle to the second vertex of the quadrilateral
v2A handle to the third vertex of the quadrilateral
v3A handle to the forth vertex of the quadrilateral
Returns:
A handle to the created quadrilateral
result_of::tetrahedron_handle< MeshOrSegmentHandleTypeT >::type make_tetrahedron ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleT  v0,
VertexHandleT  v1,
VertexHandleT  v2,
VertexHandleT  v3 
)

Function for creating a tetrahedron within a mesh or a segment.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the tetrahedron is created
VertexHandleTThe vertex handle type
Parameters:
mesh_segmentThe mesh or segment object where the tetrahedron should be created
v0A handle to the first vertex of the tetrahedron
v1A handle to the second vertex of the tetrahedron
v2A handle to the third vertex of the tetrahedron
v3A handle to the forth vertex of the tetrahedron
Returns:
A handle to the created tetrahedron
result_of::triangle_handle< MeshOrSegmentHandleTypeT >::type make_triangle ( MeshOrSegmentHandleTypeT &  mesh_segment,
VertexHandleT  v0,
VertexHandleT  v1,
VertexHandleT  v2 
)

Function for creating a triangle within a mesh or a segment.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the triangle is created
VertexHandleTThe vertex handle type
Parameters:
mesh_segmentThe mesh or segment object where the triangle should be created
v0A handle to the first vertex of the triangle
v1A handle to the second vertex of the triangle
v2A handle to the third vertex of the triangle
Returns:
A handle to the created triangle
result_of::vertex_handle< MeshOrSegmentHandleTypeT >::type make_unique_vertex ( MeshOrSegmentHandleTypeT &  mesh_segment,
typename result_of::point< MeshOrSegmentHandleTypeT >::type const &  point,
typename result_of::coord< MeshOrSegmentHandleTypeT >::type  tolerance 
)

Function for creating a unique vertex. The uniqueness is checked by using the point of the vertex: if there is any vertex whose point is close to the point currently inserted, this handle is returned. A new vertex is created otherwise. A classical 2-norm and the tolerance is used for distance checking. The runtime of this function is linear in the vertices within the mesh.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the vertex is created
Parameters:
mesh_segmentThe mesh or segment object where the vertex should be created
pointThe point which corresponds to the created vertex
toleranceThe tolerance of the 2-norm for checking if two points are equal, is ignored if tolerance is less of equal to zero
Returns:
A handle to a vertex which is close enough to point or a handle to a newly created vertex
result_of::vertex_handle< MeshOrSegmentHandleTypeT >::type make_unique_vertex ( MeshOrSegmentHandleTypeT &  mesh_segment,
typename result_of::point< MeshOrSegmentHandleTypeT >::type const &  p 
)

Function for creating a unique vertex. The uniqueness is checked by using the point of the vertex: if there is any vertex whose point is close to the point currently inserted, this handle is returned. A new vertex is created otherwise. A classical 2-norm and the 2-norm of points as tolerance is used for distance checking. The runtime of this function is linear in the vertices within the mesh.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the vertex is created
Parameters:
mesh_segmentThe mesh or segment object where the vertex should be created
pThe point which corresponds to the created vertex
Returns:
A handle to a vertex which is close enough to point or a handle to a newly created vertex
result_of::vertex_handle< MeshOrSegmentHandleTypeT >::type make_vertex ( MeshOrSegmentHandleTypeT &  mesh_segment)

Function for creating a vertex within a mesh or a segment.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the vertex is created
Parameters:
mesh_segmentThe mesh or segment object where the vertex should be created
Returns:
A handle to the created vertex
result_of::vertex_handle< MeshOrSegmentHandleTypeT >::type make_vertex ( MeshOrSegmentHandleTypeT &  mesh_segment,
typename result_of::point< MeshOrSegmentHandleTypeT >::type const &  point 
)

Function for creating a vertex within a mesh or a segment with a specific point.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the vertex is created
Parameters:
mesh_segmentThe mesh or segment object where the vertex should be created
pointThe point which corresponds to the created vertex
Returns:
A handle to the created vertex
result_of::vertex_handle< MeshOrSegmentHandleTypeT >::type make_vertex_with_id ( MeshOrSegmentHandleTypeT &  mesh_segment,
typename viennagrid::result_of::element< MeshOrSegmentHandleTypeT, vertex_tag >::type::id_type  id,
typename result_of::point< MeshOrSegmentHandleTypeT >::type const &  point 
)

Function for creating a vertex within a mesh or a segment with a specific point and specific ID.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type where the vertex is created
Parameters:
mesh_segmentThe mesh or segment object where the vertex should be created
idThe id of the new vertex
pointThe point which corresponds to the created vertex
Returns:
A handle to the created vertex
mesh_proxy< viennagrid::mesh<WrappedConfigT> > viennagrid::make_view ( viennagrid::mesh< WrappedConfigT > &  mesh_obj)

Creates a view out of a mesh using the mesh_proxy object.

Template Parameters:
MeshOrSegmentHandleTThe mesh or segment type from which the mesh view is created
Parameters:
mesh_objThe mesh or segment object from which the mesh view is created
Returns:
A mesh_proxy object holding the host mesh/segment object, can be assigned to a mesh_t object
mesh_proxy< typename SegmentationT::view_type > make_view ( segment_handle< SegmentationT > &  segment)

Creates an empty view out of a segment.

Creates a view out of a mesh using the mesh_proxy object.

Template Parameters:
SegmentationTThe segmentation type from which the mesh view is created
Parameters:
segmentThe segment object from which the mesh view is created
Returns:
a mesh_proxy object holding the host mesh/segment object, can be assigned to a mesh_t object
void viennagrid::mark_all_edge_refinement ( mesh< WrappedMeshConfigInT > const &  mesh_in,
EdgeRefinementFlagAccessorT  edge_refinement_flag_accessor 
)

Mark all edges for refinement -> unform refinement.

void viennagrid::mark_edges_for_hyperplane_refine ( SrcMeshT const &  src_mesh,
DstMeshT &  dst_mesh,
PointT const &  hyperplane_point,
PointT const &  hyperplane_normal,
LineRefinementTagContainerT &  line_refinement_tag_accessor,
LineRefinementVertexHandleContainerT &  line_refinement_vertex_handle_accessor,
NumericConfigT  numeric_config 
)

Mark edges for refinement based on a hyperplane.

void viennagrid::mark_erase_elements ( MeshT &  mesh_obj,
MeshViewT &  elements_to_erase,
HandleT  host_element 
)

Tags all elements connected to a given host_element for erasure. Call erase_element on 'elements_to_erase' to finally delete them.

void mark_referencing_elements ( MeshT &  mesh_obj,
MeshViewT &  element_view,
HandleT  host_element 
)

Marks elements which reference a given host element.

Template Parameters:
MeshTThe mesh type in which the element to erase lives
MeshViewTThe mesh view type for all elements to erase
HandleTThe handle type of the element to delete
Parameters:
mesh_objThe host mesh object
element_viewA mesh view which stores all elements to be marked
host_elementA handle object of the host element
spatial_point<CoordType, CoordinateSystem> viennagrid::max ( const spatial_point< CoordType, CoordinateSystem > &  p1,
const spatial_point< CoordType, CoordinateSystem > &  p2 
)

Returns the pointwise maximum point of two points, i.e. result[i] = max(x[i], y[i]) for all i.

viennagrid::result_of::coord<MeshT>::type viennagrid::mesh_size ( MeshT const &  mesh)

Calculates the size of a mesh: ||bounding_box.min - bounding_box.max||.

Parameters:
meshThe input mesh
spatial_point<CoordType, CoordinateSystem> viennagrid::min ( const spatial_point< CoordType, CoordinateSystem > &  p1,
const spatial_point< CoordType, CoordinateSystem > &  p2 
)

Returns the pointwise minimum point of two points, i.e. result[i] = min(x[i], y[i]) for all i.

result_of::neighbor_range< viennagrid::mesh< WrappedConfigT >, ElementTypeOrTagT, ConnectorElementTypeOrTagT >::type neighbor_elements ( viennagrid::mesh< WrappedConfigT > &  mesh_obj,
ElementOrHandleT const &  element_or_handle 
)

Obtaines a neighbor range of an element within a mesh. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the mesh.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the neighbor range is obtained
ConnectorElementTypeOrTagTThe connector element type/tag
WrappedConfigTThe wrapped config of the mesh
ElementOrHandleTThe element or handle type for which the neighbor range is obtained
Parameters:
mesh_objThe host mesh object in which the elements of the neighbor range exist
element_or_handleA handle or the element for which the neighbor range is obained
Returns:
The neighbor range
result_of::const_neighbor_range< viennagrid::mesh< WrappedConfigT >, ElementTypeOrTagT, ConnectorElementTypeOrTagT >::type neighbor_elements ( viennagrid::mesh< WrappedConfigT > const &  mesh_obj,
ElementOrHandleT const &  element_or_handle 
)

Obtaines a const neighbor range of an element within a mesh. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the mesh.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the neighbor range is obtained
ConnectorElementTypeOrTagTThe connector element type/tag
WrappedConfigTThe wrapped config of the mesh
ElementOrHandleTThe element or handle type for which the neighbor range is obtained
Parameters:
mesh_objThe host mesh object in which the elements of the neighbor range exist
element_or_handleA handle or the element for which the neighbor range is obained
Returns:
The const neighbor range
result_of::neighbor_range< segment_handle< SegmentationT >, ElementTypeOrTagT, ConnectorElementTypeOrTagT >::type neighbor_elements ( segment_handle< SegmentationT > &  segment,
ElementOrHandleT const &  element_or_handle 
)

Obtaines a neighbor range of an element within a segment. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the segment.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the neighbor range is obtained
ConnectorElementTypeOrTagTThe connector element type/tag
SegmentationTThe segmentation type of the segment type
ElementOrHandleTThe element or handle type for which the neighbor range is obtained
Parameters:
segmentThe host segment object in which the elements of the neighbor range exist
element_or_handleA handle or the element for which the neighbor range is obained
Returns:
The neighbor range
result_of::const_neighbor_range< segment_handle< SegmentationT >, ElementTypeOrTagT, ConnectorElementTypeOrTagT >::type neighbor_elements ( segment_handle< SegmentationT > const &  segment,
ElementOrHandleT const &  element_or_handle 
)

Obtaines a const neighbor range of an element within a segment. This function caches the neighbor information and re-creates it if the cached information is out of date. The worst case runtime of a re-creation is linear in the number of elements of type ConnectorElementTypeOrTagT time the number of elements of type ElementTypeOrTagT within the segment.

Template Parameters:
ElementTypeOrTagTThe base element type/tag from which the neighbor range is obtained
ConnectorElementTypeOrTagTThe connector element type/tag
SegmentationTThe segmentation type of the segment type
ElementOrHandleTThe element or handle type for which the neighbor range is obtained
Parameters:
segmentThe host segment object in which the elements of the neighbor range exist
element_or_handleA handle or the element for which the neighbor range is obained
Returns:
The const neighbor range
viennagrid::result_of::coord<PointT>::type viennagrid::norm ( PointT const &  p,
Tag   
)

Returns the norm of a point. The type of the norm is specified by a tag. Supported tags are one_norm_tag, two_norm_tag and inf_norm_tag.

Parameters:
pThe vector (point) for which the norm should be computed.
viennagrid::result_of::coord<PointT>::type viennagrid::norm ( PointT const &  p)

Returns the 2-norm of a point. Result is such as if the point were transformed to Cartesian coordinates first.

viennagrid::result_of::coord<PointT>::type viennagrid::norm_1 ( PointT const &  p)

Convenience shortcut for the 1-norm of a vector.

viennagrid::result_of::coord<PointT>::type viennagrid::norm_2 ( PointT const &  p)

Convenience shortcut for the 2-norm of a vector.

viennagrid::result_of::coord<PointT>::type viennagrid::norm_impl ( PointT const &  p,
CoordinateSystemT const &   
)

Dispatch for a point that needs coordinate conversion.

viennagrid::result_of::coord<PointT1>::type viennagrid::norm_impl ( PointT1 const &  p,
cartesian_cs< d >   
)

Dispatch for a point that does not need coordinate conversion.

viennagrid::result_of::coord<PointT>::type viennagrid::norm_inf ( PointT const &  p)

Convenience shortcut for the inf-norm of a vector.

PointAccessorT::value_type viennagrid::normal_vector ( PointAccessorT const  point_accessor,
ElementT const &  element 
)

Calculates the normal vector of an element.

Parameters:
point_accessorPoint accessor for input points
elementThe input element
viennagrid::result_of::point<ElementT>::type viennagrid::normal_vector ( ElementT const &  element)

Calculates the normal vector of an element.

Parameters:
elementThe input element
bool viennagrid::operator!= ( const static_array< T, N > &  x,
const static_array< T, N > &  y 
)
spatial_point<CoordType, CoordinateSystem> viennagrid::operator* ( double  val,
spatial_point< CoordType, CoordinateSystem > const &  p 
)

Overload for stretching a vector from the left.

bool viennagrid::operator< ( const static_array< T, N > &  x,
const static_array< T, N > &  y 
)
std::ostream& viennagrid::operator<< ( std::ostream &  os,
spatial_point< CoordType, CoordinateSystem > const &  p 
)

Overload of the output stream operator. Allows simple printing to screen or streaming to file.

std::ostream& viennagrid::operator<< ( std::ostream &  os,
viennagrid::null_type   
) [inline]
std::ostream& viennagrid::operator<< ( std::ostream &  os,
viennagrid::element< vertex_tag, WrappedConfigType > const &  el 
)

Overload for the output streaming operator for the vertex type.

std::ostream& viennagrid::operator<< ( std::ostream &  os,
viennagrid::element< element_tag, WrappedConfigType > const &  el 
)

Overload for the output streaming operator.

bool viennagrid::operator<= ( const static_array< T, N > &  x,
const static_array< T, N > &  y 
)
bool viennagrid::operator== ( const static_array< T, N > &  x,
const static_array< T, N > &  y 
)
bool viennagrid::operator> ( const static_array< T, N > &  x,
const static_array< T, N > &  y 
)
bool viennagrid::operator>= ( const static_array< T, N > &  x,
const static_array< T, N > &  y 
)
std::size_t viennagrid::orthogonalize ( IteratorT  start,
IteratorT  end,
NumericConfigT  nc 
)

Makes a set of vectors orthogonal (Gram–Schmidt process step).

If linearly dependent vectors are encountered, they are moved/swapped to the end of the sequence.

Parameters:
startThe begin vector iterator of the vector set to orthogonalize
endThe end vector iterator of the vector set to orthogonalize
ncNumeric config
Returns:
Number of linearly independent vectors found during the process
VectorT viennagrid::orthogonalize_vector ( VectorIteratorT  it,
VectorIteratorT const &  end,
VectorT  vec 
)

Makes a vector orthogonal to a set of linearly independent orthogonal vectors (Gram–Schmidt process step)

Parameters:
itThe begin vector iterator of the linearly independent orthogonal vector set
endThe end vector iterator of the linearly independent orthogonal vector set
vecThe vector to orthogonalize
result_of::element_range<SomethingT, plc_tag>::type viennagrid::plcs ( SomethingT &  something)

Function for retrieving a PLC range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A PLC range
result_of::const_element_range<SomethingT, plc_tag>::type viennagrid::plcs ( SomethingT const &  something)

Function for retrieving a const PLC range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const PLC range
result_of::point< segment_handle<SegmentationType> >::type& viennagrid::point ( segment_handle< SegmentationType > &  segment,
typename result_of::vertex< typename SegmentationType::mesh_type >::type &  vertex 
)

Function for obtaining the point from a vertex.

Template Parameters:
SegmentationTypeSegmentation type of the segment type
Parameters:
segmentThe host segment object
vertexThe vertex of which the point is obtained
Returns:
A reference to the point
result_of::point< segment_handle<SegmentationType> >::type const& viennagrid::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 Parameters:
SegmentationTypeSegmentation type of the segment type
Parameters:
segmentThe host segment object
vertexThe vertex of which the point is obtained
Returns:
A const reference to the point
result_of::point< segment_handle<SegmentationType> >::type& viennagrid::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 Parameters:
SegmentationTypeSegmentation type of the segment type
Parameters:
segmentThe host segment object
vertex_handleA handle to the vertex of which the point is obtained
Returns:
A reference to the point
result_of::point< segment_handle<SegmentationType> >::type const& viennagrid::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 Parameters:
SegmentationTypeSegmentation type of the segment type
Parameters:
segmentThe host segment object
vertex_handleA handle to the vertex of which the point is obtained
Returns:
A const reference to the point
result_of::point< viennagrid::mesh<WrappedConfigT> >::type& viennagrid::point ( viennagrid::mesh< WrappedConfigT > &  ,
typename result_of::vertex< viennagrid::mesh< WrappedConfigT > >::type &  vertex 
)

Function for obtaining the point from a vertex.

Template Parameters:
WrappedConfigTWrapped config of the host mesh type
Parameters:
vertexThe vertex of which the point is obtained
Returns:
A reference to the point
result_of::point< viennagrid::mesh<WrappedConfigT> >::type const& viennagrid::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 Parameters:
WrappedConfigTWrapped config of the host mesh type
Parameters:
vertexThe vertex of which the point is obtained
Returns:
A const reference to the point
result_of::point< viennagrid::mesh<WrappedConfigT> >::type& viennagrid::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 Parameters:
WrappedConfigTWrapped config of the host mesh type
Parameters:
mesh_objThe host mesh object
vertex_handleA handle to the vertex of which the point is obtained
Returns:
A reference to the point
result_of::point< viennagrid::mesh<WrappedConfigT> >::type const& viennagrid::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 Parameters:
WrappedConfigTWrapped config of the host mesh type
Parameters:
mesh_objThe host mesh object
vertex_handleA handle to the vertex of which the point is obtained
Returns:
A const reference to the point
result_of::point< VertexT >::type& viennagrid::point ( VertexT &  vertex)

Function for obtaining the point from a vertex, no mesh needed.

Template Parameters:
VertexTThe vertex type
Parameters:
vertexThe vertex of which the point is obtained
Returns:
A reference to the point
result_of::point< VertexT >::type const& viennagrid::point ( VertexT const &  vertex)

Function for obtaining the point from a vertex, no mesh needed, const version.

Template Parameters:
VertexTThe vertex type
Parameters:
vertexThe vertex of which the point is obtained
Returns:
A const reference to the point
result_of::element_range<SomethingT, polygon_tag>::type viennagrid::polygons ( SomethingT &  something)

Function for retrieving a polygon range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A polygon range
result_of::const_element_range<SomethingT, polygon_tag>::type viennagrid::polygons ( SomethingT const &  something)

Function for retrieving a const polygon range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const polygon range
result_of::element_range<SomethingT, quadrilateral_tag>::type viennagrid::quadrilaterals ( SomethingT &  something)

Function for retrieving a quadrilaterals range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A quadrilateral range
result_of::const_element_range<SomethingT, quadrilateral_tag>::type viennagrid::quadrilaterals ( SomethingT const &  something)

Function for retrieving a const quadrilateral range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const quadrilateral range
void viennagrid::quantity_transfer ( MeshOrSegmentT const &  mesh_or_segment,
SourceAccessorT const &  accessor_src,
DestinationSetterT &  setter_dest,
AveragerT const &  averager,
SourceFilterT const &  filter_src,
DestinationFilterT const &  filter_dest 
)

Transfers data defined on 'source' elements to 'destination' elements. For example, values defined on cells are tranferred to vertices.

Even though this functionality is sometimes referred to as interpolation, it is not an interpolation in the strict mathematical sense.

Template Parameters:
SourceTypeOrTagTopological source element or tag, e.g., cell_tag
DestinationTypeOrTagTopological destination element or tag, e.g., vertex_tag
Parameters:
mesh_or_segmentA mesh or segment, in which the source and destination elements reside
accessor_srcAn accessor functor for retrieving the data defined on each source element
setter_destA setter for storing the data on each destination element (first argument is the destination n-cell, second argument is the value)
averagerA functor which computes the value of the destination element from an STL-compatible container holding the values of all adjacent source elements
filter_srcA functor which returns true for all source elements considered for the transfer, false otherwise
filter_destA functor which returns true for all destination elements considered for the transfer, false otherwise
void viennagrid::refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
PointAccessorType  point_accessor_in,
VertexCopyMapT &  vertex_copy_map_,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor,
RefinementVertexAccessor &  edge_to_vertex_handle_accessor 
)

Public interface for refinement of a mesh with explicit point accessor, edge refinement accessor and temporary accessors.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
point_accessor_inPoint accessor for input points
vertex_copy_map_A vertex copy map for identifying vertices
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
edge_to_vertex_handle_accessorTemporary accessor for refined edge to vertex mapping
void viennagrid::refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
PointAccessorType  point_accessor_in,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for refinement of a mesh with explicit point accessor and edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
point_accessor_inPoint accessor for input points
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for refinement of a mesh with edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
PointAccessorT  point_accessor_in,
VertexCopyMapT &  vertex_copy_map_,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor,
RefinementVertexAccessorT &  edge_to_vertex_handle_accessor 
)

Public interface for refinement of a mesh with segmentation providing explicit point accessor, edge refinement accessor and temporary accessors.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
point_accessor_inPoint accessor for input points
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
vertex_copy_map_A vertex copy map for identifying vertices
edge_to_vertex_handle_accessorTemporary accessor for refined edge to vertex mapping
void viennagrid::refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
PointAccessorT  point_accessor_in,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for refinement of a mesh with segmentation providing explicit point accessor and edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
point_accessor_inPoint accessor for input points
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for refinement of a mesh with segmentation providing edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
PointAccessorType  point_accessor_in,
VertexCopyMapT  vertex_copy_map_,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor,
RefinementVertexAccessor  edge_to_vertex_handle_accessor 
)

Public interface for uniform refinement of a mesh with explicit point accessor, edge refinement accessor and temporary accessors.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
point_accessor_inPoint accessor for input points
vertex_copy_map_A vertex copy map for identifying vertices
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
edge_to_vertex_handle_accessorTemporary accessor for refined edge to vertex mapping
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
PointAccessorType  point_accessor_in,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for uniform refinement of a mesh with explicit point accessor and edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
point_accessor_inPoint accessor for input points
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for uniform refinement of a mesh with edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out 
)

Public interface for uniform refinement of a mesh.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
PointAccessorT  point_accessor_in,
VertexCopyMapT &  vertex_copy_map_,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor,
RefinementVertexAccessorT &  edge_to_vertex_handle_accessor 
)

Public interface for uniform refinement of a mesh with segmentation providing explicit point accessor, edge refinement accessor and temporary accessors.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
point_accessor_inPoint accessor for input points
vertex_copy_map_A vertex copy map for identifying vertices
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
edge_to_vertex_handle_accessorTemporary accessor for refined edge to vertex mapping
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
PointAccessorT  point_accessor_in,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for uniform refinement of a mesh with segmentation providing explicit point accessor and edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
point_accessor_inPoint accessor for input points
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor 
)

Public interface for uniform refinement of a mesh with segmentation providing edge refinement accessor.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
edge_refinement_flag_accessorAccessor storing flags if an edge is marked for refinement
void viennagrid::refine_uniformly ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out 
)

Public interface for uniform refinement of a mesh with segmentation.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
void viennagrid::scale ( MeshT &  mesh,
ScalarT  factor,
PointType const &  scaling_center 
)

Function for scaling a mesh, uses scale_functor.

Parameters:
meshThe input mesh
factorThe scaling factor
scaling_centerThe center of the scaling operation
void viennagrid::scale ( MeshT &  mesh,
ScalarT  factor 
)

Function for scaling a mesh, uses scale_functor. Scaling center is the origin.

Parameters:
meshThe input mesh
factorThe scaling factor
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* viennagrid::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 Parameters:
SegmentHandleTThe segment type
ElementTagTThe element tag of the element
WrappedConfigTThe wrapped config of the element
Parameters:
segmentThe segment object
elementThe element object
Returns:
A pointer to the segment element information type
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* viennagrid::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 Parameters:
SegmentHandleTThe segment type
ElementTagTThe element tag of the element
WrappedConfigTThe wrapped config of the element
Parameters:
segmentThe segment object
elementThe element object
Returns:
A const pointer to the segment element information type
result_of::segment_id_range< SegmentationT, viennagrid::element<ElementTagT, WrappedConfigT> >::type viennagrid::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 Parameters:
SegmentationTThe host segmentation type
ElementTagTThe element tag of the element for which the segment ID range is obtained
WrappedConfigTThe wrapped config of the element for which the segment ID range is obtained
Parameters:
segmentationThe host segmentation object
elementThe element object for which the segment ID range is obtained
Returns:
The segment ID range
void viennagrid::set_base_container ( base_container_collection_type &  base_container_collection,
view_container_collection_type &  view_container_collection 
)

Sets the reference to the parent container for a view. Also supports views of views, etc.

void viennagrid::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 Parameters:
ElementTagElement tag of the host element type
WrappedConfigTypeWrapped config of the host element type
VertexHandleTypeVertex handle type
Parameters:
elementThe host element object where the vertex is to be set
vertex_handleA vertex handle which is to be used in the host element
posThe position of the vertex to be set within the host element
viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume ( PointT1 const &  p1,
PointT2 const &  p2 
)

Returns the volume of the 1-simplex (line) spanned by the two points.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3 
)

Returns the two-dimensional volume of the 2-simplex (triangle) spanned by the three points.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3,
PointT4 const &  p4 
)

Returns the three-dimensional volume of the 3-simplex (tetrahedron) spanned by the four points.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume_impl ( PointT1 const &  p1,
PointT2 const &  p2,
CoordinateSystemT1 const &  ,
CoordinateSystemT2 const &   
)

Dispatch facility for two points with possibly different coordinate systems.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume_impl ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3,
CoordinateSystemT1 const &  ,
CoordinateSystemT2 const &  ,
CoordinateSystemT3 const &   
)

Dispatch facility for three points with possibly different coordinate systems.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume_impl ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3,
PointT4 const &  p4,
CoordinateSystemT1 const &  ,
CoordinateSystemT2 const &  ,
CoordinateSystemT3 const &  ,
CoordinateSystemT4 const &   
)

Dispatch facility for four points with possibly different coordinate systems.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume_impl ( PointT1 const &  p1,
PointT2 const &  p2,
cartesian_cs< DimV >  ,
cartesian_cs< DimV >   
)

Dispatch facility for two points in Cartesian coordinates.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume_impl ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3,
cartesian_cs< DimV >  ,
cartesian_cs< DimV >  ,
cartesian_cs< DimV >   
)

Dispatch facility for three points in Cartesian coordinates.

viennagrid::result_of::coord<PointT1>::type viennagrid::signed_spanned_volume_impl ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3,
PointT4 const &  p4,
cartesian_cs< DimV >  ,
cartesian_cs< DimV >  ,
cartesian_cs< DimV >  ,
cartesian_cs< DimV >   
)

Dispatch facility for four points in Cartesian coordinates.

void viennagrid::simple_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
VertexCopyMapT &  vertex_copy_map_,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor,
RefinementVertexAccessorT const &  edge_to_vertex_handle_accessor 
)

Refines a mesh based on edge information. A bool accessor, indicating if an edge should be refined, and a vertex handle accessor, representing the new vertex of an edge to refine, are used for the refinement process.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
mesh_outOutput refined mesh
vertex_copy_map_A vertex copy map for identifying vertices
edge_refinement_flag_accessorAn accessor defining which edge should be refined. operator() takes an edge and returns a bool.
edge_to_vertex_handle_accessorAn accessor defining the vertex handle of an edge to refine. operator() takes an edge and returns a vertex handle.
void viennagrid::simple_refine ( mesh< WrappedMeshConfigInT > const &  mesh_in,
segmentation< WrappedSegmentationConfigInT > const &  segmentation_in,
mesh< WrappedMeshConfigOutT > &  mesh_out,
segmentation< WrappedSegmentationConfigOutT > &  segmentation_out,
VertexCopyMapT &  vertex_copy_map_,
EdgeRefinementFlagAccessorT const &  edge_refinement_flag_accessor,
RefinementVertexAccessorT const &  edge_to_vertex_handle_accessor 
)

Refines a mesh and a segmentation based on edge information. A bool accessor, indicating if an edge should be refined, and a vertex handle accessor, representing the new vertex of an edge to refine, are used for the refinement process.

Template Parameters:
ElementTypeOrTagTThe element type/tag which elements are refined
Parameters:
mesh_inInput mesh
segmentation_inInput segmentation
mesh_outOutput refined mesh
segmentation_outOutput refined segmentation
vertex_copy_map_A vertex copy map for identifying vertices
edge_refinement_flag_accessorAn accessor defining which edge should be refined. operator() takes an edge and returns a bool.
edge_to_vertex_handle_accessorAn accessor defining the vertex handle of an edge to refine. operator() takes an edge and returns a vertex handle.
viennagrid::result_of::handle<MeshT, BoundaryElementTTag>::type viennagrid::smallest_boundary_volume ( MeshT &  mesh_obj,
ElementT &  element 
)

Returns a handle to the boundary element with the smallest volume.

viennagrid::result_of::const_handle<MeshT, BoundaryElementTTag>::type viennagrid::smallest_boundary_volume ( MeshT const &  mesh_obj,
ElementT const &  element 
)

Returns a const handle to the boundary element with the smallest volume.

viennagrid::result_of::coord<PointT>::type viennagrid::solid_angle ( PointT const &  a,
PointT const &  b,
PointT const &  c 
)

Implementation of the spanned (solid) angle by three points with respect to the origin (the solid angle defined by the tetrahedron (a, b, c, origin)

viennagrid::result_of::coord<PointT>::type viennagrid::solid_angle ( PointT const &  p0,
PointT const &  p1,
PointT const &  p2,
PointT const &  origin 
)

Implementation of the solid angle from an origin to p0, p1 and p2.

viennagrid::result_of::coord<PointT1>::type viennagrid::spanned_volume ( PointT1 const &  p1,
PointT2 const &  p2 
)

Returns the volume of the 1-simplex (line) spanned by the two points.

viennagrid::result_of::coord<PointT1>::type viennagrid::spanned_volume ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3 
)

Returns the two-dimensional volume of the 2-simplex (triangle) spanned by the three points.

viennagrid::result_of::coord<PointT1>::type viennagrid::spanned_volume ( PointT1 const &  p1,
PointT2 const &  p2,
PointT3 const &  p3,
PointT4 const &  p4 
)

Returns the three-dimensional volume of the 3-simplex (tetrahedron) spanned by the four points.

viennagrid::result_of::coord< typename PointAccessorT::value_type >::type viennagrid::surface ( PointAccessorT const  accessor,
viennagrid::element< ElementTag, WrappedConfigT > const &  element 
)

Returns the surface of a n-cell using the provided point accessor to obtain the spatial points from each vertex.

viennagrid::result_of::coord< viennagrid::element<ElementTag, WrappedConfigT> >::type viennagrid::surface ( viennagrid::element< ElementTag, WrappedConfigT > const &  element)

Returns the surface of a n-cell using the default point accessor.

viennagrid::result_of::coord< mesh<WrappedConfigT> >::type viennagrid::surface ( mesh< WrappedConfigT > const &  d)

Returns the surface of a mesh with explicit element type/tag.

viennagrid::result_of::coord< mesh<WrappedConfigT> >::type viennagrid::surface ( mesh< WrappedConfigT > const &  d)

Returns the surface of a mesh.

viennagrid::result_of::coord< typename SegmentationT::mesh_type >::type viennagrid::surface ( segment_handle< SegmentationT > const &  segment)

Returns the surface of a segment.

void viennagrid::swap ( static_array< T, N > &  x,
static_array< T, N > &  y 
) [inline]

Swaps the entries of the two arrays.

result_of::element_range<SomethingT, tetrahedron_tag>::type viennagrid::tetrahedra ( SomethingT &  something)

Function for retrieving a tetrahedron range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A tetrahedron range
result_of::const_element_range<SomethingT, tetrahedron_tag>::type viennagrid::tetrahedra ( SomethingT const &  something)

Function for retrieving a const tetrahedron range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const tetrahedron range
result_of::cartesian_point<PointType>::type viennagrid::to_cartesian ( PointType const &  p)

Convenience function for converting a point to Cartesian coordinates.

Template Parameters:
PointTypeA point type for which the result_of::coordinate_system<> metafunction can deduce the coordinate system
result_of::cartesian_point<PointType>::type viennagrid::to_cartesian_impl ( PointType const &  p,
CoordinateSystem const &   
)

Helper function for the conversion to Cartesian coordinates. Should not be called directly. Use to_cartesian() instead.

PointType const& viennagrid::to_cartesian_impl ( PointType const &  p,
cartesian_cs< d >   
)

Helper function for the transformation of any point to Cartesian coordinates. Should not be called directly - use to_cartesian() instead.

PointType& viennagrid::to_cartesian_impl ( PointType &  p,
cartesian_cs< d >   
)

Helper function for the transformation of any point to Cartesian coordinates. Should not be called directly - use to_cartesian() instead.

result_of::element_range<SomethingT, triangle_tag>::type viennagrid::triangles ( SomethingT &  something)

Function for retrieving a triangle range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A triangle range
result_of::const_element_range<SomethingT, triangle_tag>::type viennagrid::triangles ( SomethingT const &  something)

Function for retrieving a const triangles range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const triangle range
void viennagrid::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 Parameters:
SegmentHandleTThe segment type
ElementTagTThe element tag of the element
WrappedConfigTThe wrapped config of the element
Parameters:
segmentThe segment object to which the elemen is added
elementThe element object to be added
void viennagrid::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 Parameters:
SegmentHandleTThe segment type
ElementHandleTThe element handle type
Parameters:
segmentThe segment object to which the elemen is added
element_handleA handle of the element object to be added
result_of::element_range<SomethingT, vertex_tag>::type viennagrid::vertices ( SomethingT &  something)

Function for retrieving a vertex range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A vertex range
result_of::const_element_range<SomethingT, vertex_tag>::type viennagrid::vertices ( SomethingT const &  something)

Function for retrieving a const vertex range object from a host object.

Template Parameters:
SomethingTThe host type, can be an element, a collection, a mesh, a segment or a segmentation
Parameters:
somethingThe host object of type SomethingT
Returns:
A const vertex range
viennagrid::result_of::coord< typename PointAccessorT::value_type >::type viennagrid::volume ( PointAccessorT const  accessor,
ElementT const &  cell 
)

Returns the n-dimensional volume of a n-cell.

viennagrid::result_of::coord< viennagrid::element<ElementTag, WrappedConfigT> >::type viennagrid::volume ( viennagrid::element< ElementTag, WrappedConfigT > const &  cell)

Returns the n-dimensional volume of a n-cell.

viennagrid::result_of::coord< mesh<WrappedConfigT> >::type viennagrid::volume ( mesh< WrappedConfigT > const &  mesh_obj)

Returns the n-dimensional volume of a whole mesh.

viennagrid::result_of::coord< MeshSegmentHandleType >::type viennagrid::volume ( MeshSegmentHandleType const &  mesh_obj)

Returns the n-dimensional volume of a segment.