Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

OpenTissue::t4mesh::detail::T4Mesh< M, N, T > Class Template Reference

#include <t4mesh_t4mesh.h>

Inheritance diagram for OpenTissue::t4mesh::detail::T4Mesh< M, N, T >:
OpenTissue::t4mesh::T4Mesh< M, N, T > OpenTissue::t4mesh::T4Mesh< math_types, OpenTissue::fem::detail::NodeTraits< math_types >, OpenTissue::fem::detail::TetrahedronTraits< math_types > > OpenTissue::t4mesh::T4Mesh< versatile_types, OpenTissue::versatile::detail::NodeTraits< versatile_types >, OpenTissue::versatile::detail::TetrahedronTraits< versatile_types > > OpenTissue::fem::Mesh< math_types > OpenTissue::versatile::Mesh< versatile_types >

List of all members.

Public Types

typedef M math_types
typedef N node_traits
typedef T tetrahedron_traits
typedef T4Mesh< M, N, T > mesh_type
typedef T4Node< mesh_typenode_type
typedef T4Tetrahedron< mesh_typetetrahedron_type
typedef size_t index_type
typedef
OpenTissue::utility::IndexIterator
< index_type,
tetrahedra_container
tetrahedron_iterator
typedef
OpenTissue::utility::IndexIterator
< index_type,
tetrahedra_container
const_tetrahedron_iterator
typedef
OpenTissue::utility::IndexIterator
< index_type, node_container
node_iterator
typedef
OpenTissue::utility::IndexIterator
< index_type, node_container
const_node_iterator

Public Member Functions

tetrahedron_iterator tetrahedron_begin ()
tetrahedron_iterator tetrahedron_end ()
const_tetrahedron_iterator tetrahedron_begin () const
const_tetrahedron_iterator tetrahedron_end () const
node_iterator node_begin ()
node_iterator node_end ()
const_node_iterator node_begin () const
const_node_iterator node_end () const
 T4Mesh ()
 T4Mesh (T4Mesh const &cpy)
T4Meshoperator= (T4Mesh const &rhs)
void clear ()
node_iterator node (index_type idx)
const_node_iterator const_node (index_type idx) const
tetrahedron_iterator tetrahedron (index_type idx)
const_tetrahedron_iterator tetrahedron (index_type idx) const
size_t size_nodes () const
size_t size_tetrahedra () const
node_iterator insert ()
template<typename vector3_type >
node_iterator insert (vector3_type const &coord)
tetrahedron_iterator insert (index_type i, index_type j, index_type k, index_type m)
tetrahedron_iterator insert (node_iterator i, node_iterator j, node_iterator k, node_iterator m)
tetrahedron_iterator find (node_iterator i, node_iterator j, node_iterator k, node_iterator m) const
tetrahedron_iterator erase (tetrahedron_iterator &where)

Static Public Member Functions

static index_type const & undefined ()

Protected Types

typedef std::vector< node_typenode_container
typedef std::vector
< tetrahedron_type
tetrahedra_container

Protected Member Functions

void unlink (tetrahedron_iterator &I)
void link (tetrahedron_iterator &I, node_iterator &i, node_iterator &j, node_iterator &k, node_iterator &m)
void swap (tetrahedron_iterator &A, tetrahedron_iterator &B)
void verify_nodes (node_iterator const &i, node_iterator const &j, node_iterator const &k, node_iterator const &m) const
void verify_tetrahedron (tetrahedron_iterator const &I) const

Protected Attributes

node_container m_nodes
 Internal node storage.
tetrahedra_container m_tetrahedra
 Internal tetrahedra storage.

Detailed Description

template<typename M, typename N, typename T>
class OpenTissue::t4mesh::detail::T4Mesh< M, N, T >

Basic (Simple) Tetrahedra Mesh.

This tetrahedra mesh data structure is designed specially for two purposes: It should maintain a valid topology of the mesh at all times, that is the connectivity of nodes and tetrahedra are always valid.

The other purpose is to make sure that the global indexing of nodes (0..N-1) and tetrahedra (0..T-1) always is a compact range starting from zero to the maximum number minus one.

Obviously removing entities (nodes or tetrahedra) alters the global index ranges, thus end users can not trust previously stored indices of entities in their own apps.

The mesh takes three template arguments. The first specifies the math_types used in the mesh. The following two arguments are node traits and tetrahedron traits respectively.


Member Typedef Documentation

template<typename M, typename N, typename T>
typedef size_t OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::index_type
template<typename M, typename N, typename T>
typedef M OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::math_types
template<typename M, typename N, typename T>
typedef T4Mesh<M,N,T> OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::mesh_type
template<typename M, typename N, typename T>
typedef std::vector< node_type > OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_container [protected]
template<typename M, typename N, typename T>
typedef N OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_traits
template<typename M, typename N, typename T>
typedef T4Node<mesh_type> OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_type
template<typename M, typename N, typename T>
typedef std::vector< tetrahedron_type > OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedra_container [protected]
template<typename M, typename N, typename T>
typedef T OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron_traits
template<typename M, typename N, typename T>
typedef T4Tetrahedron<mesh_type> OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron_type

Constructor & Destructor Documentation

template<typename M, typename N, typename T>
OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::T4Mesh (  )  [inline]
template<typename M, typename N, typename T>
OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::T4Mesh ( T4Mesh< M, N, T > const &  cpy  )  [inline]

Member Function Documentation

template<typename M, typename N, typename T>
void OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::clear (  )  [inline]
template<typename M, typename N, typename T>
const_node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::const_node ( index_type  idx  )  const [inline]
template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::erase ( tetrahedron_iterator where  )  [inline]

Erase Tetrahedron at specified Position.

Parameters:
where 
Returns:
template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::find ( node_iterator  i,
node_iterator  j,
node_iterator  k,
node_iterator  m 
) const [inline]

Find tetrahedron with the given nodes

Parameters:
i The global index of i'th node
j The global index of j'th node
k The global index of k'th node
m The global index of m'th node
Returns:
A iterator to the tetrahedron if it exist or end position otherwise.
template<typename M, typename N, typename T>
template<typename vector3_type >
node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::insert ( vector3_type const &  coord  )  [inline]

Add New Node. This method do not watch against creating multiple nodes with same coordinates.

Parameters:
coord The new coordinate of the node
Returns:
An iterator to the newly created node.
template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::insert ( node_iterator  i,
node_iterator  j,
node_iterator  k,
node_iterator  m 
) [inline]
template<typename M, typename N, typename T>
node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::insert (  )  [inline]

Add New Node. New node will have index value equal to number of nodes prior to insertion.

Returns:
A iterator to the new node
template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::insert ( index_type  i,
index_type  j,
index_type  k,
index_type  m 
) [inline]

Overloaded insert method for tetrahedron, support index-based insertion.

This is a bit slower than using the iterator-based insertion method directly. But it makes it easier to code....

template<typename M, typename N, typename T>
void OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::link ( tetrahedron_iterator I,
node_iterator i,
node_iterator j,
node_iterator k,
node_iterator m 
) [inline, protected]

Create new nodal connections for the specified Tetrahedron.

template<typename M, typename N, typename T>
node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node ( index_type  idx  )  [inline]
template<typename M, typename N, typename T>
node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_begin (  )  [inline]
template<typename M, typename N, typename T>
const_node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_begin (  )  const [inline]
template<typename M, typename N, typename T>
const_node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_end (  )  const [inline]
template<typename M, typename N, typename T>
node_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::node_end (  )  [inline]
template<typename M, typename N, typename T>
T4Mesh& OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::operator= ( T4Mesh< M, N, T > const &  rhs  )  [inline]
template<typename M, typename N, typename T>
size_t OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::size_nodes (  )  const [inline]
template<typename M, typename N, typename T>
size_t OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::size_tetrahedra (  )  const [inline]
template<typename M, typename N, typename T>
void OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::swap ( tetrahedron_iterator A,
tetrahedron_iterator B 
) [inline, protected]

Swap any internal data and nodal connections between the two specified Tetrahedra.

This metod is intended for internal usage only.

template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron ( index_type  idx  )  [inline]
template<typename M, typename N, typename T>
const_tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron ( index_type  idx  )  const [inline]
template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron_begin (  )  [inline]
template<typename M, typename N, typename T>
const_tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron_begin (  )  const [inline]
template<typename M, typename N, typename T>
const_tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron_end (  )  const [inline]
template<typename M, typename N, typename T>
tetrahedron_iterator OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::tetrahedron_end (  )  [inline]
template<typename M, typename N, typename T>
static index_type const& OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::undefined (  )  [inline, static]

Undefined index value.

Returns:
An index value that means that the index value is undefined. The largest possible value of the index type is used for this purpose.
template<typename M, typename N, typename T>
void OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::unlink ( tetrahedron_iterator I  )  [inline, protected]

Remove all nodal connections from specified Tetrahedron.

template<typename M, typename N, typename T>
void OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::verify_nodes ( node_iterator const &  i,
node_iterator const &  j,
node_iterator const &  k,
node_iterator const &  m 
) const [inline, protected]
template<typename M, typename N, typename T>
void OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::verify_tetrahedron ( tetrahedron_iterator const &  I  )  const [inline, protected]

Member Data Documentation

template<typename M, typename N, typename T>
node_container OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::m_nodes [protected]

Internal node storage.

template<typename M, typename N, typename T>
tetrahedra_container OpenTissue::t4mesh::detail::T4Mesh< M, N, T >::m_tetrahedra [protected]

Internal tetrahedra storage.


The documentation for this class was generated from the following file: