SCIRun  5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
StructQuadSurfMesh< Basis > Class Template Reference

Declarations for virtual interface. More...

#include <StructQuadSurfMesh.h>

Inheritance diagram for StructQuadSurfMesh< Basis >:
ImageMesh< Basis > Mesh Datatype MeshTraits< VMesh > Persistent HasId< IdType, IdGenerator >

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
 
- Public Types inherited from ImageMesh< Basis >
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
 
- Public Types inherited from Mesh
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...
 
- Public Types inherited from Datatype
typedef HasIntegerId::id_type id_type
 
- Public Types inherited from HasId< IdType, IdGenerator >
typedef IdType id_type
 
- Public Types inherited from MeshTraits< VMesh >
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_typearray_type
 
typedef std::vector< size_typedimension_type
 
typedef boost::shared_ptr
< MeshFacade< VMesh > > 
MeshFacadeHandle
 

Public Member Functions

 StructQuadSurfMesh ()
 
 StructQuadSurfMesh (size_type x, size_type y)
 
 StructQuadSurfMesh (const StructQuadSurfMesh< Basis > &copy)
 
virtual StructQuadSurfMeshclone () 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 TypeDescriptionget_type_description () const
 
Array2< Core::Geometry::Point > & get_points ()
 
double get_epsilon () const
 
- Public Member Functions inherited from ImageMesh< Basis >
 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 &copy)
 
virtual ~ImageMesh ()
 
MeshFacadeHandle getFacade () const
 
virtual VMeshvmesh ()
 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::Transformget_transform ()
 
Core::Geometry::Transformset_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
 
- Public Member Functions inherited from Mesh
 Mesh ()
 
 Mesh (const Mesh &copy)
 
virtual ~Mesh ()
 
- Public Member Functions inherited from Datatype
 Datatype ()
 
virtual ~Datatype ()
 
 Datatype (const Datatype &other)
 
Datatypeoperator= (const Datatype &rhs)
 
template<typename T >
const T * as () const
 
- Public Member Functions inherited from Persistent
virtual ~Persistent ()
 
- Public Member Functions inherited from HasId< IdType, IdGenerator >
 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 TypeDescriptionnode_type_description ()
 
static const TypeDescriptionedge_type_description ()
 
static const TypeDescriptionface_type_description ()
 
static const TypeDescriptioncell_type_description ()
 
static const TypeDescriptionelem_type_description ()
 
static Persistentmaker ()
 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 Public Member Functions inherited from ImageMesh< Basis >
static const std::string type_name (int n=-1)
 Core functionality for getting the name of a templated mesh class. More...
 
static const TypeDescriptionnode_type_description ()
 
static const TypeDescriptionedge_type_description ()
 
static const TypeDescriptionface_type_description ()
 
static const TypeDescriptioncell_type_description ()
 
static const TypeDescriptionelem_type_description ()
 
static const TypeDescriptionnode_index_type_description ()
 
static const TypeDescriptionface_index_type_description ()
 
static Persistentmaker ()
 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 Public Member Functions inherited from Mesh
static const std::string type_name (int n=-1)
 
- Static Public Member Functions inherited from Persistent
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 Public Attributes inherited from ImageMesh< Basis >
static PersistentTypeID imagemesh_typeid
 
- Static Public Attributes inherited from Mesh
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::Pointpoint (const typename ImageMesh< Basis >::Node::index_type &idx)
 
index_type next (index_type i)
 
index_type prev (index_type i)
 
- Protected Member Functions inherited from ImageMesh< Basis >
void compute_jacobian ()
 

Protected Attributes

Array2< Core::Geometry::Pointpoints_
 
Array2< Core::Geometry::Vectornormals_
 
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_
 
- Protected Attributes inherited from ImageMesh< Basis >
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< VMeshvmesh_
 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
 

Detailed Description

template<class Basis>
class SCIRun::StructQuadSurfMesh< Basis >

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.

Member Typedef Documentation

typedef boost::shared_ptr<StructQuadSurfMesh<Basis> > handle_type

Types that change depending on 32 or 64bits.

Constructor & Destructor Documentation

Create a new virtual interface for this copy ! all pointers have changed hence create a new ! virtual interface class

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

virtual ~StructQuadSurfMesh ( )
inlinevirtual

Member Function Documentation

const TypeDescription * cell_type_description ( )
static
bool clear_synchronization ( )
virtual StructQuadSurfMesh* clone ( ) const
inlinevirtual

Reimplemented from ImageMesh< Basis >.

void compute_elem_grid ( Core::Geometry::BBox bb)
protected
void compute_epsilon ( Core::Geometry::BBox bb)
protected
void compute_node_grid ( Core::Geometry::BBox bb)
protected
void compute_normals ( )
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.

void derivate ( const VECTOR1 &  coords,
typename ImageMesh< Basis >::Elem::index_type  idx,
VECTOR2 &  J 
) const
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

double det_jacobian ( const VECTOR &  coords,
typename ImageMesh< Basis >::Elem::index_type  idx 
) const
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.

const TypeDescription * edge_type_description ( )
static
static const TypeDescription* elem_type_description ( )
inlinestatic
const TypeDescription * face_type_description ( )
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

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
inline
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
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

bool find_closest_node ( double &  pdist,
Core::Geometry::Point result,
typename ImageMesh< Basis >::Node::index_type node,
const Core::Geometry::Point p 
) const
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

double get_area ( const typename ImageMesh< Basis >::Face::index_type idx) const
inline
Core::Geometry::BBox get_bounding_box ( ) const
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
void get_center ( Core::Geometry::Point ,
typename ImageMesh< Basis >::Cell::index_type   
) const
inline
bool get_coords ( VECTOR &  coords,
const Core::Geometry::Point p,
typename ImageMesh< Basis >::Elem::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

bool get_dim ( std::vector< size_type > &  array) const
virtual

Reimplemented from ImageMesh< Basis >.

double get_epsilon ( ) const
inline
double get_length ( typename ImageMesh< Basis >::Edge::index_type  idx) const
inline
void get_normal ( Core::Geometry::Vector result,
const typename ImageMesh< Basis >::Node::index_type idx 
) const
void get_normal ( Core::Geometry::Vector result,
std::vector< double > &  coords,
typename ImageMesh< Basis >::Elem::index_type  eidx,
unsigned  int 
)
inline
void get_point ( Core::Geometry::Point point,
const typename ImageMesh< Basis >::Node::index_type index 
) const
inline
Array2<Core::Geometry::Point>& get_points ( )
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.

double get_size ( const typename ImageMesh< Basis >::Node::index_type ) const
inline

Get the size of an element (length, area, volume)

double get_size ( typename ImageMesh< Basis >::Edge::index_type  idx) const
inline
double get_size ( const typename ImageMesh< Basis >::Face::index_type idx) const
inline

Sum the sizes of the two triangles.

double get_size ( typename ImageMesh< Basis >::Cell::index_type  ) const
inline
const TypeDescription * get_type_description ( ) const
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 >.

double get_volume ( typename ImageMesh< Basis >::Cell::index_type  ) const
inline
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 *   
)
inline
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 *   
)
inline
void insert_elem_into_grid ( typename ImageMesh< Basis >::Elem::index_type  ci)
protected

Used to recompute data for individual cells.

Todo:
: This can crash if you insert a new cell outside of the grid.
void insert_node_into_grid ( typename ImageMesh< Basis >::Node::index_type  ci)
protected
Todo:
: This can crash if you insert a new cell outside of the grid.
bool inside ( INDEX  idx,
const Core::Geometry::Point p 
) const
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.

Todo:
: How small is small ???

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.

void interpolate ( Core::Geometry::Point pt,
const VECTOR &  coords,
typename ImageMesh< Basis >::Elem::index_type  idx 
) const
inline

Find the location in the global coordinate system for a local coordinate ! This function is the opposite of get_coords.

double inverse_jacobian ( const VECTOR &  coords,
typename ImageMesh< Basis >::Elem::index_type  idx,
double *  Ji 
) const
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.

void io ( Piostream stream)
virtual

Export this class using the old Pio system.

The dimensions of this array were swapped

Reimplemented from ImageMesh< Basis >.

void jacobian ( const VECTOR &  coords,
typename ImageMesh< Basis >::Elem::index_type  idx,
double *  J 
) const
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

double jacobian_metric ( const INDEX  idx) const
inline
bool locate ( typename ImageMesh< Basis >::Node::index_type node,
const Core::Geometry::Point p 
) const
inline
bool locate ( typename ImageMesh< Basis >::Edge::index_type edge,
const Core::Geometry::Point p 
) const
inline
bool locate ( typename ImageMesh< Basis >::Face::index_type face,
const Core::Geometry::Point p 
) const
inline
bool locate ( typename ImageMesh< Basis >::Cell::index_type ,
const Core::Geometry::Point  
) const
inline
bool locate ( typename ImageMesh< Basis >::Elem::index_type elem,
ARRAY &  coords,
const Core::Geometry::Point p 
) const
inline
bool locate_edge ( INDEX &  idx,
const Core::Geometry::Point p 
) const
inline

This is currently implemented as an exhaustive search.

bool locate_elem ( INDEX &  elem,
const Core::Geometry::Point p 
) const
inline
bool locate_elem ( INDEX &  elem,
ARRAY &  coords,
const Core::Geometry::Point p 
) const
inline
bool locate_node ( INDEX &  node,
const Core::Geometry::Point p 
) const
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

static Persistent* maker ( )
inlinestatic

This function returns a maker for Pio.

static MeshHandle mesh_maker ( )
inlinestatic

This function returns a handle for the virtual interface.

index_type next ( index_type  i)
inlineprotected
const TypeDescription * node_type_description ( )
static
const Core::Geometry::Point& point ( const typename ImageMesh< Basis >::Node::index_type idx)
inlineprotected

compute_edge_neighbors is not defined anywhere... do don't declare it... void compute_edge_neighbors(double err = 1.0e-8);

index_type prev ( index_type  i)
inlineprotected
void pwl_approx_edge ( std::vector< std::vector< double > > &  coords,
typename ImageMesh< Basis >::Elem::index_type  ,
unsigned  which_edge,
unsigned  div_per_unit 
) const
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

void remove_elem_from_grid ( typename ImageMesh< Basis >::Elem::index_type  ci)
protected
void remove_node_from_grid ( typename ImageMesh< Basis >::Node::index_type  ci)
protected
double scaled_jacobian_metric ( const INDEX  idx) const
inline
virtual void set_dim ( std::vector< size_type dims)
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 
)
static MeshHandle structquadsurf_maker ( size_type  x,
size_type  y 
)
inlinestatic

This function returns a handle for the virtual interface.

bool synchronize ( mask_type  sync)
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 >.

virtual int topology_geometry ( ) const
inlinevirtual

Reimplemented from ImageMesh< Basis >.

void transform ( const Core::Geometry::Transform t)
virtual

Reimplemented from ImageMesh< Basis >.

const std::string type_name ( int  n = -1)
static

Core functionality for getting the name of a templated mesh class.

bool unsynchronize ( mask_type  sync)
virtual

Reimplemented from ImageMesh< Basis >.

Friends And Related Function Documentation

friend class ElemData
friend
friend class VStructQuadSurfMesh
friend

Make sure the virtual interface has access.

Member Data Documentation

boost::shared_ptr<SearchGridT<typename ImageMesh<Basis>::Elem::index_type > > elem_grid_
protected
double epsilon2_
protected
double epsilon_
protected
boost::shared_ptr<SearchGridT<typename ImageMesh<Basis>::Node::index_type > > node_grid_
protected

normalized per node

Array2<Core::Geometry::Vector> normals_
protected
Array2<Core::Geometry::Point> points_
protected
Core::Thread::Mutex synchronize_lock_
mutableprotected
mask_type synchronized_
protected
PersistentTypeID type_idsqs
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;


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