SCIRun
5.0
|
#include <LatVolMesh.h>
Classes | |
struct | Cell |
struct | CellIndex |
struct | CellIter |
struct | CellSize |
struct | Edge |
class | ElemData |
struct | Face |
struct | LatIndex |
struct | LatIter |
struct | LatSize |
struct | Node |
Index and Iterator types required for Mesh Concept. More... | |
struct | NodeIndex |
struct | NodeIter |
struct | NodeSize |
struct | RangeCellIter |
struct | RangeNodeIter |
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 < LatVolMesh< 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 | |
LatVolMesh () | |
LatVolMesh (size_type x, size_type y, size_type z, const Core::Geometry::Point &min, const Core::Geometry::Point &max) | |
LatVolMesh (LatVolMesh *, size_type mx, size_type my, size_type mz, size_type x, size_type y, size_type z) | |
LatVolMesh (const LatVolMesh ©) | |
virtual LatVolMesh * | clone () const |
virtual | ~LatVolMesh () |
virtual VMesh * | vmesh () |
Access point to virtual interface. More... | |
virtual MeshFacadeHandle | getFacade () const |
virtual int | basis_order () |
virtual bool | has_normals () const |
virtual bool | has_face_normals () const |
virtual bool | is_editable () const |
Basis & | get_basis () |
void | pwl_approx_edge (std::vector< std::vector< double > > &coords, typename Elem::index_type, unsigned int which_edge, unsigned int div_per_unit) const |
void | pwl_approx_face (std::vector< std::vector< std::vector< double > > > &coords, typename Elem::index_type, unsigned int which_face, unsigned int div_per_unit) const |
virtual bool | synchronize (mask_type) |
virtual bool | unsynchronize (mask_type) |
bool | clear_synchronization () |
template<class VECTOR > | |
bool | get_coords (VECTOR &coords, const Core::Geometry::Point &p, typename Elem::index_type idx) const |
template<class VECTOR > | |
void | interpolate (Core::Geometry::Point &pt, const VECTOR &coords, typename Elem::index_type idx) const |
template<class VECTOR1 , class VECTOR2 > | |
void | derivate (const VECTOR1 &coords, typename Elem::index_type idx, VECTOR2 &J) const |
template<class VECTOR > | |
double | det_jacobian (const VECTOR &coords, typename Elem::index_type idx) const |
template<class VECTOR > | |
void | jacobian (const VECTOR &coords, typename Elem::index_type idx, double *J) const |
template<class VECTOR > | |
double | inverse_jacobian (const VECTOR &, typename Elem::index_type, double *Ji) const |
double | scaled_jacobian_metric (typename Elem::index_type) const |
double | jacobian_metric (typename Elem::index_type) const |
index_type | get_min_i () const |
get the mesh statistics More... | |
index_type | get_min_j () const |
index_type | get_min_k () const |
bool | get_min (std::vector< index_type > &) const |
index_type | get_ni () const |
index_type | get_nj () const |
index_type | get_nk () const |
virtual bool | get_dim (std::vector< size_type > &) const |
Core::Geometry::Vector | diagonal () const |
virtual Core::Geometry::BBox | get_bounding_box () const |
virtual void | transform (const Core::Geometry::Transform &t) |
virtual void | get_canonical_transform (Core::Geometry::Transform &t) |
void | set_min_i (index_type i) |
set the mesh statistics More... | |
void | set_min_j (index_type j) |
void | set_min_k (index_type k) |
void | set_min (std::vector< index_type > mins) |
void | set_ni (index_type i) |
void | set_nj (index_type j) |
void | set_nk (index_type k) |
virtual void | set_dim (std::vector< size_type > dims) |
void | begin (typename Node::iterator &) const |
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 |
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 &, typename Edge::index_type) const |
get the child elements of the given index More... | |
void | get_nodes (typename Node::array_type &, typename Face::index_type) const |
void | get_nodes (typename Node::array_type &, const typename Cell::index_type &) const |
void | get_edges (typename Edge::array_type &, typename Face::index_type) const |
void | get_edges (typename Edge::array_type &, const typename Cell::index_type &) const |
void | get_faces (typename Face::array_type &, const typename Cell::index_type &) const |
void | get_elems (typename Elem::array_type &result, const typename Node::index_type &idx) const |
get the parent element(s) of the given index More... | |
void | get_elems (typename Elem::array_type &result, const typename Edge::index_type &idx) const |
void | get_elems (typename Elem::array_type &result, const typename Face::index_type &idx) const |
void | get_delems (typename DElem::array_type &result, const typename Elem::index_type &idx) const |
Wrapper to get the derivative elements from this element. More... | |
void | get_cells (typename Cell::array_type &arr, const Core::Geometry::BBox &box) |
return all cell_indecies that overlap the BBox in arr. More... | |
void | get_cells (typename Cell::index_type &begin, typename Cell::index_type &end, const Core::Geometry::BBox &bbox) |
returns the min and max indices that fall within or on the BBox More... | |
void | get_nodes (typename Node::index_type &begin, typename Node::index_type &end, const Core::Geometry::BBox &bbox) |
bool | get_neighbor (typename Cell::index_type &neighbor, const typename Cell::index_type &from, typename Face::index_type face) const |
void | get_center (Core::Geometry::Point &, const typename Node::index_type &) const |
get the center point (in object space) of an element More... | |
void | get_center (Core::Geometry::Point &, typename Edge::index_type) const |
void | get_center (Core::Geometry::Point &, typename Face::index_type) const |
void | get_center (Core::Geometry::Point &, const typename Cell::index_type &) const |
double | get_size (const typename Node::index_type &idx) 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 (const typename Cell::index_type &idx) const |
double | get_length (typename Edge::index_type idx) const |
double | get_area (typename Face::index_type idx) const |
double | get_volume (const typename Cell::index_type &i) const |
bool | locate (typename Node::index_type &, const Core::Geometry::Point &) const |
bool | locate (typename Edge::index_type &, const Core::Geometry::Point &) const |
bool | locate (typename Face::index_type &, const Core::Geometry::Point &) const |
bool | locate (typename Elem::index_type &, const Core::Geometry::Point &) const |
int | get_weights (const Core::Geometry::Point &p, typename Node::array_type &l, double *w) |
int | get_weights (const Core::Geometry::Point &, typename Edge::array_type &, double *) |
int | get_weights (const Core::Geometry::Point &, typename Face::array_type &, double *) |
int | get_weights (const Core::Geometry::Point &p, typename Cell::array_type &l, double *w) |
void | get_point (Core::Geometry::Point &p, const typename Node::index_type &i) const |
void | get_normal (Core::Geometry::Vector &, const typename Node::index_type &) const |
void | get_normal (Core::Geometry::Vector &, std::vector< double > &, typename Elem::index_type, unsigned int) |
void | get_random_point (Core::Geometry::Point &, const typename Elem::index_type &, FieldRNG &rng) const |
bool | find_closest_node (double &pdist, Core::Geometry::Point &result, typename Node::index_type &elem, const Core::Geometry::Point &p) const |
bool | find_closest_node (double &pdist, Core::Geometry::Point &result, typename Node::index_type &elem, const Core::Geometry::Point &p, double maxdist) const |
template<class ARRAY > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, ARRAY &coords, typename Elem::index_type &elem, const Core::Geometry::Point &p, double maxdist) const |
template<class ARRAY > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, ARRAY &coords, typename Elem::index_type &elem, const Core::Geometry::Point &p) const |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, typename Elem::index_type &elem, const Core::Geometry::Point &p) const |
bool | find_closest_elems (double &pdist, Core::Geometry::Point &result, std::vector< typename Elem::index_type > &elem, const Core::Geometry::Point &p) const |
double | get_epsilon () const |
virtual void | io (Piostream &) |
Export this class using the old Pio system. More... | |
virtual std::string | dynamic_type_name () const |
Core::Geometry::Transform & | get_transform () |
Core::Geometry::Transform & | set_transform (const Core::Geometry::Transform &trans) |
virtual int | dimensionality () const |
virtual int | topology_geometry () const |
virtual const TypeDescription * | get_type_description () const |
![]() | |
Mesh () | |
Mesh (const Mesh ©) | |
virtual | ~Mesh () |
void | io (Piostream &stream) |
Persistent I/O. More... | |
![]() | |
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 * | cell_type_description () |
static const TypeDescription * | face_type_description () |
static const TypeDescription * | edge_type_description () |
static const TypeDescription * | node_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 MeshHandle | latvol_maker (size_type x, size_type y, size_type z, const Core::Geometry::Point &min, const Core::Geometry::Point &max) |
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) |
Protected Member Functions | |
void | compute_jacobian () |
Protected Attributes | |
index_type | min_i_ |
the min_Node::index_type ( incase this is a subLattice ) More... | |
index_type | min_j_ |
index_type | min_k_ |
size_type | ni_ |
size_type | nj_ |
size_type | nk_ |
Core::Geometry::Transform | transform_ |
Basis | basis_ |
double | jacobian_ [9] |
double | inverse_jacobian_ [9] |
double | det_jacobian_ |
double | scaled_jacobian_ |
double | det_inverse_jacobian_ |
boost::shared_ptr< VMesh > | vmesh_ |
Friends | |
template<class MESH > | |
class | VLatVolMesh |
struct | LatIndex |
struct | NodeIter |
struct | CellIter |
struct | EdgeIter |
struct | FaceIter |
struct | RangeCellIter |
struct | RangeNodeIter |
class | ElemData |
Additional Inherited Members | |
![]() | |
static PersistentTypeID | type_id |
Functions for creating the virtual interface Declare the functions that instantiate the virtual interface
These declarations are needed for a combined dynamic compilation as as well as virtual functions solution. Declare that these can be found in a library that is already precompiled. So dynamic compilation will not instantiate them again.
typedef Basis basis_type |
typedef boost::shared_ptr<LatVolMesh<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 |
|
inline |
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
LatVolMesh | ( | size_type | x, |
size_type | y, | ||
size_type | z, | ||
const Core::Geometry::Point & | min, | ||
const Core::Geometry::Point & | max | ||
) |
Initialize the virtual interface when the mesh is created
|
inline |
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
|
inline |
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
|
inlinevirtual |
|
inlinevirtual |
Reimplemented from Mesh.
void begin | ( | typename Node::iterator & | ) | const |
void begin | ( | typename Edge::iterator & | ) | const |
void begin | ( | typename Face::iterator & | ) | const |
void begin | ( | typename Cell::iterator & | ) | const |
|
static |
|
inline |
|
inlinevirtual |
Implements Mesh.
Reimplemented in StructHexVolMesh< Basis >.
|
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.
Core::Geometry::Vector diagonal | ( | ) | const |
|
inlinevirtual |
|
inlinevirtual |
|
static |
|
inlinestatic |
void end | ( | typename Node::iterator & | ) | const |
void end | ( | typename Edge::iterator & | ) | const |
void end | ( | typename Face::iterator & | ) | const |
void end | ( | typename Cell::iterator & | ) | const |
|
static |
|
inline |
This function will find the closest element and the location on that element that is the closest
|
inline |
This function will find the closest element and the location on that element that is the closest
|
inline |
bool find_closest_elems | ( | double & | pdist, |
Core::Geometry::Point & | result, | ||
std::vector< typename Elem::index_type > & | elem, | ||
const Core::Geometry::Point & | p | ||
) | const |
This function will return multiple elements if the closest point is located on a node or edge. All bordering elements are returned in that case.
bool find_closest_node | ( | double & | pdist, |
Core::Geometry::Point & | result, | ||
typename Node::index_type & | elem, | ||
const Core::Geometry::Point & | p | ||
) | const |
This function will find the closest element and the location on that element that is the closest
bool find_closest_node | ( | double & | pdist, |
Core::Geometry::Point & | result, | ||
typename Node::index_type & | elem, | ||
const Core::Geometry::Point & | p, | ||
double | maxdist | ||
) | const |
|
inline |
|
inline |
|
virtual |
Reimplemented in StructHexVolMesh< Basis >.
|
virtual |
void get_cells | ( | typename Cell::array_type & | arr, |
const Core::Geometry::BBox & | box | ||
) |
return all cell_indecies that overlap the BBox in arr.
void get_cells | ( | typename Cell::index_type & | begin, |
typename Cell::index_type & | end, | ||
const Core::Geometry::BBox & | bbox | ||
) |
returns the min and max indices that fall within or on the BBox
Returns the min and max indices that fall within or on the BBox.
void get_center | ( | Core::Geometry::Point & | result, |
const typename Node::index_type & | idx | ||
) | const |
get the center point (in object space) of an element
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, |
const typename Cell::index_type & | idx | ||
) | const |
|
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 |
Wrapper to get the derivative elements from this element.
|
virtual |
Reimplemented in StructHexVolMesh< Basis >.
void get_edges | ( | typename Edge::array_type & | array, |
typename Face::index_type | idx | ||
) | const |
void get_edges | ( | typename Edge::array_type & | array, |
const typename Cell::index_type & | idx | ||
) | const |
void get_elems | ( | typename Elem::array_type & | result, |
const typename Node::index_type & | idx | ||
) | const |
get the parent element(s) of the given index
void get_elems | ( | typename Elem::array_type & | result, |
const typename Edge::index_type & | idx | ||
) | const |
void get_elems | ( | typename Elem::array_type & | result, |
const typename Face::index_type & | idx | ||
) | const |
double get_epsilon | ( | ) | const |
void get_faces | ( | typename Face::array_type & | array, |
const typename Cell::index_type & | idx | ||
) | const |
|
inline |
bool get_min | ( | std::vector< index_type > & | array | ) | const |
|
inline |
get the mesh statistics
|
inline |
|
inline |
bool get_neighbor | ( | typename Cell::index_type & | neighbor, |
const typename Cell::index_type & | from, | ||
typename Face::index_type | face | ||
) | const |
|
inline |
|
inline |
|
inline |
void get_nodes | ( | typename Node::array_type & | array, |
typename Edge::index_type | idx | ||
) | const |
get the child elements of the given index
void get_nodes | ( | typename Node::array_type & | array, |
typename Face::index_type | idx | ||
) | const |
void get_nodes | ( | typename Node::array_type & | array, |
const typename Cell::index_type & | idx | ||
) | const |
void get_nodes | ( | typename Node::index_type & | begin, |
typename Node::index_type & | end, | ||
const Core::Geometry::BBox & | bbox | ||
) |
|
inline |
|
inline |
|
inline |
void get_random_point | ( | Core::Geometry::Point & | p, |
const typename Elem::index_type & | ei, | ||
FieldRNG & | rng | ||
) | const |
double get_size | ( | const typename Node::index_type & | idx | ) | const |
Get the size of an elemnt (length, area, volume)
double get_size | ( | typename Edge::index_type | idx | ) | const |
double get_size | ( | typename Face::index_type | idx | ) | const |
double get_size | ( | const typename Cell::index_type & | idx | ) | const |
|
inline |
|
virtual |
Type description, used for finding names of the mesh class for dynamic compilation purposes. Some of this should be obsolete
Implements Mesh.
Reimplemented in StructHexVolMesh< Basis >.
|
inline |
int get_weights | ( | const Core::Geometry::Point & | p, |
typename Node::array_type & | l, | ||
double * | w | ||
) |
|
inline |
|
inline |
int get_weights | ( | const Core::Geometry::Point & | p, |
typename Cell::array_type & | l, | ||
double * | w | ||
) |
|
inlinevirtual |
Implements Mesh.
|
inlinevirtual |
|
inlinevirtual |
|
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 Persistent.
Reimplemented in StructHexVolMesh< Basis >.
|
inlinevirtual |
|
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 |
|
inlinestatic |
This function returns a handle for the virtual interface.
bool locate | ( | typename Node::index_type & | node, |
const Core::Geometry::Point & | p | ||
) | const |
|
inline |
|
inline |
bool locate | ( | typename Elem::index_type & | elem, |
const Core::Geometry::Point & | p | ||
) | const |
|
inlinestatic |
This function returns a maker for Pio.
|
inlinestatic |
This function returns a handle for the virtual interface.
|
static |
|
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.
|
inline |
|
virtual |
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
void set_min | ( | std::vector< index_type > | mins | ) |
|
inline |
set the mesh statistics
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
|
inline |
void size | ( | typename Node::size_type & | ) | const |
void size | ( | typename Edge::size_type & | ) | const |
void size | ( | typename Face::size_type & | ) | const |
void size | ( | typename Cell::size_type & | ) | const |
|
inlinevirtual |
Synchronize functions, as there is nothing to synchronize, these functions always succeed
Reimplemented from Mesh.
Reimplemented in StructHexVolMesh< Basis >.
void to_index | ( | typename Node::index_type & | index, |
index_type | i | ||
) | const |
|
inline |
|
inline |
void to_index | ( | typename Cell::index_type & | index, |
index_type | i | ||
) | const |
|
inlinevirtual |
Reimplemented in StructHexVolMesh< Basis >.
|
virtual |
Reimplemented in StructHexVolMesh< Basis >.
|
static |
Core functionality for getting the name of a templated mesh class.
|
inlinevirtual |
Reimplemented from Mesh.
Reimplemented in StructHexVolMesh< Basis >.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
the min_Node::index_type ( incase this is a subLattice )
|
protected |
|
protected |
|
protected |
the Node::index_type space extents of a LatVolMesh (min=min_Node::index_type, max=min+extents-1)
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |