SCIRun
5.0
|
#include <PrismVolMesh.h>
Classes | |
struct | Cell |
struct | Edge |
struct | EdgeHash |
class | ElemData |
struct | Face |
struct | FaceHash |
struct | FillNodeNeighbors |
useful functors More... | |
struct | Node |
Index and Iterator types required for Mesh Concept. More... | |
struct | PEdge |
Edge information. More... | |
struct | PFace |
Face information. More... | |
class | Synchronize |
Public Types | |
typedef SCIRun::index_type | under_type |
typedef SCIRun::index_type | index_type |
typedef SCIRun::size_type | size_type |
typedef SCIRun::mask_type | mask_type |
typedef boost::shared_ptr < PrismVolMesh< Basis > > | handle_type |
typedef Basis | basis_type |
typedef Cell | Elem |
typedef Face | DElem |
![]() | |
enum | { UNKNOWN = 0, STRUCTURED = 1 << 1, UNSTRUCTURED = 1 << 2, REGULAR = 1 << 3, IRREGULAR = 1 << 4 } |
These will become obsolete at some point. More... | |
enum | { NONE_E = 0, NODES_E = 1 << 0, EDGES_E = 1 << 1, FACES_E = 1 << 2, CELLS_E = 1 << 3, ELEMS_E = 1 << 4, DELEMS_E = 1 << 5, ENODES_E = 1 << 6, ALL_ELEMENTS_E = NODES_E | EDGES_E | FACES_E | CELLS_E | ENODES_E | ELEMS_E | DELEMS_E, NORMALS_E = 1 << 7, NODE_NEIGHBORS_E = 1 << 8, ELEM_NEIGHBORS_E = 1 << 9, NEIGHBORS_E = NODE_NEIGHBORS_E | ELEM_NEIGHBORS_E, NODE_LOCATE_E = 1 << 10, ELEM_LOCATE_E = 1 << 11, LOCATE_E = NODE_LOCATE_E | ELEM_LOCATE_E, EPSILON_E = 1 << 12, BOUNDING_BOX_E = 1 << 12, FIND_CLOSEST_NODE_E = 1 << 13, FIND_CLOSEST_ELEM_E = 1 << 14, FIND_CLOSEST_E = FIND_CLOSEST_NODE_E | FIND_CLOSEST_ELEM_E } |
Synchronize system. More... | |
![]() | |
typedef HasIntegerId::id_type | id_type |
![]() | |
typedef IdType | id_type |
![]() | |
typedef SCIRun::mask_type | mask_type |
typedef SCIRun::index_type | under_type |
typedef SCIRun::index_type | index_type |
typedef SCIRun::index_type | size_type |
typedef std::vector< index_type > | array_type |
typedef std::vector< size_type > | dimension_type |
typedef boost::shared_ptr < MeshFacade< VMesh > > | MeshFacadeHandle |
Public Member Functions | |
PrismVolMesh () | |
Construct a new mesh. More... | |
PrismVolMesh (const PrismVolMesh ©) | |
Copy a mesh, needed for detaching the mesh from a field. More... | |
virtual PrismVolMesh * | clone () const |
virtual | ~PrismVolMesh () |
Destructor. More... | |
virtual VMesh * | vmesh () |
Access point to virtual interface. More... | |
MeshFacadeHandle | getFacade () const |
virtual int | basis_order () |
virtual int | dimensionality () const |
Topological dimension. More... | |
virtual int | topology_geometry () const |
virtual Core::Geometry::BBox | get_bounding_box () const |
Get the bounding box of the field. More... | |
virtual void | get_canonical_transform (Core::Geometry::Transform &t) const |
virtual void | transform (const Core::Geometry::Transform &t) |
Core::Geometry::Transform a field (transform all nodes using this transformation matrix) More... | |
virtual bool | is_editable () const |
Check whether mesh can be altered by adding nodes or elements. More... | |
virtual bool | has_normals () const |
Has this mesh normals. More... | |
virtual bool | has_face_normals () const |
Has this mesh face normals. More... | |
double | get_epsilon () const |
virtual bool | synchronize (mask_type mask) |
virtual bool | unsynchronize (mask_type mask) |
bool | clear_synchronization () |
Basis & | get_basis () |
Get the basis class. More... | |
void | begin (typename Node::iterator &) const |
begin/end iterators More... | |
void | begin (typename Edge::iterator &) const |
void | begin (typename Face::iterator &) const |
void | begin (typename Cell::iterator &) const |
void | end (typename Node::iterator &) const |
void | end (typename Edge::iterator &) const |
void | end (typename Face::iterator &) const |
void | end (typename Cell::iterator &) const |
void | size (typename Node::size_type &) const |
Get the iteration sizes. More... | |
void | size (typename Edge::size_type &) const |
void | size (typename Face::size_type &) const |
void | size (typename Cell::size_type &) const |
void | to_index (typename Node::index_type &index, index_type i) const |
void | to_index (typename Edge::index_type &index, index_type i) const |
void | to_index (typename Face::index_type &index, index_type i) const |
void | to_index (typename Cell::index_type &index, index_type i) const |
void | get_nodes (typename Node::array_type &array, typename Node::index_type idx) const |
Get the child topology elements of the given topology. More... | |
void | get_nodes (typename Node::array_type &array, typename Edge::index_type idx) const |
void | get_nodes (typename Node::array_type &array, typename Face::index_type idx) const |
void | get_nodes (typename Node::array_type &array, typename Cell::index_type idx) const |
void | get_edges (typename Edge::array_type &, typename Node::index_type) const |
void | get_edges (typename Edge::array_type &array, typename Edge::index_type idx) const |
void | get_edges (typename Edge::array_type &array, typename Face::index_type idx) const |
void | get_edges (typename Edge::array_type &array, typename Cell::index_type idx) const |
void | get_faces (typename Face::array_type &, typename Node::index_type) const |
void | get_faces (typename Face::array_type &, typename Edge::index_type) const |
void | get_faces (typename Face::array_type &array, typename Face::index_type idx) const |
void | get_faces (typename Face::array_type &array, typename Cell::index_type idx) const |
void | get_cells (typename Cell::array_type &array, typename Node::index_type idx) const |
void | get_cells (typename Cell::array_type &array, typename Edge::index_type idx) const |
void | get_cells (typename Cell::array_type &array, typename Face::index_type idx) const |
void | get_cells (typename Cell::array_type &array, typename Cell::index_type idx) const |
void | get_elems (typename Elem::array_type &array, typename Node::index_type idx) const |
void | get_elems (typename Elem::array_type &array, typename Edge::index_type idx) const |
void | get_elems (typename Elem::array_type &array, typename Face::index_type idx) const |
void | get_elems (typename Elem::array_type &array, typename Cell::index_type idx) const |
void | get_delems (typename DElem::array_type &, typename Node::index_type) const |
void | get_delems (typename DElem::array_type &, typename Edge::index_type) const |
void | get_delems (typename DElem::array_type &array, typename Face::index_type idx) const |
void | get_delems (typename DElem::array_type &array, typename Cell::index_type idx) const |
template<class VECTOR , class INDEX > | |
void | pwl_approx_edge (std::vector< VECTOR > &coords, INDEX ci, unsigned int which_edge, unsigned int div_per_unit) const |
template<class VECTOR , class INDEX > | |
void | pwl_approx_face (std::vector< std::vector< VECTOR > > &coords, INDEX ci, unsigned int which_face, unsigned int div_per_unit) const |
void | get_center (Core::Geometry::Point &result, typename Node::index_type idx) const |
get the center point (in object space) of an element More... | |
void | get_center (Core::Geometry::Point &result, typename Edge::index_type idx) const |
void | get_center (Core::Geometry::Point &result, typename Face::index_type idx) const |
void | get_center (Core::Geometry::Point &result, typename Cell::index_type idx) const |
double | get_size (typename Node::index_type) const |
Get the size of an elemnt (length, area, volume) More... | |
double | get_size (typename Edge::index_type idx) const |
double | get_size (typename Face::index_type idx) const |
double | get_size (typename Cell::index_type idx) const |
double | get_length (typename Edge::index_type idx) const |
More specific names for get_size. More... | |
double | get_area (typename Face::index_type idx) const |
double | get_volume (typename Cell::index_type idx) const |
bool | get_neighbor (typename Elem::index_type &neighbor, typename Elem::index_type elem, typename DElem::index_type delem) const |
Get neighbors of an element or a node. More... | |
void | get_neighbors (std::vector< typename Node::index_type > &array, typename Node::index_type node) const |
These are more general implementations. More... | |
bool | get_neighbors (std::vector< typename Elem::index_type > &array, typename Elem::index_type elem, typename DElem::index_type delem) const |
void | get_neighbors (typename Elem::array_type &array, typename Elem::index_type elem) const |
bool | locate (typename Node::index_type &node, const Core::Geometry::Point &p) const |
return false if point is out of range. More... | |
bool | locate (typename Edge::index_type &edge, const Core::Geometry::Point &p) const |
bool | locate (typename Face::index_type &face, const Core::Geometry::Point &p) const |
bool | locate (typename Cell::index_type &cell, const Core::Geometry::Point &p) const |
bool | locate (typename Elem::index_type &elem, std::vector< double > &coords, const Core::Geometry::Point &p) const |
int | get_weights (const Core::Geometry::Point &p, typename Node::array_type &l, double *w) const |
int | get_weights (const Core::Geometry::Point &, typename Edge::array_type &, double *) const |
int | get_weights (const Core::Geometry::Point &, typename Face::array_type &, double *) const |
int | get_weights (const Core::Geometry::Point &p, typename Cell::array_type &l, double *w) const |
void | get_point (Core::Geometry::Point &result, typename Node::index_type index) const |
Access the nodes of the mesh. More... | |
void | set_point (const Core::Geometry::Point &point, typename Node::index_type index) |
void | get_random_point (Core::Geometry::Point &p, typename Elem::index_type i, FieldRNG &r) const |
void | get_normal (Core::Geometry::Vector &, typename Node::index_type) const |
Function for getting node normals. More... | |
template<class VECTOR , class INDEX1 , class INDEX2 > | |
void | get_normal (Core::Geometry::Vector &result, VECTOR &coords, INDEX1 eidx, INDEX2 fidx) const |
Get the normals at the outside of the element. More... | |
Node::index_type | add_point (const Core::Geometry::Point &p) |
Add a new node to the mesh. More... | |
Node::index_type | add_node (const Core::Geometry::Point &p) |
template<class ARRAY > | |
Elem::index_type | add_elem (ARRAY a) |
Add a new element to the mesh. More... | |
void | node_reserve (size_type s) |
void | elem_reserve (size_type s) |
void | resize_nodes (size_type s) |
void | resize_elems (size_type s) |
template<class VECTOR , class INDEX > | |
bool | get_coords (VECTOR &coords, const Core::Geometry::Point &p, INDEX idx) const |
template<class VECTOR , class INDEX > | |
void | interpolate (Core::Geometry::Point &pt, const VECTOR &coords, INDEX idx) const |
template<class VECTOR1 , class INDEX , class VECTOR2 > | |
void | derivate (const VECTOR1 &coords, INDEX idx, VECTOR2 &J) const |
template<class VECTOR , class INDEX > | |
double | det_jacobian (const VECTOR &coords, INDEX idx) const |
template<class VECTOR , class INDEX > | |
void | jacobian (const VECTOR &coords, INDEX idx, double *J) const |
template<class VECTOR , class INDEX > | |
double | inverse_jacobian (const VECTOR &coords, INDEX idx, double *Ji) const |
template<class INDEX > | |
double | scaled_jacobian_metric (INDEX idx) const |
template<class INDEX > | |
double | jacobian_metric (INDEX idx) const |
template<class INDEX > | |
bool | find_closest_node (double &pdist, Core::Geometry::Point &result, INDEX &node, const Core::Geometry::Point &p) const |
template<class INDEX > | |
bool | find_closest_node (double &pdist, Core::Geometry::Point &result, INDEX &node, const Core::Geometry::Point &p, double maxdist) const |
template<class ARRAY > | |
bool | find_closest_nodes (ARRAY &nodes, const Core::Geometry::Point &p, double maxdist) const |
template<class ARRAY1 , class ARRAY2 > | |
bool | find_closest_nodes (ARRAY1 &distances, ARRAY2 &nodes, const Core::Geometry::Point &p, double maxdist) const |
template<class INDEX , class ARRAY > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, ARRAY &coords, INDEX &elem, const Core::Geometry::Point &p) const |
Find the closest element to a point. More... | |
template<class INDEX , class ARRAY > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, ARRAY &coords, INDEX &elem, const Core::Geometry::Point &p, double maxdist) const |
Find the closest element to a point. More... | |
template<class INDEX > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, INDEX &elem, const Core::Geometry::Point &p) const |
template<class ARRAY > | |
bool | find_closest_elems (double &, Core::Geometry::Point &, ARRAY &, const Core::Geometry::Point &) const |
Find the closest elements to a point. More... | |
virtual void | io (Piostream &) |
Export this class using the old Pio system. More... | |
virtual std::string | dynamic_type_name () const |
virtual const TypeDescription * | get_type_description () const |
bool | get_face (typename Face::index_type &array, typename Node::index_type n1, typename Node::index_type n2, typename Node::index_type n3, typename Node::index_type n4=PRISM_DUMMY_NODE_INDEX) const |
Trying figure out which face is made out of 3/4 nodes (?) More... | |
template<class Iter , class Functor > | |
void | fill_points (Iter begin, Iter end, Functor fill_ftor) |
template<class Iter , class Functor > | |
void | fill_cells (Iter begin, Iter end, Functor fill_ftor) |
Node::index_type | add_find_point (const Core::Geometry::Point &p, double err=1.0e-3) |
Elem::index_type | add_prism (typename Node::index_type a, typename Node::index_type b, typename Node::index_type c, typename Node::index_type d, typename Node::index_type e, typename Node::index_type f) |
Elem::index_type | add_prism (const Core::Geometry::Point &p0, const Core::Geometry::Point &p1, const Core::Geometry::Point &p2, const Core::Geometry::Point &p3, const Core::Geometry::Point &p4, const Core::Geometry::Point &p5) |
std::vector < Core::Geometry::Point > & | get_points () |
must detach, if altering points! More... | |
int | compute_checksum () |
![]() | |
Mesh () | |
Mesh (const Mesh ©) | |
virtual | ~Mesh () |
![]() | |
Datatype () | |
virtual | ~Datatype () |
Datatype (const Datatype &other) | |
Datatype & | operator= (const Datatype &rhs) |
template<typename T > | |
const T * | as () const |
![]() | |
virtual | ~Persistent () |
![]() | |
HasId () | |
IdType | id () const |
Static Public Member Functions | |
static const std::string | type_name (int n=-1) |
Core functionality for getting the name of a templated mesh class. More... | |
static const TypeDescription * | node_type_description () |
static const TypeDescription * | edge_type_description () |
static const TypeDescription * | face_type_description () |
static const TypeDescription * | cell_type_description () |
static const TypeDescription * | elem_type_description () |
static Persistent * | maker () |
This function returns a maker for Pio. More... | |
static MeshHandle | mesh_maker () |
This function returns a handle for the virtual interface. More... | |
![]() | |
static const std::string | type_name (int n=-1) |
![]() | |
static PersistentTypeIDPtr | find_derived (const std::string &classname, const std::string &basename) |
static bool | is_base_of (const std::string &parent, const std::string &type) |
static void | add_class (const std::string &type, const std::string &parent, Persistent *(*maker)(), Persistent *(*bc_maker1)()=0, Persistent *(*bc_maker2)()=0) |
static void | add_mesh_class (const std::string &type, Persistent *(*maker)(), Persistent *(*bc_maker1)()=0, Persistent *(*bc_maker2)()=0) |
static void | add_field_class (const std::string &type, Persistent *(*maker)(), Persistent *(*bc_maker1)()=0, Persistent *(*bc_maker2)()=0) |
Static Public Attributes | |
static PersistentTypeID | prismvol_typeid |
This ID is created as soon as this class will be instantiated. More... | |
![]() | |
static PersistentTypeID | type_id |
Protected Types | |
typedef std::map< PFace, typename Face::index_type, FaceHash > | face_ht |
typedef std::map< PEdge, typename Edge::index_type, EdgeHash > | edge_ht |
Protected Member Functions | |
template<class ARRAY , class INDEX > | |
void | get_nodes_from_edge (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_nodes_from_face (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_nodes_from_cell (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_nodes_from_elem (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_edges_from_face (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_edges_from_cell (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_edges_from_elem (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_faces_from_cell (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_cells_from_node (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_cells_from_edge (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | get_cells_from_face (ARRAY &array, INDEX idx) const |
template<class ARRAY , class INDEX > | |
void | set_nodes_by_elem (ARRAY &array, INDEX idx) |
template<class INDEX1 , class INDEX2 > | |
bool | get_elem_neighbor (INDEX1 &neighbor, INDEX1 elem, INDEX2 delem) const |
template<class ARRAY , class INDEX1 , class INDEX2 > | |
bool | get_elem_neighbors (ARRAY &array, INDEX1 elem, INDEX2 delem) const |
template<class ARRAY , class INDEX > | |
void | get_elem_neighbors (ARRAY &array, INDEX elem) const |
template<class ARRAY , class INDEX > | |
void | get_node_neighbors (ARRAY &array, INDEX node) const |
We should optimize this function more. More... | |
template<class INDEX > | |
bool | locate_node (INDEX &node, const Core::Geometry::Point &p) const |
template<class INDEX > | |
bool | locate_edge (INDEX &edge, const Core::Geometry::Point &p) const |
template<class INDEX > | |
bool | locate_face (INDEX &face, const Core::Geometry::Point &p) const |
template<class INDEX > | |
bool | locate_elem (INDEX &elem, const Core::Geometry::Point &p) const |
template<class ARRAY > | |
bool | locate_elems (ARRAY &array, const Core::Geometry::BBox &b) const |
template<class INDEX , class ARRAY > | |
bool | locate_elem (INDEX &elem, ARRAY &coords, const Core::Geometry::Point &p) const |
template<class INDEX > | |
void | get_node_center (Core::Geometry::Point &p, INDEX idx) const |
template<class INDEX > | |
void | get_edge_center (Core::Geometry::Point &p, INDEX idx) const |
template<class INDEX > | |
void | get_face_center (Core::Geometry::Point &p, INDEX idx) const |
template<class INDEX > | |
void | get_cell_center (Core::Geometry::Point &p, INDEX idx) const |
void | compute_node_neighbors () |
void | compute_edges () |
void | compute_faces () |
void | compute_node_grid () |
void | compute_elem_grid () |
void | compute_bounding_box () |
void | insert_elem_into_grid (typename Elem::index_type ci) |
void | remove_elem_from_grid (typename Elem::index_type ci) |
void | insert_node_into_grid (typename Node::index_type ci) |
void | remove_node_from_grid (typename Node::index_type ci) |
const Core::Geometry::Point & | point (typename Node::index_type i) |
template<class INDEX > | |
bool | inside (INDEX idx, const Core::Geometry::Point &p) const |
void | hash_edge (typename Node::index_type n1, typename Node::index_type n2, typename Cell::index_type ci, edge_ht &table) const |
void | hash_face (typename Node::index_type n1, typename Node::index_type n2, typename Node::index_type n3, typename Node::index_type n4, index_type combined_index, face_ht &table) const |
template<class INDEX > | |
bool | order_face_nodes (INDEX &n1, INDEX &n2, INDEX &n3, INDEX &n4) const |
Protected Attributes | |
std::vector < Core::Geometry::Point > | points_ |
all the nodes. More... | |
std::vector< under_type > | cells_ |
each 6 indecies make up a Prism More... | |
std::vector< PFace > | faces_ |
face_ht | face_table_ |
std::vector< PEdge > | edges_ |
edge_ht | edge_table_ |
std::vector< std::vector < typename Node::index_type > > | node_neighbors_ |
std::vector< unsigned char > | boundary_faces_ |
boost::shared_ptr< SearchGridT < index_type > > | node_grid_ |
boost::shared_ptr< SearchGridT < index_type > > | elem_grid_ |
Core::Thread::Mutex | synchronize_lock_ |
Core::Thread::ConditionVariable | synchronize_cond_ |
mask_type | synchronized_ |
mask_type | synchronizing_ |
Basis | basis_ |
Core::Geometry::BBox | bbox_ |
double | epsilon_ |
double | epsilon2_ |
double | epsilon3_ |
boost::shared_ptr< VMesh > | vmesh_ |
Pointer to virtual interface. More... | |
Static Protected Attributes | |
static const int | sz_int = sizeof(int) * 8 |
Friends | |
template<class MESH > | |
class | VPrismVolMesh |
Make sure the virtual interface has access. More... | |
template<class MESH > | |
class | VMeshShared |
template<class MESH > | |
class | VUnstructuredMesh |
class | ElemData |
class | Synchronize |
struct | FaceHash |
Functions for creating the virtual interface Declare the functions that instantiate the virtual interface
typedef Basis basis_type |
|
protected |
Elem refers to the most complex topological object DElem refers to object just below Elem in the topological hierarchy
|
protected |
Define the hash_map type, as this is not yet an approved type under Windows it is located in stdext
typedef boost::shared_ptr<PrismVolMesh<Basis> > handle_type |
typedef SCIRun::index_type index_type |
typedef SCIRun::mask_type mask_type |
typedef SCIRun::size_type size_type |
typedef SCIRun::index_type under_type |
PrismVolMesh | ( | ) |
Construct a new mesh.
Initialize the virtual interface when the mesh is created
PrismVolMesh | ( | const PrismVolMesh< Basis > & | copy | ) |
Copy a mesh, needed for detaching the mesh from a field.
We need to lock before we can copy these as these structures are generate dynamically when they are needed.
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
|
virtual |
Destructor.
|
inline |
Add a new element to the mesh.
PrismVolMesh< Basis >::Node::index_type add_find_point | ( | const Core::Geometry::Point & | p, |
double | err = 1.0e-3 |
||
) |
|
inline |
PrismVolMesh< Basis >::Node::index_type add_point | ( | const Core::Geometry::Point & | p | ) |
Add a new node to the mesh.
PrismVolMesh< Basis >::Elem::index_type add_prism | ( | typename Node::index_type | a, |
typename Node::index_type | b, | ||
typename Node::index_type | c, | ||
typename Node::index_type | d, | ||
typename Node::index_type | e, | ||
typename Node::index_type | f | ||
) |
PrismVolMesh< Basis >::Elem::index_type add_prism | ( | const Core::Geometry::Point & | p0, |
const Core::Geometry::Point & | p1, | ||
const Core::Geometry::Point & | p2, | ||
const Core::Geometry::Point & | p3, | ||
const Core::Geometry::Point & | p4, | ||
const Core::Geometry::Point & | p5 | ||
) |
|
inlinevirtual |
This one should go at some point, should be reroute throught the virtual interface
Reimplemented from Mesh.
void begin | ( | typename Node::iterator & | itr | ) | const |
begin/end iterators
void begin | ( | typename Edge::iterator & | itr | ) | const |
void begin | ( | typename Face::iterator & | itr | ) | const |
void begin | ( | typename Cell::iterator & | itr | ) | const |
|
static |
bool clear_synchronization | ( | ) |
|
inlinevirtual |
Clone function for detaching the mesh and automatically generating a new version if needed.
Implements Mesh.
|
protected |
int compute_checksum | ( | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
inline |
Interpolate the derivate of the function, This infact will return the jacobian of the local to global coordinate transformation. This function is mainly intended for the non linear elements
|
inline |
Get the determinant of the jacobian, which is the local volume of an element and is intended to help with the integration of functions over an element.
|
inlinevirtual |
Topological dimension.
|
inlinevirtual |
|
static |
|
inline |
|
inlinestatic |
void end | ( | typename Node::iterator & | itr | ) | const |
void end | ( | typename Edge::iterator & | itr | ) | const |
void end | ( | typename Face::iterator & | itr | ) | const |
void end | ( | typename Cell::iterator & | itr | ) | const |
|
static |
void fill_cells | ( | Iter | begin, |
Iter | end, | ||
Functor | fill_ftor | ||
) |
void fill_points | ( | Iter | begin, |
Iter | end, | ||
Functor | fill_ftor | ||
) |
Functions for Cubit WE SHOULD MAKE THESE GENERAL AND IN EVERY MESHTYPE
|
inline |
Find the closest element to a point.
|
inline |
Find the closest element to a point.
If there are no nodes we cannot find a closest point
Check whether the estimate given in idx is the point we are looking for
We need to do a full shell without any elements that are closer to make sure there no closer elements in neighboring searchgrid cells
|
inline |
|
inline |
Find the closest elements to a point.
|
inline |
|
inline |
If there are no nodes we cannot find the closest one
We need to do a full shell without any elements that are closer to make sure there no closer elements in neighboring searchgrid cells
If we are closer than eps^2 we found a node close enough
|
inline |
|
inline |
|
inline |
|
inline |
Get the basis class.
|
virtual |
Get the bounding box of the field.
|
virtual |
Return the transformation that takes a 0-1 space bounding box to the current bounding box of this mesh.
|
inlineprotected |
NEED TO CLEAN UP THIS CODE NEED TO FILTER OUT DEGENERATE ELEMENTS
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
get the center point (in object space) of an element
|
inline |
|
inline |
|
inline |
|
inline |
Get the local coordinates for a certain point within an element This function uses a couple of newton iterations to find the local coordinate of a point
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
bool get_face | ( | typename Face::index_type & | array, |
typename Node::index_type | n1, | ||
typename Node::index_type | n2, | ||
typename Node::index_type | n3, | ||
typename Node::index_type | n4 = PRISM_DUMMY_NODE_INDEX |
||
) | const |
Trying figure out which face is made out of 3/4 nodes (?)
|
inlineprotected |
NEED TO CLEAN UP THIS CODE NEED TO FILTER OUT DEGENERATE FACES
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inline |
More specific names for get_size.
|
inline |
Get neighbors of an element or a node.
THIS ONE IS FLAWED AS IN 3D SPACE FOR AND ELEMENT TYPE THAT IS NOT A VOLUME. HENCE IT WORKS HERE, BUT GENERALLY IT IS FLAWED AS IT ASSUMES ONLY ONE NEIGHBOR, WHEREAS FOR ANYTHING ELSE THAN A FACE THERE CAN BE MULTIPLE
|
inline |
These are more general implementations.
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
We should optimize this function more.
|
inline |
Get the child topology elements of the given topology.
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
Function for getting node normals.
|
inline |
Get the normals at the outside of the element.
|
inline |
Access the nodes of the mesh.
|
inline |
must detach, if altering points!
void get_random_point | ( | Core::Geometry::Point & | p, |
typename Elem::index_type | i, | ||
FieldRNG & | r | ||
) | const |
|
inline |
Get the size of an elemnt (length, area, volume)
|
inline |
|
inline |
|
inline |
|
virtual |
Type description, used for finding names of the mesh class for dynamic compilation purposes. Some of this should be obsolete
Implements Mesh.
|
inline |
int get_weights | ( | const Core::Geometry::Point & | p, |
typename Node::array_type & | l, | ||
double * | w | ||
) | const |
These should become obsolete soon, they do not follow the concept of the basis functions....
|
inline |
|
inline |
int get_weights | ( | const Core::Geometry::Point & | p, |
typename Cell::array_type & | l, | ||
double * | w | ||
) | const |
|
inlinevirtual |
Implements Mesh.
|
inlinevirtual |
Has this mesh face normals.
|
inlinevirtual |
Has this mesh normals.
|
inlineprotected |
|
inlineprotected |
|
protected |
|
protected |
|
inlineprotected |
|
inline |
Find the location in the global coordinate system for a local coordinate This function is the opposite of get_coords.
|
inline |
Get the inverse jacobian of the transformation. This one is needed to translate local gradients into global gradients. Hence it is crucial for calculating gradients of fields, or constructing finite elements.
|
virtual |
Export this class using the old Pio system.
Reimplemented from Mesh.
|
inlinevirtual |
Check whether mesh can be altered by adding nodes or elements.
|
inline |
Get the jacobian of the transformation. In case one wants the non inverted version of this matrix. This is currentl here for completeness of the interface
|
inline |
|
inline |
return false if point is out of range.
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
If there are no nodes we cannot find a closest point
Check whether the estimate given in idx is the point we are looking for
|
inlineprotected |
If there are no nodes we cannot find a closest point
Check whether the estimate given in idx is the point we are looking for
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
If there are no nodes we cannot find a closest point
Check first guess
We need to do a full shell without any elements that are closer to make sure there no closer elements in neighboring searchgrid cells
|
inlinestatic |
This function returns a maker for Pio.
|
inlinestatic |
This function returns a handle for the virtual interface.
|
inline |
Functions to improve memory management. Often one knows how many nodes/elements one needs, prereserving memory is often possible.
|
static |
|
inlineprotected |
|
inlineprotected |
|
inline |
Generate the list of points that make up a sufficiently accurate piecewise linear approximation of an edge.
|
inline |
Generate the list of points that make up a sufficiently accurate piecewise linear approximation of an face.
|
protected |
|
protected |
|
inline |
|
inline |
|
inline |
|
inlineprotected |
|
inline |
void size | ( | typename Node::size_type & | s | ) | const |
Get the iteration sizes.
void size | ( | typename Edge::size_type & | s | ) | const |
void size | ( | typename Face::size_type & | s | ) | const |
void size | ( | typename Cell::size_type & | s | ) | const |
|
virtual |
Compute tables for doing topology, these need to be synchronized before doing a lot of operations.
Reimplemented from Mesh.
|
inline |
These are here to convert indices to unsigned int counters. Some how the decision was made to use multi dimensional indices in some fields, these functions should deal with different pointer types. Use the virtual interface to avoid all this non sense.
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
What kind of mesh is this structured = no connectivity data regular = no node location data
|
virtual |
Core::Geometry::Transform a field (transform all nodes using this transformation matrix)
|
static |
Core functionality for getting the name of a templated mesh class.
|
friend |
Somehow the information of how to interpolate inside an element ended up in a separate class, as they need to share information this construction was created to transfer data. Hopefully in the future this class will disappear again.
|
friend |
|
friend |
|
friend |
|
friend |
Make sure the virtual interface has access.
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
each 6 indecies make up a Prism
|
protected |
|
protected |
container for edge storage. Must be computed each time nodes or cells change.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
container for face storage. Must be computed each time nodes or cells change.
|
protected |
|
protected |
This grid is used as an acceleration structure to expedite calls to locate. For each cell in the grid, we store a list of which tets overlap that grid cell – to find the tet which contains a point, we simply find which grid cell contains that point, and then search just those tets that overlap that grid cell.
|
protected |
all the nodes.
|
static |
This ID is created as soon as this class will be instantiated.
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
staticprotected |
hash the egde's node_indecies such that edges with the same nodes hash to the same value. nodes are sorted on edge construction.
|
protected |
Pointer to virtual interface.