30 #ifndef CORE_DATATYPES_VMESH_H
31 #define CORE_DATATYPES_VMESH_H
240 is_structured_(false),
241 num_nodes_per_elem_(0),
242 num_enodes_per_elem_(0),
243 num_edges_per_elem_(0),
244 num_faces_per_elem_(0),
245 num_nodes_per_face_(0),
246 num_edges_per_face_(0)
327 virtual boost::shared_ptr<SearchGridT<SCIRun::index_type> > get_elem_search_grid();
328 virtual boost::shared_ptr<SearchGridT<SCIRun::index_type> > get_node_search_grid();
354 virtual void get_enodes(ENode::array_type& nodes,
Node::index_type i)
const;
355 virtual void get_enodes(ENode::array_type& nodes,
Edge::index_type i)
const;
356 virtual void get_enodes(ENode::array_type& nodes,
Face::index_type i)
const;
357 virtual void get_enodes(ENode::array_type& nodes,
Cell::index_type i)
const;
358 virtual void get_enodes(ENode::array_type& nodes,
Elem::index_type i)
const;
403 virtual void get_delems(DElem::array_type& delems,
Node::index_type i)
const;
404 virtual void get_delems(DElem::array_type& delems,
Edge::index_type i)
const;
405 virtual void get_delems(DElem::array_type& delems,
Face::index_type i)
const;
406 virtual void get_delems(DElem::array_type& delems,
Cell::index_type i)
const;
407 virtual void get_delems(DElem::array_type& delems,
Elem::index_type i)
const;
411 virtual bool get_elem(
Elem::index_type& elem, Node::array_type& nodes)
const;
413 virtual bool get_cell(
Cell::index_type& cell, Node::array_type& nodes)
const;
414 virtual bool get_face(
Face::index_type& face, Node::array_type& nodes)
const;
415 virtual bool get_edge(
Edge::index_type& edge, Node::array_type& nodes)
const;
433 { points.resize(array.size()); get_centers(&(points[0]),array); }
435 { points.resize(array.size()); get_centers(&(points[0]),array); }
443 points.resize(array.size()); get_centers(&(points[0]),array);
450 points.resize(array.size()); get_centers(&(points[0]),array);
471 virtual double get_size(Node::array_type& array)
const;
478 {
return (get_size(i)); }
480 {
return (get_size(i)); }
482 {
return (get_size(i)); }
485 {
return (get_size(i)); }
487 {
return (get_size(i)); }
489 {
return (get_size(i)); }
500 int basis_order)
const;
502 virtual void get_interpolate_weights(
const coords_type& coords,
505 int basis_order)
const;
507 virtual void get_minterpolate_weights(
const std::vector<Core::Geometry::Point>& p,
508 MultiElemInterpolate& ei,
509 int basis_order)
const;
511 virtual void get_minterpolate_weights(
const std::vector<coords_type>& coords,
513 MultiElemInterpolate& ei,
514 int basis_order)
const;
519 int basis_order)
const;
521 virtual void get_gradient_weights(
const coords_type& coords,
524 int basis_order)
const;
526 virtual void get_mgradient_weights(
const std::vector<Core::Geometry::Point>& p,
527 MultiElemGradient& ei,
528 int basis_order)
const;
530 virtual void get_mgradient_weights(
const std::vector<coords_type>& coords,
532 MultiElemGradient& eg,
533 int basis_order)
const;
539 virtual void get_weights(
const coords_type& coords,
540 std::vector<double>& weights,
541 int basis_order)
const;
545 virtual void get_derivate_weights(
const coords_type& coords,
546 std::vector<double>& weights,
547 int basis_order)
const;
559 virtual void get_gaussian_scheme(std::vector<VMesh::coords_type>& coords,
560 std::vector<double>& weights,
int order)
const;
562 virtual void get_regular_scheme(std::vector<VMesh::coords_type>& coords,
563 std::vector<double>& weights,
int order)
const;
584 virtual void mlocate(std::vector<Node::index_type> &i,
585 const std::vector<Core::Geometry::Point> &point)
const;
586 virtual void mlocate(std::vector<Elem::index_type> &i,
587 const std::vector<Core::Geometry::Point> &point)
const;
600 virtual bool find_closest_node(
double& dist,
607 virtual bool find_closest_node(
double& dist,
611 double maxdist)
const;
618 {
double dist;
return(find_closest_node(dist,result,i,point,maxdist));}
624 {
double dist;
return(find_closest_node(dist,result,i,point));}
628 virtual bool find_closest_nodes(std::vector<VMesh::Node::index_type>& nodes,
631 virtual bool find_closest_nodes(std::vector<double>& distances,
632 std::vector<VMesh::Node::index_type>& nodes,
634 double maxdist)
const;
643 virtual bool find_closest_elem(
double &dist,
651 virtual bool find_closest_elem(
double &dist,
656 double maxdist)
const;
665 return(find_closest_elem(dist,result,coords,i,point));
672 double maxdist)
const
675 return(find_closest_elem(dist,result,coords,i,point,maxdist));
686 return(find_closest_elem(dist,result,coords,i,point));
696 return(find_closest_elem(dist,result,coords,i,point));
702 virtual bool find_closest_elems(
double& dist,
708 virtual bool get_coords(coords_type& coords,
716 virtual void minterpolate(std::vector<Core::Geometry::Point> &p,
717 const std::vector<coords_type>& coords,
721 virtual void derivate(dpoints_type &p,
737 { get_normal(result,coords,eidx,0); }
740 inline void get_normals(std::vector<Core::Geometry::Vector> &result, std::vector<coords_type>& coords,
742 { result.resize(coords.size());
for (
size_t j=0; j<coords.size(); j++)get_normal(result[j],coords[j],eidx,0); }
755 { get_center(point,i); }
757 { get_center(point,i); }
807 for (
index_type j=0; j <ss; j++,ii++,oo++) oelem[oo] = ielem[ii]+offset;
814 size_type ss = num_elems()*num_nodes_per_elem_;
815 for (
index_type j=0; j <ss; j++) oelem[j] = ielem[j];
820 virtual void node_reserve(
size_t size);
822 { node_reserve(size); }
825 virtual void elem_reserve(
size_t size);
827 { elem_reserve(size); }
831 virtual void resize_nodes(
size_t size);
832 virtual void resize_elems(
size_t size);
841 { set_point(point,i); }
843 { set_point(point,i); }
855 { get_point(point,i); }
857 { get_point(point,i); }
873 virtual void insert_node_into_elem(Elem::array_type& newelems,
881 virtual bool get_neighbors(Elem::array_type &elems,
883 virtual void get_neighbors(Elem::array_type &elems,
885 virtual void get_neighbors(Node::array_type &nodes,
889 virtual void pwl_approx_edge(coords_array_type &coords,
891 unsigned int div_per_unit)
const;
892 virtual void pwl_approx_face(coords_array2_type &coords,
894 unsigned int div_per_unit)
const;
901 virtual void get_dimensions(dimension_type& dim);
903 virtual void get_elem_dimensions(dimension_type& dim);
917 virtual double det_jacobian(
const coords_type& coords,
924 virtual void jacobian(
const coords_type& coords,
930 virtual double inverse_jacobian(
const coords_type& coords,
945 {
return(get_volume(idx)); }
948 virtual double inscribed_circumscribed_radius_metric(
Elem::index_type idx)
const;
956 { weights.resize(1); weights[0] = 1.0; }
957 virtual void get_linear_weights(coords_type& coords, std::vector<double>& weights);
958 virtual void get_quadratic_weights(coords_type& coords, std::vector<double>& weights);
959 virtual void get_cubic_weights(coords_type& coords, std::vector<double>& weights);
963 { weights.resize(1); weights[0] = 0.0; }
964 virtual void get_linear_derivate_weights(coords_type& coords, std::vector<double>& weights);
965 virtual void get_quadratic_derivate_weights(coords_type& coords, std::vector<double>& weights);
966 virtual void get_cubic_derivate_weights(coords_type& coords, std::vector<double>& weights);
974 virtual bool synchronize(
unsigned int sync);
975 virtual bool unsynchronize(
unsigned int sync);
978 virtual bool clear_synchronization();
991 virtual double get_epsilon()
const;
1020 template <
class VEC1,
class VEC2>
1023 v1.resize(v2.size());
1024 for (
size_t p=0; p < v2.size(); p++) v1[p] = static_cast<typename VEC1::value_type>(v2[p]);
1032 {
return (basis_order_); }
1035 {
return (dimension_); }
1038 {
return (dimension_ == 0); }
1041 {
return (dimension_ == 1); }
1044 {
return (dimension_ == 2); }
1047 {
return (dimension_ == 3); }
1050 {
return (num_nodes_per_elem_); }
1053 {
return (num_enodes_per_elem_); }
1056 {
return (num_edges_per_elem_); }
1059 {
return (num_faces_per_elem_); }
1062 {
return (num_nodes_per_face_); }
1068 {
return (num_edges_per_face_); }
1071 {
return (num_gradients_per_node_); }
1074 {
return (has_normals_); }
1077 {
return (is_editable_); }
1080 {
return (is_regular_); }
1083 {
return (!is_regular_); }
1086 {
return (is_structured_); }
1089 {
return (!is_structured_); }
1099 {
return (generation_); }
1109 j = jk % nj_; k = jk / nj_;
1115 i = xidx % (ni_-1);
index_type jk = xidx / (ni_-1);
1116 j = jk % (nj_-1); k = jk / (nj_-1);
1122 i = xidx % ni_; j = xidx / ni_;
1128 i = xidx % (ni_-1); j = xidx / (ni_-1);
1134 i = xidx % (ni_-1);
index_type jk = xidx / (ni_-1);
1135 j = jk % (nj_-1); k = jk / (nj_-1);
1141 i = xidx % (ni_-1); j = xidx / (ni_-1);
1178 {
return (is_pointcloudmesh()); }
1181 {
return (is_structcurvemesh()||is_curvemesh()||is_scanlinemesh()); }
1184 {
return (is_trisurfmesh()); }
1187 {
return (is_structquadsurfmesh()||is_quadsurfmesh()||is_imagemesh()); }
1190 {
return (is_tetvolmesh()); }
1193 {
return (is_prismvolmesh()); }
1196 {
return (is_structhexvolmesh()||is_hexvolmesh()||is_latvolmesh()); }
1200 { coords = unit_vertices_; }
1203 { edges = unit_edges_; }
1206 { coords = unit_center_; }
1209 {
return (element_size_); }
1211 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
1213 inline void copy_properties(
VMesh* imesh)
1214 { pm_->copy_properties(imesh->pm_); }
1217 inline void set_property(
const std::string &
name,
const T &val,
bool is_transient)
1218 { pm_->set_property(name,val,is_transient); }
1221 inline bool get_property(
const std::string &name, T &val)
1222 {
return(pm_->get_property(name,val)); }
1224 inline bool is_property(
const std::string &name)
1225 {
return(pm_->is_property(name)); }
1266 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
1275 #endif // Datatypes_Mesh_h
unsigned int num_edges_per_elem()
Definition: VMesh.h:1055
virtual bool is_quadsurfmesh()
Definition: VMesh.h:999
bool find_closest_elem(Core::Geometry::Point &result, VMesh::Elem::index_type &i, const Core::Geometry::Point &point) const
Even more simplified version.
Definition: VMesh.h:680
unsigned int num_faces_per_elem()
Definition: VMesh.h:1058
bool find_closest_elem(VMesh::coords_type &coords, VMesh::Elem::index_type &i, const Core::Geometry::Point &point) const
Another simplified version.
Definition: VMesh.h:690
Interface to statically allocated std::vector class.
VMesh::index_type index_type
Definition: VMesh.h:214
StackBasedVector< index_type, 12 > array_type
Definition: VMesh.h:151
void get_element_edges(nodes_array_type &edges)
Definition: VMesh.h:1202
virtual bool is_curvemesh()
Definition: VMesh.h:995
double get_length(Edge::index_type i) const
Definition: VMesh.h:477
size_type num_elems() const
Definition: VMesh.h:321
void from_index(index_type &i, index_type &j, Elem::index_type idx)
Definition: VMesh.h:1125
void reserve_nodes(size_t size)
Definition: VMesh.h:821
virtual bool is_structcurvemesh()
Definition: VMesh.h:997
std::vector< ElemInterpolate > MultiElemInterpolate
Definition: VMesh.h:208
void get_enode(Core::Geometry::Point &point, ENode::index_type i)
Definition: VMesh.h:856
Distinct type for cell Iterator.
Definition: FieldVIterator.h:163
unsigned int num_nodes_per_face()
Definition: VMesh.h:1061
double get_element_size()
Definition: VMesh.h:1208
Definition: FieldRNG.h:37
size_type get_nj() const
Definition: VMesh.h:1093
bool is_hex_element()
Definition: VMesh.h:1195
VDElemIndex< VMesh::index_type > index_type
Definition: VMesh.h:183
StackVector< Core::Geometry::Point, 3 > dpoints_type
Definition: VMesh.h:88
void resize_points(size_t size)
Definition: VMesh.h:833
nodes_array_type unit_edges_
Definition: VMesh.h:1254
Distinct type for elem index.
Definition: FieldVIndex.h:228
int dimensionality()
Definition: VMesh.h:1034
StackVector< index_type, 8 > node_index
Definition: VMesh.h:199
std::vector< StackVector< double, 3 > > coords_array_type
An array of coords.
Definition: VMesh.h:83
VElemIndex< VMesh::size_type > size_type
Definition: VMesh.h:169
bool is_quad_element()
Definition: VMesh.h:1186
void get_element_vertices(coords_array_type &coords)
Get the unit vertex coordinates of the unit element.
Definition: VMesh.h:1199
void copy_nodes(VMesh *imesh, Node::index_type i, Node::index_type o, Node::size_type size)
Definition: VMesh.h:781
Class for indexing faces.
Definition: VMesh.h:134
double get_volume(Cell::index_type i) const
Definition: VMesh.h:481
virtual bool is_pointcloudmesh()
check the type of mesh
Definition: VMesh.h:994
void get_normal(Core::Geometry::Vector &result, coords_type &coords, Elem::index_type eidx) const
This is the surface version.
Definition: VMesh.h:735
bool is_quadraticmesh()
Definition: VMesh.h:1011
VMesh::Elem::index_type add_elem(const Node::array_type nodes)
Alternative calls for add_elem.
Definition: VMesh.h:868
bool is_linearmesh()
Definition: VMesh.h:1010
void copy_nodes(VMesh *imesh)
Definition: VMesh.h:789
VNodeIndex< VMesh::index_type > index_type
Definition: VMesh.h:107
StackVector< double, 9 > inverse_jacobian
Definition: VMesh.h:224
double get_volume(Elem::index_type i) const
Definition: VMesh.h:488
size_type get_ni() const
Definition: VMesh.h:1091
Core::Geometry::Point get_point(ENode::index_type i) const
Definition: VMesh.h:760
void get_point(Core::Geometry::Point &point, Node::index_type i) const
Definition: VMesh.h:754
index_type elem_index
Definition: VMesh.h:198
Distinct type for cell Iterator.
Definition: FieldVIterator.h:150
bool find_closest_node(Core::Geometry::Point &result, VMesh::Node::index_type &i, const Core::Geometry::Point &point, double maxdist)
Simplified version that does not return the distance.
Definition: VMesh.h:614
StackVector< double, 3 > coords_type
Definition: VMesh.h:81
VMesh::Node::index_type add_point(const Core::Geometry::Point &point)
Definition: VMesh.h:861
StackBasedVector< double, 64 > weights
Definition: VMesh.h:202
void set_enode(const Core::Geometry::Point &point, ENode::index_type i)
Definition: VMesh.h:842
Definition: TypeDescription.h:45
virtual Core::Geometry::Point * get_points_pointer() const
Definition: VMesh.cc:649
#define SCISHARE
Definition: share.h:39
void end(Face::iterator &it) const
Definition: VMesh.h:287
std::vector< Core::Geometry::Point > points_type
Array of points.
Definition: VMesh.h:72
void end(DElem::iterator &it) const
Definition: VMesh.h:293
Distinct type for face index.
Definition: FieldVIndex.h:210
bool is_tri_element()
Definition: VMesh.h:1183
VFaceIterator< VMesh::index_type > iterator
Definition: VMesh.h:136
Distinct type for edge index.
Definition: FieldVIndex.h:200
StackBasedVector< index_type, 12 > array_type
Definition: VMesh.h:130
Distinct type for lagrangian node FieldIterator.
Definition: FieldVIterator.h:92
void get_constant_derivate_weights(coords_type &, std::vector< double > &weights)
These four are for computating gradients.
Definition: VMesh.h:962
void begin(ENode::iterator &it) const
Definition: VMesh.h:268
Definition: StackBasedVector.h:47
VMesh::index_type index_type
Definition: VMesh.h:195
Distinct type for elem index.
Definition: FieldVIndex.h:237
VEdgeIndex< VMesh::index_type > index_type
Definition: VMesh.h:128
void begin(Cell::iterator &it) const
Definition: VMesh.h:274
void get_constant_weights(coords_type &, std::vector< double > &weights)
Definition: VMesh.h:955
void to_index(Elem::index_type &idx, index_type i, index_type j, index_type k)
Definition: VMesh.h:1155
bool is_pnt_element()
Test for the type of elements.
Definition: VMesh.h:1177
std::vector< Node::array_type > nodes_array_type
Definition: VMesh.h:112
int dimension_
Definition: VMesh.h:1232
VEdgeIndex< VMesh::size_type > size_type
Definition: VMesh.h:129
Core::Geometry::Point get_point(Node::index_type i) const
Definition: VMesh.h:758
size_type ni_
Definition: VMesh.h:1259
unsigned int num_nodes_per_edge()
Definition: VMesh.h:1064
VCellIndex< VMesh::index_type > index_type
Definition: VMesh.h:149
size_type get_nk() const
Definition: VMesh.h:1095
bool is_point()
Definition: VMesh.h:1037
Distinct type for node index.
Definition: FieldVIndex.h:181
VENodeIterator< VMesh::index_type > iterator
Definition: VMesh.h:118
void begin(Elem::iterator &it) const
Definition: VMesh.h:276
StackBasedVector< index_type, 12 > array_type
Definition: VMesh.h:170
void to_index(Node::index_type &idx, index_type i, index_type j)
Definition: VMesh.h:1150
void get_centers(points_type &points, Elem::array_type &array) const
Definition: VMesh.h:434
void begin(DElem::iterator &it) const
Definition: VMesh.h:278
VENodeIndex< VMesh::index_type > index_type
Definition: VMesh.h:119
virtual bool is_imagemesh()
Definition: VMesh.h:1000
size_type num_edges() const
Definition: VMesh.h:315
boost::shared_ptr< VMesh > VMeshHandle
Definition: VMesh.h:49
StackBasedVector< index_type, 8 > array_type
Definition: VMesh.h:109
bool is_cubicmesh()
Definition: VMesh.h:1012
bool is_editable_
Definition: VMesh.h:1236
VNodeIndex< VMesh::size_type > size_type
Definition: VMesh.h:108
StackBasedVector< double, 12 > weight_array_type
Definition: VMesh.h:100
double volume_metric(const Elem::index_type idx) const
Volume of an element.
Definition: VMesh.h:944
bool is_prism_element()
Definition: VMesh.h:1192
void get_normals(std::vector< Core::Geometry::Vector > &result, std::vector< coords_type > &coords, Elem::index_type eidx) const
Multiple normals short cut.
Definition: VMesh.h:740
VMesh::size_type size_type
Definition: VMesh.h:196
bool find_closest_elem(double &dist, Core::Geometry::Point &result, VMesh::Elem::index_type &i, const Core::Geometry::Point &point, double maxdist) const
Definition: VMesh.h:668
void end(Edge::iterator &it) const
Definition: VMesh.h:285
bool is_nonlinearmesh()
Definition: VMesh.h:1013
virtual bool is_latvolmesh()
Definition: VMesh.h:1005
size_type num_hderivs
Definition: VMesh.h:220
coords_type coords
Definition: VMesh.h:225
bool is_tet_element()
Definition: VMesh.h:1189
void get_centers(points_type &points, Node::array_type &array) const
Definition: VMesh.h:432
bool has_normals_
Mesh properties.
Definition: VMesh.h:1235
virtual bool is_hexvolmesh()
Definition: VMesh.h:1004
Class for indexing edges.
Definition: VMesh.h:125
const char * name[]
Definition: BoostGraphExampleTests.cc:87
unsigned int num_edges_per_face()
Definition: VMesh.h:1067
VDElemIterator< VMesh::index_type > iterator
Definition: VMesh.h:182
unsigned int num_gradients_per_node()
Definition: VMesh.h:1070
Distinct type for additional lagrangian node.
Definition: FieldVIndex.h:190
long long size_type
Definition: Types.h:40
StackBasedVector< index_type, 12 > array_type
Definition: VMesh.h:121
VFaceIndex< VMesh::size_type > size_type
Definition: VMesh.h:138
StackBasedVector< double, 64 > weights
Definition: VMesh.h:221
virtual bool is_structquadsurfmesh()
Definition: VMesh.h:1001
void from_index(index_type &i, index_type &j, index_type &k, Node::index_type idx)
From index splits up the index into parts.
Definition: VMesh.h:1105
Node::index_type add_node(const Core::Geometry::Point &point)
Definition: VMesh.h:851
bool is_editable()
Definition: VMesh.h:1076
VMesh::size_type size_type
Definition: VMesh.h:215
void to_index(Node::index_type &idx, index_type i, index_type j, index_type k)
To index generates a new successive index.
Definition: VMesh.h:1145
void to_index(Face::index_type &idx, index_type i, index_type j)
Definition: VMesh.h:1170
virtual bool is_tetvolmesh()
Definition: VMesh.h:1002
double weight_type
Weights for interpolation.
Definition: VMesh.h:65
size_type num_enodes() const
Definition: VMesh.h:313
Distinct type for edge Iterator.
Definition: FieldVIterator.h:105
virtual bool is_structhexvolmesh()
Definition: VMesh.h:1006
void from_index(index_type &i, index_type &j, index_type &k, Elem::index_type idx)
Definition: VMesh.h:1112
VFaceIndex< VMesh::index_type > index_type
Definition: VMesh.h:137
size_type num_nodes() const
Definition: VMesh.h:311
bool is_constantmesh()
Check order of mesh.
Definition: VMesh.h:1009
size_type num_faces() const
Definition: VMesh.h:317
coords_array_type unit_vertices_
Definitions of local element topology.
Definition: VMesh.h:1253
std::vector< index_type > array_type
Array of indices.
Definition: VMesh.h:70
bool is_line()
Definition: VMesh.h:1040
void get_all_elem_centers(points_type &points) const
Definition: VMesh.h:445
bool is_regular_
Definition: VMesh.h:1237
void begin(Edge::iterator &it) const
Definition: VMesh.h:270
unsigned int num_enodes_per_elem()
Definition: VMesh.h:1052
bool is_surface()
Definition: VMesh.h:1043
unsigned int num_nodes_per_elem_
Mesh statistics.
Definition: VMesh.h:1241
SCIRun::index_type size_type
Definition: MeshTraits.h:57
int generation() const
Definition: VMesh.h:1098
size_type num_delems() const
Definition: VMesh.h:323
double get_size(Node::index_type) const
Definition: VMesh.h:457
void get_point(Core::Geometry::Point &point, ENode::index_type i) const
Definition: VMesh.h:756
void end(ENode::iterator &it) const
Definition: VMesh.h:283
virtual VMesh::index_type * get_elems_pointer() const
Definition: VMesh.cc:655
virtual bool is_trisurfmesh()
Definition: VMesh.h:998
VENodeIndex< VMesh::size_type > size_type
Definition: VMesh.h:120
bool is_unstructuredmesh()
Definition: VMesh.h:1088
bool is_regularmesh()
Definition: VMesh.h:1079
unsigned int num_gradients_per_node_
Definition: VMesh.h:1247
void end(Cell::iterator &it) const
Definition: VMesh.h:289
unsigned int num_edges_per_elem_
Definition: VMesh.h:1243
bool is_empty() const
Definition: VMesh.h:332
StackVector< index_type, 12 > edge_index
Definition: VMesh.h:200
VDElemIndex< VMesh::size_type > size_type
Definition: VMesh.h:184
bool is_irregularmesh()
Definition: VMesh.h:1082
unsigned int num_faces_per_elem_
Definition: VMesh.h:1244
bool is_structured_
Definition: VMesh.h:1238
Distinct type for cell index.
Definition: FieldVIndex.h:219
unsigned int num_edges_per_face_
Definition: VMesh.h:1246
double element_size_
Size in local coordinate system.
Definition: VMesh.h:1250
void reserve_elems(size_t size)
Definition: VMesh.h:826
double get_size(ENode::index_type) const
Definition: VMesh.h:459
coords_type unit_center_
Definition: VMesh.h:1255
long long index_type
Definition: Types.h:39
unsigned int num_nodes_per_face_
Definition: VMesh.h:1245
Definition: ParallelLinearAlgebraTests.cc:751
void get_all_node_centers(points_type &points) const
Definition: VMesh.h:438
void copy_elems(VMesh *imesh)
Definition: VMesh.h:810
void get_node(Core::Geometry::Point &point, Node::index_type i)
Definition: VMesh.h:854
bool is_crv_element()
Definition: VMesh.h:1180
void from_index(index_type &i, index_type &j, Node::index_type idx)
Definition: VMesh.h:1119
StackBasedVector< index_type, 12 > array_type
Definition: VMesh.h:185
size_type nj_
Definition: VMesh.h:1260
int basis_order()
Definition: VMesh.h:1031
VEdgeIterator< VMesh::index_type > iterator
Definition: VMesh.h:127
Distinct type for cell Iterator.
Definition: FieldVIterator.h:137
void get_element_center(coords_type &coords)
Definition: VMesh.h:1205
bool has_normals()
Definition: VMesh.h:1073
VNodeIterator< VMesh::index_type > iterator
Definition: VMesh.h:106
VCellIterator< VMesh::index_type > iterator
Definition: VMesh.h:148
size_type nk_
Definition: VMesh.h:1261
int basis_order_
Definition: VMesh.h:1231
void from_index(index_type &i, index_type &j, Face::index_type idx)
Definition: VMesh.h:1138
size_type num_derivs
Definition: VMesh.h:223
void convert_vector(VEC1 &v1, VEC2 v2) const
Definition: VMesh.h:1021
Distinct type for node FieldIterator.
Definition: FieldVIterator.h:73
size_type num_cells() const
Definition: VMesh.h:319
VElemIndex< VMesh::index_type > index_type
Definition: VMesh.h:168
void end(Node::iterator &it) const
Definition: VMesh.h:281
void to_index(Cell::index_type &idx, index_type i, index_type j, index_type k)
Definition: VMesh.h:1165
StackBasedVector< index_type, 8 > node_index
Definition: VMesh.h:218
VMesh()
Definition: VMesh.h:234
size_type num_hderivs
Definition: VMesh.h:201
unsigned int generation_
generation number of mesh
Definition: VMesh.h:1264
void copy_elems(VMesh *imesh, Elem::index_type i, Elem::index_type o, Elem::size_type size, Elem::size_type offset)
Definition: VMesh.h:798
bool is_volume()
Definition: VMesh.h:1046
double get_length(Elem::index_type i) const
Definition: VMesh.h:484
double get_area(Face::index_type i) const
Definition: VMesh.h:479
bool find_closest_node(Core::Geometry::Point &result, VMesh::Node::index_type &i, const Core::Geometry::Point &point)
Simplified version that does not return the distance.
Definition: VMesh.h:621
SCIRun::index_type index_type
Definition: MeshTraits.h:56
#define DEBUG_CONSTRUCTOR(type)
Definition: Debug.h:64
std::vector< std::vector< StackVector< double, 3 > > > coords_array2_type
2D array of coords
Definition: VMesh.h:85
std::vector< size_type > dimension_type
Definition: VMesh.h:76
VElemIterator< VMesh::index_type > iterator
Definition: VMesh.h:167
Mesh::size_type size_type
Definition: VMesh.h:68
Definition: PropertyManager.h:193
int basis_order
Definition: VMesh.h:216
void end(Elem::iterator &it) const
Definition: VMesh.h:291
StackVector< index_type, 12 > edge_index
Definition: VMesh.h:219
unsigned int num_nodes_per_elem()
Definition: VMesh.h:1049
void begin(Face::iterator &it) const
Definition: VMesh.h:272
Distinct type for face Iterator.
Definition: FieldVIterator.h:122
int basis_order
Definition: VMesh.h:197
VCellIndex< VMesh::size_type > size_type
Definition: VMesh.h:150
void set_node(const Core::Geometry::Point &point, Node::index_type i)
alternative calls
Definition: VMesh.h:840
StackBasedVector< index_type, 12 > index_array_type
Definition: VMesh.h:99
StackBasedVector< index_type, 12 > array_type
Definition: VMesh.h:139
void begin(Node::iterator &it) const
Definition: VMesh.h:266
void from_index(index_type &i, index_type &j, index_type &k, Cell::index_type idx)
Definition: VMesh.h:1131
unsigned int mask_type
Definition: VMesh.h:91
bool is_structuredmesh()
Definition: VMesh.h:1085
index_type elem_index
Definition: VMesh.h:217
Mesh::index_type index_type
VIRTUAL INTERFACE.
Definition: VMesh.h:63
int size
Definition: eabLatVolData.py:2
void to_index(Elem::index_type &idx, index_type i, index_type j)
Definition: VMesh.h:1160
virtual bool is_prismvolmesh()
Definition: VMesh.h:1003
double get_area(Elem::index_type i) const
Definition: VMesh.h:486
unsigned int num_enodes_per_elem_
Definition: VMesh.h:1242
std::vector< ElemGradient > MultiElemGradient
Multiple gradient calculations in parallel.
Definition: VMesh.h:229
#define DEBUG_DESTRUCTOR(type)
Definition: Debug.h:65
bool find_closest_elem(double &dist, Core::Geometry::Point &result, VMesh::Elem::index_type &i, const Core::Geometry::Point &point) const
Simplified version that does not return the local coordinates.
Definition: VMesh.h:659
virtual ~VMesh()
Definition: VMesh.h:255
virtual bool is_scanlinemesh()
Definition: VMesh.h:996