SCIRun
5.0
|
Declarations for virtual interface. More...
#include <StructQuadSurfMesh.h>
Classes | |
class | ElemData |
Public Types | |
typedef SCIRun::index_type | under_type |
Types that change depending on 32 or 64bits. More... | |
typedef SCIRun::index_type | index_type |
typedef SCIRun::size_type | size_type |
typedef SCIRun::mask_type | mask_type |
typedef boost::shared_ptr < StructQuadSurfMesh< Basis > > | handle_type |
![]() | |
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 < ImageMesh< Basis > > | handle_type |
typedef Basis | basis_type |
typedef Face | Elem |
typedef Edge | 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 | |
StructQuadSurfMesh () | |
StructQuadSurfMesh (size_type x, size_type y) | |
StructQuadSurfMesh (const StructQuadSurfMesh< Basis > ©) | |
virtual StructQuadSurfMesh * | clone () const |
virtual | ~StructQuadSurfMesh () |
virtual Core::Geometry::BBox | get_bounding_box () const |
get the mesh statistics More... | |
virtual void | transform (const Core::Geometry::Transform &t) |
virtual bool | get_dim (std::vector< size_type > &) const |
virtual void | set_dim (std::vector< size_type > dims) |
virtual int | topology_geometry () const |
double | get_size (const typename ImageMesh< Basis >::Node::index_type &) const |
Get the size of an element (length, area, volume) More... | |
double | get_size (typename ImageMesh< Basis >::Edge::index_type idx) const |
double | get_size (const typename ImageMesh< Basis >::Face::index_type &idx) const |
double | get_size (typename ImageMesh< Basis >::Cell::index_type) const |
double | get_length (typename ImageMesh< Basis >::Edge::index_type idx) const |
double | get_area (const typename ImageMesh< Basis >::Face::index_type &idx) const |
double | get_volume (typename ImageMesh< Basis >::Cell::index_type) const |
void | get_normal (Core::Geometry::Vector &, const typename ImageMesh< Basis >::Node::index_type &) const |
void | get_normal (Core::Geometry::Vector &result, std::vector< double > &coords, typename ImageMesh< Basis >::Elem::index_type eidx, unsigned int) |
void | get_center (Core::Geometry::Point &, const typename ImageMesh< Basis >::Node::index_type &) const |
get the center point (in object space) of an element More... | |
void | get_center (Core::Geometry::Point &, typename ImageMesh< Basis >::Edge::index_type) const |
void | get_center (Core::Geometry::Point &, const typename ImageMesh< Basis >::Face::index_type &) const |
void | get_center (Core::Geometry::Point &, typename ImageMesh< Basis >::Cell::index_type) const |
bool | locate (typename ImageMesh< Basis >::Node::index_type &node, const Core::Geometry::Point &p) const |
bool | locate (typename ImageMesh< Basis >::Edge::index_type &edge, const Core::Geometry::Point &p) const |
bool | locate (typename ImageMesh< Basis >::Face::index_type &face, const Core::Geometry::Point &p) const |
bool | locate (typename ImageMesh< Basis >::Cell::index_type &, const Core::Geometry::Point &) const |
template<class ARRAY > | |
bool | locate (typename ImageMesh< Basis >::Elem::index_type &elem, ARRAY &coords, const Core::Geometry::Point &p) const |
bool | find_closest_node (double &pdist, Core::Geometry::Point &result, typename ImageMesh< Basis >::Node::index_type &node, const Core::Geometry::Point &p) const |
bool | find_closest_node (double &pdist, Core::Geometry::Point &result, typename ImageMesh< Basis >::Node::index_type &node, const Core::Geometry::Point &p, double maxdist) const |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, typename ImageMesh< Basis >::Elem::index_type &elem, const Core::Geometry::Point &p) const |
bool | find_closest_elems (double &pdist, Core::Geometry::Point &result, std::vector< typename ImageMesh< Basis >::Elem::index_type > &elems, const Core::Geometry::Point &p) const |
int | get_weights (const Core::Geometry::Point &p, typename ImageMesh< Basis >::Node::array_type &l, double *w) |
int | get_weights (const Core::Geometry::Point &, typename ImageMesh< Basis >::Edge::array_type &, double *) |
int | get_weights (const Core::Geometry::Point &p, typename ImageMesh< Basis >::Face::array_type &l, double *w) |
int | get_weights (const Core::Geometry::Point &, typename ImageMesh< Basis >::Cell::array_type &, double *) |
bool | inside3_p (typename ImageMesh< Basis >::Face::index_type i, const Core::Geometry::Point &p) const |
void | get_point (Core::Geometry::Point &point, const typename ImageMesh< Basis >::Node::index_type &index) const |
void | set_point (const Core::Geometry::Point &point, const typename ImageMesh< Basis >::Node::index_type &index) |
void | get_random_point (Core::Geometry::Point &, const typename ImageMesh< Basis >::Elem::index_type &, FieldRNG &rng) const |
void | pwl_approx_edge (std::vector< std::vector< double > > &coords, typename ImageMesh< Basis >::Elem::index_type, unsigned which_edge, unsigned div_per_unit) const |
template<class VECTOR > | |
bool | get_coords (VECTOR &coords, const Core::Geometry::Point &p, typename ImageMesh< Basis >::Elem::index_type idx) const |
template<class VECTOR > | |
void | interpolate (Core::Geometry::Point &pt, const VECTOR &coords, typename ImageMesh< Basis >::Elem::index_type idx) const |
template<class VECTOR1 , class VECTOR2 > | |
void | derivate (const VECTOR1 &coords, typename ImageMesh< Basis >::Elem::index_type idx, VECTOR2 &J) const |
template<class VECTOR > | |
double | det_jacobian (const VECTOR &coords, typename ImageMesh< Basis >::Elem::index_type idx) const |
template<class VECTOR > | |
void | jacobian (const VECTOR &coords, typename ImageMesh< Basis >::Elem::index_type idx, double *J) const |
template<class VECTOR > | |
double | inverse_jacobian (const VECTOR &coords, typename ImageMesh< Basis >::Elem::index_type idx, double *Ji) const |
template<class INDEX > | |
double | scaled_jacobian_metric (const INDEX idx) const |
template<class INDEX > | |
double | jacobian_metric (const INDEX idx) const |
template<class INDEX > | |
bool | inside (INDEX idx, const Core::Geometry::Point &p) const |
template<class INDEX > | |
bool | locate_node (INDEX &node, const Core::Geometry::Point &p) const |
template<class INDEX > | |
bool | locate_edge (INDEX &idx, const Core::Geometry::Point &p) const |
This is currently implemented as an exhaustive search. More... | |
template<class INDEX > | |
bool | locate_elem (INDEX &elem, const Core::Geometry::Point &p) const |
template<class INDEX , class ARRAY > | |
bool | locate_elem (INDEX &elem, ARRAY &coords, const Core::Geometry::Point &p) const |
template<class ARRAY > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, ARRAY &coords, typename ImageMesh< Basis >::Elem::index_type &elem, const Core::Geometry::Point &p) const |
template<class ARRAY > | |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, ARRAY &coords, typename ImageMesh< Basis >::Elem::index_type &elem, const Core::Geometry::Point &p, double maxdist) const |
virtual void | io (Piostream &) |
Export this class using the old Pio system. More... | |
virtual bool | synchronize (mask_type sync) |
virtual bool | unsynchronize (mask_type sync) |
bool | clear_synchronization () |
virtual const TypeDescription * | get_type_description () const |
Array2< Core::Geometry::Point > & | get_points () |
double | get_epsilon () const |
![]() | |
ImageMesh () | |
ImageMesh (size_type x, size_type y, const Core::Geometry::Point &min, const Core::Geometry::Point &max) | |
ImageMesh (ImageMesh *mh, size_type mx, size_type my, size_type x, size_type y) | |
ImageMesh (const ImageMesh ©) | |
virtual | ~ImageMesh () |
MeshFacadeHandle | getFacade () const |
virtual VMesh * | vmesh () |
Access point to virtual interface. More... | |
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, unsigned int div_per_unit) const |
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 &coords, typename Elem::index_type idx, double *Ji) const |
double | scaled_jacobian_metric (typename Elem::index_type) const |
double | jacobian_metric (typename Elem::index_type) const |
size_type | get_min_i () const |
get the mesh statistics More... | |
size_type | get_min_j () const |
bool | get_min (std::vector< index_type > &) const |
size_type | get_ni () const |
size_type | get_nj () const |
Core::Geometry::Vector | diagonal () const |
virtual void | get_canonical_transform (Core::Geometry::Transform &t) |
bool | clear_synchronization () |
void | set_min_i (index_type i) |
set the mesh statistics More... | |
void | set_min_j (index_type j) |
void | set_min (std::vector< index_type > mins) |
void | set_ni (size_type i) |
void | set_nj (size_type j) |
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_type) 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 &, typename Cell::index_type) const |
void | get_edges (typename Edge::array_type &, typename Face::index_type) const |
void | get_edges (typename Edge::array_type &, typename Cell::index_type) const |
void | get_faces (typename Face::array_type &, typename Cell::index_type) const |
void | get_faces (typename Face::array_type &a, typename Face::index_type f) const |
void | get_elems (typename Elem::array_type &result, typename Node::index_type idx) const |
get the parent element(s) of the given index More... | |
void | get_elems (typename Elem::array_type &result, typename Edge::index_type idx) const |
void | get_elems (typename Elem::array_type &, typename Face::index_type) 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_faces (typename Face::array_type &arr, const Core::Geometry::BBox &box) |
return all face_indecies that overlap the BBox in arr. More... | |
double | get_size (const typename Node::index_type &) const |
Get the size of an element (length, area, volume) More... | |
double | get_size (typename Edge::index_type idx) const |
double | get_size (const typename Face::index_type &idx) const |
double | get_size (typename Cell::index_type) const |
double | get_length (typename Edge::index_type idx) const |
double | get_area (typename Face::index_type idx) const |
double | get_volume (typename Cell::index_type) const |
bool | get_neighbor (typename Face::index_type &neighbor, typename Face::index_type from, typename Edge::index_type idx) const |
void | get_neighbors (typename Face::array_type &array, typename Face::index_type idx) const |
void | get_normal (Core::Geometry::Vector &, const typename Node::index_type &) const |
void | get_normal (Core::Geometry::Vector &result, std::vector< double > &coords, typename Elem::index_type eidx, index_type) |
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 &, const typename Face::index_type &) const |
void | get_center (Core::Geometry::Point &, typename Cell::index_type) 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 Cell::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 &p, typename Face::array_type &l, double *w) |
int | get_weights (const Core::Geometry::Point &, typename Cell::array_type &, double *) |
void | get_point (Core::Geometry::Point &p, const typename Node::index_type &i) const |
void | get_random_point (Core::Geometry::Point &, const typename Elem::index_type &, FieldRNG &rng) const |
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 |
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 |
bool | find_closest_elem (double &pdist, Core::Geometry::Point &result, typename Elem::index_type &elem, const Core::Geometry::Point &p) 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_elems (double &pdist, Core::Geometry::Point &result, std::vector< typename Elem::index_type > &elem, const Core::Geometry::Point &p) const |
double | get_epsilon () const |
![]() | |
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 MeshHandle | structquadsurf_maker (size_type x, size_type y) |
This function returns a handle for the virtual interface. More... | |
![]() | |
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 const TypeDescription * | node_index_type_description () |
static const TypeDescription * | face_index_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 | image_maker (size_type x, size_type y, 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) |
Static Public Attributes | |
static PersistentTypeID | type_idsqs |
![]() | |
static PersistentTypeID | imagemesh_typeid |
![]() | |
static PersistentTypeID | type_id |
Protected Member Functions | |
void | compute_node_grid (Core::Geometry::BBox &bb) |
void | compute_elem_grid (Core::Geometry::BBox &bb) |
void | compute_epsilon (Core::Geometry::BBox &bb) |
void | compute_normals () |
void | insert_elem_into_grid (typename ImageMesh< Basis >::Elem::index_type ci) |
Used to recompute data for individual cells. More... | |
void | remove_elem_from_grid (typename ImageMesh< Basis >::Elem::index_type ci) |
void | insert_node_into_grid (typename ImageMesh< Basis >::Node::index_type ci) |
void | remove_node_from_grid (typename ImageMesh< Basis >::Node::index_type ci) |
const Core::Geometry::Point & | point (const typename ImageMesh< Basis >::Node::index_type &idx) |
index_type | next (index_type i) |
index_type | prev (index_type i) |
![]() | |
void | compute_jacobian () |
Protected Attributes | |
Array2< Core::Geometry::Point > | points_ |
Array2< Core::Geometry::Vector > | normals_ |
boost::shared_ptr< SearchGridT < typename ImageMesh< Basis > ::Node::index_type > > | node_grid_ |
normalized per node More... | |
boost::shared_ptr< SearchGridT < typename ImageMesh< Basis > ::Elem::index_type > > | elem_grid_ |
Core::Thread::Mutex | synchronize_lock_ |
mask_type | synchronized_ |
double | epsilon_ |
double | epsilon2_ |
![]() | |
index_type | min_i_ |
the min_typename Node::index_type ( incase this is a subLattice ) More... | |
index_type | min_j_ |
size_type | ni_ |
size_type | nj_ |
Core::Geometry::Transform | transform_ |
the object space extents of a ImageMesh More... | |
Core::Geometry::Vector | normal_ |
Basis | basis_ |
The basis class. More... | |
boost::shared_ptr< VMesh > | vmesh_ |
Virtual mesh. More... | |
double | jacobian_ [9] |
double | inverse_jacobian_ [9] |
double | det_jacobian_ |
double | scaled_jacobian_ |
double | det_inverse_jacobian_ |
Friends | |
template<class MESH > | |
class | VStructQuadSurfMesh |
Make sure the virtual interface has access. More... | |
class | ElemData |
Declarations for virtual interface.
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 boost::shared_ptr<StructQuadSurfMesh<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 |
Types that change depending on 32 or 64bits.
Create a new virtual interface for this copy ! all pointers have changed hence create a new ! virtual interface class
StructQuadSurfMesh | ( | size_type | x, |
size_type | y | ||
) |
Create a new virtual interface for this copy ! all pointers have changed hence create a new ! virtual interface class
StructQuadSurfMesh | ( | const StructQuadSurfMesh< Basis > & | copy | ) |
Create a new virtual interface for this copy ! all pointers have changed hence create a new ! virtual interface class
|
inlinevirtual |
|
static |
bool clear_synchronization | ( | ) |
|
inlinevirtual |
Reimplemented from ImageMesh< Basis >.
|
protected |
|
protected |
|
protected |
|
protected |
1 per node
build table of faces that touch each node
face normals (not normalized) so that magnitude is also the area.
Computing normal per face.
build table of faces that touch each node
Averaging the normals.
|
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.
|
static |
|
inlinestatic |
|
static |
bool find_closest_elem | ( | double & | pdist, |
Core::Geometry::Point & | result, | ||
typename ImageMesh< Basis >::Elem::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
|
inline |
|
inline |
If there are no nodes we cannot find the closest one
Test the one in face that is an initial guess
As we computed an estimate, we use the Newton's method in the basis functions compute a more refined solution. This function may slow down computation. This piece of code will calculate the coordinates in the local element framework (the newton's method of finding a minimum), then it will project this back THIS CODE SHOULD BE FURTHER OPTIMIZED
This looks incorrect - but it is correct We need to do a full shell without any elements that are closer to make sure there no closer elements in neighboring searchgrid cells
As we computed an estimate, we use the Newton's method in the basis functions compute a more refined solution. This function may slow down computation. This piece of code will calculate the coordinates in the local element framework (the newton's method of finding a minimum), then it will project this back THIS CODE SHOULD BE FURTHER OPTIMIZED
As we computed an estimate, we use the Newton's method in the basis functions compute a more refined solution. This function may slow down computation. This piece of code will calculate the coordinates in the local element framework (the newton's method of finding a minimum), then it will project this back THIS CODE SHOULD BE FURTHER OPTIMIZED
bool find_closest_elems | ( | double & | pdist, |
Core::Geometry::Point & | result, | ||
std::vector< typename ImageMesh< Basis >::Elem::index_type > & | elems, | ||
const Core::Geometry::Point & | p | ||
) | const |
If there are no nodes we cannot find the closest one
This looks incorrect - but it is correct We need to do a full shell without any elements that are closer to make sure there no closer elements
|
inline |
bool find_closest_node | ( | double & | pdist, |
Core::Geometry::Point & | result, | ||
typename ImageMesh< Basis >::Node::index_type & | node, | ||
const Core::Geometry::Point & | p, | ||
double | maxdist | ||
) | const |
If there are no nodes we cannot find a closest point
Check first guess
This looks incorrect - but it is correct 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 |
|
virtual |
get the mesh statistics
Reimplemented from ImageMesh< Basis >.
void get_center | ( | Core::Geometry::Point & | result, |
const typename ImageMesh< Basis >::Node::index_type & | idx | ||
) | const |
get the center point (in object space) of an element
void get_center | ( | Core::Geometry::Point & | result, |
typename ImageMesh< Basis >::Edge::index_type | idx | ||
) | const |
void get_center | ( | Core::Geometry::Point & | p, |
const typename ImageMesh< Basis >::Face::index_type & | idx | ||
) | const |
|
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
|
virtual |
Reimplemented from ImageMesh< Basis >.
|
inline |
|
inline |
void get_normal | ( | Core::Geometry::Vector & | result, |
const typename ImageMesh< Basis >::Node::index_type & | idx | ||
) | const |
|
inline |
|
inline |
|
inline |
void get_random_point | ( | Core::Geometry::Point & | p, |
const typename ImageMesh< Basis >::Elem::index_type & | ei, | ||
FieldRNG & | rng | ||
) | const |
Fold the quad sample into a triangle.
|
inline |
Get the size of an element (length, area, volume)
|
inline |
|
inline |
Sum the sizes of the two triangles.
|
inline |
|
virtual |
Type description, used for finding names of the mesh class for dynamic compilation purposes. Soem of this should be obsolete
Reimplemented from ImageMesh< Basis >.
|
inline |
int get_weights | ( | const Core::Geometry::Point & | p, |
typename ImageMesh< Basis >::Node::array_type & | l, | ||
double * | w | ||
) |
|
inline |
int get_weights | ( | const Core::Geometry::Point & | p, |
typename ImageMesh< Basis >::Face::array_type & | l, | ||
double * | w | ||
) |
|
inline |
|
protected |
Used to recompute data for individual cells.
|
protected |
|
inline |
bool inside3_p | ( | typename ImageMesh< Basis >::Face::index_type | i, |
const Core::Geometry::Point & | p | ||
) | const |
area of the whole triangle (2x)
area opposite p0
area opposite p1
area opposite p2
If the area of any of the sub triangles is very small then the point is on the edge of the subtriangle.
if( a0 < MIN_ELEMENT_VAL || a1 < MIN_ELEMENT_VAL || a2 < MIN_ELEMENT_VAL ) return true;
For the point to be inside a CONVEX quad it must be inside one of the four triangles that can be formed by using three of the quad vertices and the point in question.
|
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.
The dimensions of this array were swapped
Reimplemented from ImageMesh< Basis >.
|
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 |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
This is currently implemented as an exhaustive search.
|
inline |
|
inline |
|
inline |
If there are no nodes we cannot find a closest point
Check first guess
This looks incorrect - but it is correct 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.
|
inlineprotected |
|
static |
|
inlineprotected |
compute_edge_neighbors is not defined anywhere... do don't declare it... void compute_edge_neighbors(double err = 1.0e-8);
|
inlineprotected |
|
inline |
Generate the list of points that make up a sufficiently accurate piecewise linear approximation of an edge.
Needs to match unit_edges in Basis/QuadBilinearLgn.cc compare get_nodes order to the basis order
|
protected |
|
protected |
|
inline |
|
inlinevirtual |
Create a new virtual interface for this copy all pointers have changed hence create a new virtual interface class
Reimplemented from ImageMesh< Basis >.
void set_point | ( | const Core::Geometry::Point & | point, |
const typename ImageMesh< Basis >::Node::index_type & | index | ||
) |
|
inlinestatic |
This function returns a handle for the virtual interface.
|
virtual |
These computations share the evalution of the bounding box
Compute the epsilon for geometrical closeness comparisons Mainly used by the grid lookup tables
Table for finding nodes in space
Table for finding elements in space
Reimplemented from ImageMesh< Basis >.
|
inlinevirtual |
Reimplemented from ImageMesh< Basis >.
|
virtual |
Reimplemented from ImageMesh< Basis >.
|
static |
Core functionality for getting the name of a templated mesh class.
|
virtual |
Reimplemented from ImageMesh< Basis >.
|
friend |
|
friend |
Make sure the virtual interface has access.
|
protected |
|
protected |
|
protected |
|
protected |
normalized per node
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
static |
These IDs are created as soon as this class will be instantiated The first one is for Pio and the second for the virtual interface These are currently different as they serve different needs. static PersistentTypeID type_idts;