43 #ifndef CORE_DATATYPES_SCANLINEMESH_H
44 #define CORE_DATATYPES_SCANLINEMESH_H 1
75 template <
class Basis>
89 #if (SCIRUN_SCANLINE_SUPPORT > 0)
97 template <
class Basis>
98 class ScanlineMesh :
public Mesh
184 return mesh_.transform_.project(p);
190 return mesh_.transform_.project(p);
244 return boost::make_shared<Core::Datatypes::VirtualMeshFacade<VMesh>>(
vmesh_);
255 bool get_min(std::vector<index_type>&)
const;
257 virtual bool get_dim(std::vector<size_type>&)
const;
265 void set_min(std::vector<index_type> mins);
275 virtual void set_dim(std::vector<size_type> dims);
297 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
299 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
304 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
306 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
310 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
312 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
342 return (p0-p1).length();
345 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
347 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
353 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
356 {
return (idx == 0 || idx ==
ni_ - 1) ? 1 : 2; }
359 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
361 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
367 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
369 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
374 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
376 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
384 {
ASSERTFAIL(
"This mesh type does not have faces use \"elem\"."); }
386 {
ASSERTFAIL(
"This mesh type does not have cells use \"elem\"."); }
392 {
ASSERTFAIL(
"This mesh type does not have node normals."); }
395 {
ASSERTFAIL(
"This mesh type does not have element normals."); }
413 unsigned int div_per_unit)
const
417 basis_.approx_edge(0, div_per_unit, coords);
440 template<
class VECTOR>
445 if (
basis_.polynomial_order() > 1)
448 return (
basis_.get_coords(coords, p, ed));
457 coords[0] =
static_cast<typename VECTOR::value_type
>(r.
x()-
static_cast<double>(idx));
459 if (static_cast<double>(coords[0]) < 0.0)
if (static_cast<double>(coords[0]) > -(1e-8))
460 coords[0] =
static_cast<typename VECTOR::value_type
>(0.0);
else return (
false);
461 if (static_cast<double>(coords[0]) > 1.0)
if (static_cast<double>(coords[0]) < 1.0+(1e-8))
462 coords[0] =
static_cast<typename VECTOR::value_type
>(1.0);
else return (
false);
469 template<
class VECTOR>
473 if (
basis_.polynomial_order() > 1)
476 pt =
basis_.interpolate(coords, ed);
487 template<
class VECTOR1,
class VECTOR2>
491 if (
basis_.polynomial_order() > 1)
494 basis_.derivate(coords, ed, J);
505 template<
class VECTOR>
509 if (
basis_.polynomial_order() > 1)
522 template<
class VECTOR>
525 if (
basis_.polynomial_order() > 1)
529 basis_.derivate(coords,ed,Jv);
559 template<
class VECTOR>
562 if (
basis_.polynomial_order() > 1)
566 basis_.derivate(coords,ed,Jv);
612 static const std::string
type_name(
int n = -1);
632 return boost::make_shared<ScanlineMesh>(x,min,max);
637 template <
class INDEX>
643 if (!ret)
return (
false);
644 if (maxdist < 0.0 || pdist < maxdist)
return (
true);
650 template <
class INDEX>
656 if (
ni_ == 0)
return (
false);
660 double rx = floor(r.
x() + 0.5);
661 const double nii =
static_cast<double>(
ni_-1);
663 if (rx < 0.0) rx = 0.0;
if (rx > nii) rx = nii;
668 pdist = (p-result).length();
674 template <
class INDEX,
class ARRAY>
683 if (
ni_ == 0)
return (
false);
688 const double nii =
static_cast<double>(
ni_-2);
690 if (ii < 0.0) ii = 0.0;
if (ii > nii) ii = nii;
692 const double fi = floor(ii);
694 elem = INDEX(static_cast<index_type>(fi));
696 pdist = (p-result).length();
704 template <
class INDEX,
class ARRAY>
707 ARRAY& coords, INDEX &elem,
711 if (!ret)
return (
false);
712 if (maxdist < 0.0 || pdist < maxdist)
return (
true);
718 template <
class INDEX>
726 if (
ni_ == 0)
return (
false);
731 const double nii =
static_cast<double>(
ni_-2);
733 if (ii < 0.0) ii = 0.0;
if (ii > nii) ii = nii;
735 elem = INDEX(static_cast<index_type>(floor(ii)));
737 pdist = (p-result).length();
746 template <
class ARRAY>
752 if (
ni_ == 0)
return (
false);
754 const double epsilon_ = 1e-8;
759 const double nii =
static_cast<double>(
ni_-2);
761 if (ii < 0.0) ii = 0.0;
if (ii > nii) ii = nii;
763 const double fii = floor(ii);
765 elems.push_back(static_cast<typename ARRAY::value_type>(i));
767 if ((fabs(fii-ii) < epsilon_) && ((i-1)>0))
769 elems.push_back(static_cast<typename ARRAY::value_type>(i-1));
772 if ((fabs(fii-(ii+1.0)) < epsilon_) && (i<(
ni_-1)))
774 elems.push_back(static_cast<typename ARRAY::value_type>(i+1));
778 pdist = (p-result).length();
820 template <
class Basis>
826 template <
class Basis>
853 template <
class Basis>
861 result.
extend(transform_.project(p0));
862 result.
extend(transform_.project(p1));
867 template <
class Basis>
871 return get_bounding_box().diagonal();
875 template <
class Basis>
879 transform_.pre_trans(t);
884 template <
class Basis>
893 template <
class Basis>
900 array.push_back(min_i_);
906 template <
class Basis>
913 array.push_back(ni_);
919 template <
class Basis>
927 template <
class Basis>
940 template <
class Basis>
951 template <
class Basis>
969 template <
class Basis>
975 result = transform_.project(p);
979 template <
class Basis>
985 result = transform_.project(p);
989 template <
class Basis>
998 std::vector<double> coords(1);
999 if (get_coords(coords, p, idx))
1001 basis_.get_weights(coords, w);
1002 return basis_.dofs();
1009 template <
class Basis>
1026 template <
class Basis>
1036 p = p0 + (p1 - p0) * rng();
1040 #define SCANLINEMESH_VERSION 4
1042 template <
class Basis>
1055 unsigned int ni =
static_cast<unsigned int>(ni_);
1064 if (version < 2 && stream.
reading() )
1070 Pio(stream, transform_);
1086 template <
class Basis>
1090 ASSERT((n >= -1) && n <= 1);
1098 static const std::string nm(
"ScanlineMesh");
1108 template <
class Basis>
1116 template <
class Basis>
1124 template <
class Basis>
1132 template <
class Basis>
1140 template <
class Basis>
1148 template <
class Basis>
1156 template <
class Basis>
1160 ASSERTFAIL(
"This mesh type does not have faces use \"elem\".");
1164 template <
class Basis>
1168 ASSERTFAIL(
"This mesh type does not have faces use \"elem\".");
1172 template <
class Basis>
1176 ASSERTFAIL(
"This mesh type does not have faces use \"elem\".");
1180 template <
class Basis>
1184 ASSERTFAIL(
"This mesh type does not have cells use \"elem\".");
1188 template <
class Basis>
1192 ASSERTFAIL(
"This mesh type does not have cells use \"elem\".");
1196 template <
class Basis>
1200 ASSERTFAIL(
"This mesh type does not have cells use \"elem\".");
1204 template <
class Basis>
1212 return ((q0-q1).length()*1e-8);
1215 template <
class Basis>
1226 std::string(__FILE__),
1234 template <
class Basis>
1235 const TypeDescription*
1242 template <
class Basis>
1252 std::string(__FILE__),
1260 template <
class Basis>
1270 std::string(__FILE__),
1278 template <
class Basis>
1288 std::string(__FILE__),
1296 template <
class Basis>
1306 std::string(__FILE__),
1314 template <
class Basis>
1318 if (basis_.polynomial_order() < 2)
1326 jacobian_[0] = J1.
x();
1327 jacobian_[1] = J1.
y();
1328 jacobian_[2] = J1.
z();
1329 jacobian_[3] = J2.
x();
1330 jacobian_[4] = J2.
y();
1331 jacobian_[5] = J2.
z();
1332 jacobian_[6] = J3.
x();
1333 jacobian_[7] = J3.
y();
1334 jacobian_[8] = J3.
z();
1342 template <
class Basis>
1348 if (ni_ == 0)
return (
false);
1352 double rx = floor(r.
x() + 0.5);
1353 const double nii =
static_cast<double>(ni_-1);
1355 if (rx < 0.0) rx = 0.0;
if (rx > nii) rx = nii;
1362 template <
class Basis>
1366 if (basis_.polynomial_order() > 1)
return elem_locate(elem, *
this, p);
1369 if (ni_ < 2)
return (
false);
1371 const double epsilon_ = 1e-7;
1376 const double nii =
static_cast<double>(ni_-1);
1378 if (ii>=nii && (ii-epsilon_)<nii) ii=nii-epsilon_;
1380 if (ii<0 && ii>(-epsilon_)) ii=0.0;
1384 if (i < (ni_-1) && i >= 0 && ii >= 0.0)
1394 template <
class Basis>
1397 std::vector<double>& coords,
1400 if (basis_.polynomial_order() > 1)
return elem_locate(elem, *
this, p);
1403 if (ni_ < 2)
return (
false);
1406 const double epsilon_ = 1e-8;
1411 const double nii =
static_cast<double>(ni_-1);
1413 if (ii>nii && (ii-epsilon_)<nii) ii=nii-epsilon_;
1415 if (ii<0 && ii>(-epsilon_)) ii=0.0;
1417 const double fi = floor(ii);
1420 if (i < (ni_-1) && i >= 0 && ii >= 0.0)
1426 coords[0] = ii - fi;
index_type min_i_
the min typename Node::index_type ( incase this is a subLattice )
Definition: ScanlineMesh.h:794
bool find_closest_elem(double &pdist, Core::Geometry::Point &result, INDEX &elem, const Core::Geometry::Point &p) const
Definition: ScanlineMesh.h:720
static const TypeDescription * face_type_description()
Definition: ScanlineMesh.h:1280
Definition: ScanlineMesh.h:149
Node DElem
Definition: ScanlineMesh.h:145
bool find_closest_elems(double &pdist, Core::Geometry::Point &result, ARRAY &elems, const Core::Geometry::Point &p) const
Definition: ScanlineMesh.h:748
Interface to statically allocated std::vector class.
Index and Iterator types required for Mesh Concept.
Definition: ScanlineMesh.h:116
bool get_min(std::vector< index_type > &) const
Definition: ScanlineMesh.h:895
bool reading() const
Definition: Persistent.h:164
void get_elems(typename Elem::array_type &, typename Face::index_type) const
Definition: ScanlineMesh.h:323
Distinct type for node FieldIterator.
Definition: FieldIterator.h:89
static Persistent * maker()
This function returns a maker for Pio.
Definition: ScanlineMesh.h:626
static const TypeDescription * cell_type_description()
Definition: ScanlineMesh.h:1298
bool find_closest_elem(double &pdist, Core::Geometry::Point &result, ARRAY &coords, INDEX &elem, const Core::Geometry::Point &p, double maxdist) const
Definition: ScanlineMesh.h:706
void get_edges(typename Edge::array_type &, typename Face::index_type) const
Definition: ScanlineMesh.h:309
ElemData(const ScanlineMesh< Basis > &msh, const typename Elem::index_type ind)
Definition: ScanlineMesh.h:154
Definition: FieldRNG.h:37
std::string get_name(const std::string &type_sep_start="<", const std::string &type_sep_end="> ") const
Definition: TypeDescription.cc:135
Distinct type for face Iterator.
Definition: FieldIterator.h:121
ScanlineMesh()
Definition: ScanlineMesh.h:198
double det_jacobian(const VECTOR &coords, typename Elem::index_type idx) const
Definition: ScanlineMesh.h:506
size_type ni_
Definition: ScanlineMesh.h:798
static const TypeDescription * node_type_description()
Definition: ScanlineMesh.h:1244
void end(typename Node::iterator &) const
Definition: ScanlineMesh.h:1118
void get_edges(typename Edge::array_type &, typename Edge::index_type) const
Definition: ScanlineMesh.h:307
const Core::Geometry::Point node1() const
Definition: ScanlineMesh.h:187
ScanlineMesh(const ScanlineMesh ©)
Definition: ScanlineMesh.h:219
void set_min_i(index_type i)
set the mesh statistics
Definition: ScanlineMesh.h:264
Definition: Persistent.h:89
void get_random_point(Core::Geometry::Point &p, typename Elem::index_type i, FieldRNG &rng) const
Definition: ScanlineMesh.h:1028
EdgeIndex< under_type > index_type
Definition: ScanlineMesh.h:124
void get_delems(typename DElem::array_type &result, typename Elem::index_type idx) const
Wrapper to get the derivative elements from this element.
Definition: ScanlineMesh.h:327
const Core::Geometry::Point node0() const
Definition: ScanlineMesh.h:181
boost::shared_ptr< VMesh > vmesh_
Definition: ScanlineMesh.h:806
virtual const TypeDescription * get_type_description() const
Definition: ScanlineMesh.h:1236
void get_center(Core::Geometry::Point &, typename Face::index_type) const
Definition: ScanlineMesh.h:366
virtual VMesh * vmesh()
Access point to virtual interface.
Definition: ScanlineMesh.h:240
virtual int topology_geometry() const
Definition: ScanlineMesh.h:405
int get_valence(typename Node::index_type idx) const
Definition: ScanlineMesh.h:355
Definition: Persistent.h:187
virtual bool get_dim(std::vector< size_type > &) const
Definition: ScanlineMesh.h:908
BBox & extend(const Point &p)
Expand the bounding box to include point p.
Definition: BBox.h:98
double get_length(typename Edge::index_type idx) const
Definition: ScanlineMesh.h:348
Definition: ScanlineMesh.h:137
CellIndex< under_type > index_type
Definition: ScanlineMesh.h:138
int get_valence(typename Face::index_type) const
Definition: ScanlineMesh.h:358
SCIRun::size_type size_type
Definition: ScanlineMesh.h:109
Definition: TypeDescription.h:50
Definition: TypeDescription.h:45
#define SCISHARE
Definition: share.h:39
std::vector< const TypeDescription * > td_vec
Definition: TypeDescription.h:56
NodeIterator< under_type > iterator
Definition: ScanlineMesh.h:118
std::vector< index_type > array_type
Definition: ScanlineMesh.h:141
Definition: ScanlineMesh.h:76
NodeIndex< under_type > index_type
Definition: ScanlineMesh.h:117
virtual bool synchronize(mask_type)
Definition: ScanlineMesh.h:433
ScanlineMesh< Basis >::index_type index_type
Definition: ScanlineMesh.h:152
SCIRun::index_type index_type
Definition: ScanlineMesh.h:108
boost::shared_ptr< Mesh > MeshHandle
Definition: DatatypeFwd.h:67
bool locate(typename Face::index_type &, const Core::Geometry::Point &) const
Definition: ScanlineMesh.h:373
Distinct type for cell Iterator.
Definition: FieldIterator.h:134
int get_weights(const Core::Geometry::Point &, typename Face::array_type &, double *)
Definition: ScanlineMesh.h:383
double get_size(typename Cell::index_type) const
Definition: ScanlineMesh.h:346
unsigned int mask_type
Definition: Types.h:45
void get_elems(typename Elem::array_type &result, typename Node::index_type idx) const
get the parent element(s) of the given index
Definition: ScanlineMesh.h:953
FaceIndex< under_type > size_type
Definition: ScanlineMesh.h:133
double det_inverse_jacobian_
Definition: ScanlineMesh.h:815
#define ASSERT(condition)
Definition: Assert.h:110
static MeshHandle mesh_maker()
This function returns a handle for the virtual interface.
Definition: ScanlineMesh.h:628
void set_min(std::vector< index_type > mins)
Definition: ScanlineMesh.h:921
virtual int basis_order()
Definition: ScanlineMesh.h:247
virtual int begin_class(const std::string &name, int current_version)
Definition: Persistent.cc:143
Definition: ScanlineMesh.h:130
virtual void set_dim(std::vector< size_type > dims)
Definition: ScanlineMesh.h:929
Definition: ScanlineMesh.h:123
double get_size(typename Edge::index_type idx) const
Definition: ScanlineMesh.h:335
bool get_coords(VECTOR &coords, const Core::Geometry::Point &p, typename Elem::index_type idx) const
Definition: ScanlineMesh.h:441
virtual bool unsynchronize(mask_type)
Definition: ScanlineMesh.h:434
Core::Geometry::Vector diagonal() const
Definition: ScanlineMesh.h:869
double get_size(typename Node::index_type) const
Get the size of an elemnt (length, area, volume)
Definition: ScanlineMesh.h:334
double get_epsilon() const
Definition: ScanlineMesh.h:1206
const string find_type_name(float *)
Definition: TypeName.cc:63
void get_normal(Core::Geometry::Vector &, std::vector< double > &, typename Elem::index_type, unsigned int)
Definition: ScanlineMesh.h:393
StackVector< index_type, 8 > array_type
Definition: ScanlineMesh.h:120
void get_nodes(typename Node::array_type &, typename Face::index_type) const
Definition: ScanlineMesh.h:303
void get_center(Core::Geometry::Point &, typename Node::index_type) const
get the center point (in object space) of an element
Definition: ScanlineMesh.h:971
T DetMatrix3x3(const T *p)
Definition: Locate.h:95
bool find_closest_node(double &pdist, Core::Geometry::Point &result, INDEX &node, const Core::Geometry::Point &p, double maxdist) const
Definition: ScanlineMesh.h:639
index_type node0_index() const
Definition: ScanlineMesh.h:162
void to_index(typename Node::index_type &index, index_type i) const
Definition: ScanlineMesh.h:292
virtual ScanlineMesh * clone() const
Definition: ScanlineMesh.h:233
Definition: ParallelLinearAlgebraTests.cc:358
void get_point(Core::Geometry::Point &p, typename Node::index_type i) const
Definition: ScanlineMesh.h:390
bool find_closest_elem(double &pdist, Core::Geometry::Point &result, ARRAY &coords, INDEX &elem, const Core::Geometry::Point &p) const
Definition: ScanlineMesh.h:676
void to_index(typename Face::index_type &, index_type) const
Definition: ScanlineMesh.h:296
Basis & get_basis()
Definition: ScanlineMesh.h:406
const char * name[]
Definition: BoostGraphExampleTests.cc:87
void x(const double)
Definition: Point.h:125
int get_valence(typename Edge::index_type) const
Definition: ScanlineMesh.h:357
long long size_type
Definition: Types.h:40
virtual Core::Geometry::BBox get_bounding_box() const
Definition: ScanlineMesh.h:855
FaceIndex< under_type > index_type
Definition: ScanlineMesh.h:131
EdgeIndex< under_type > size_type
Definition: ScanlineMesh.h:126
SCISHARE void find_orthogonal(Vector &, Vector &) const
Definition: Vector.cc:59
virtual int dimensionality() const
Definition: ScanlineMesh.h:404
int get_weights(const Core::Geometry::Point &, typename Cell::array_type &, double *)
Definition: ScanlineMesh.h:385
static const std::string type_name(int n=-1)
Core functionality for getting the name of a templated mesh class.
Definition: ScanlineMesh.h:1088
virtual void get_canonical_transform(Core::Geometry::Transform &t)
Definition: ScanlineMesh.h:886
int get_weights(const Core::Geometry::Point &p, typename Node::array_type &l, double *w)
Definition: ScanlineMesh.h:991
void interpolate(Core::Geometry::Point &pt, const VECTOR &coords, typename Elem::index_type idx) const
Definition: ScanlineMesh.h:470
std::string type
Definition: Persistent.h:72
void jacobian(const VECTOR &coords, typename Elem::index_type idx, double *J) const
Definition: ScanlineMesh.h:523
Distinct type for face index.
Definition: FieldIndex.h:90
CellIterator< under_type > iterator
Definition: ScanlineMesh.h:139
static PersistentTypeID scanline_typeid
Definition: ScanlineMesh.h:610
void get_edges(typename Edge::array_type &, typename Cell::index_type) const
Definition: ScanlineMesh.h:311
VMesh * CreateVScanlineMesh(MESH *mesh)
Definition: ScanlineMesh.h:82
double inverse_jacobian(const VECTOR &coords, typename Elem::index_type idx, double *Ji) const
Definition: ScanlineMesh.h:560
#define SCANLINEMESH_VERSION
Definition: ScanlineMesh.h:1040
void get_nodes(typename Node::array_type &, typename Cell::index_type) const
Definition: ScanlineMesh.h:305
void x(double)
Definition: Vector.h:175
Basis basis_
the basis fn
Definition: ScanlineMesh.h:804
FaceIterator< under_type > iterator
Definition: ScanlineMesh.h:132
virtual bool has_face_normals() const
Definition: ScanlineMesh.h:250
double scaled_jacobian_metric(typename Elem::index_type) const
Definition: ScanlineMesh.h:596
bool find_closest_node(double &pdist, Core::Geometry::Point &result, INDEX &node, const Core::Geometry::Point &p) const
Definition: ScanlineMesh.h:652
void get_faces(typename Face::array_type &, typename Elem::index_type) const
Definition: ScanlineMesh.h:315
bool locate(typename Cell::index_type &, const Core::Geometry::Point &) const
Definition: ScanlineMesh.h:375
static const std::string make_template_id(const std::string &templateName, const std::string &templateParam)
Definition: TypeName.h:62
void pwl_approx_face(std::vector< std::vector< std::vector< double > > > &, typename Elem::index_type, typename Face::index_type, unsigned int) const
Definition: ScanlineMesh.h:422
virtual ~ScanlineMesh()
Definition: ScanlineMesh.h:234
double jacobian_[9]
Definition: ScanlineMesh.h:811
double normalize()
Definition: Vector.h:437
SCIRun::index_type under_type
Definition: ScanlineMesh.h:107
int get_valence(typename Cell::index_type) const
Definition: ScanlineMesh.h:360
Basis basis_type
Definition: ScanlineMesh.h:113
void y(double)
Definition: Vector.h:185
void begin(typename Node::iterator &) const
Definition: ScanlineMesh.h:1110
virtual void io(Piostream &)
Export this class using the old Pio system.
Definition: ScanlineMesh.h:1044
Distinct type for edge Iterator.
Definition: FieldIterator.h:105
#define ASSERTFAIL(string)
Definition: Assert.h:52
virtual MeshFacadeHandle getFacade() const
Definition: ScanlineMesh.h:242
std::vector< index_type > array_type
Definition: ScanlineMesh.h:134
index_type get_min_i() const
get the mesh statistics
Definition: ScanlineMesh.h:254
void Pio(Piostream &stream, Array1< T > &array)
Definition: Array1.h:65
Some convenient simple iterators for fields.
void get_normal(Core::Geometry::Vector &, typename Node::index_type) const
Definition: ScanlineMesh.h:391
EdgeIterator< under_type > iterator
Definition: ScanlineMesh.h:125
virtual void transform(const Core::Geometry::Transform &t)
Definition: ScanlineMesh.h:877
virtual void end_class()
Definition: Persistent.cc:178
double inverse_jacobian_[9]
Definition: ScanlineMesh.h:812
std::vector< index_type > array_type
Definition: ScanlineMesh.h:127
static MeshHandle scanline_maker(size_type x, const Core::Geometry::Point &min, const Core::Geometry::Point &max)
This function returns a handle for the virtual interface.
Definition: ScanlineMesh.h:630
T ScaledDetMatrix3x3(const T *p)
Definition: Locate.h:106
CellIndex< under_type > size_type
Definition: ScanlineMesh.h:140
NodeIndex< under_type > size_type
Definition: ScanlineMesh.h:119
void to_index(typename Edge::index_type &index, index_type i) const
Definition: ScanlineMesh.h:294
long long index_type
Definition: Types.h:39
Core::Geometry::Transform & get_transform()
Definition: ScanlineMesh.h:400
void resize(size_t size, const value_type &val=value_type())
Definition: StackVector.h:61
virtual bool has_normals() const
Definition: ScanlineMesh.h:249
SCISHARE void Pio_old(Piostream &, Transform &)
Definition: Transform.cc:940
void pwl_approx_edge(std::vector< std::vector< double > > &coords, typename Elem::index_type, unsigned int, unsigned int div_per_unit) const
piecewise linear approximation of an edge.
Definition: ScanlineMesh.h:410
static const TypeDescription * elem_type_description()
Definition: ScanlineMesh.h:622
void size(typename Node::size_type &) const
Definition: ScanlineMesh.h:1126
Edge Elem
Definition: ScanlineMesh.h:144
Core::Geometry::Transform & set_transform(const Core::Geometry::Transform &trans)
Definition: ScanlineMesh.h:401
Definition: Persistent.h:64
virtual bool is_editable() const
Definition: ScanlineMesh.h:251
double jacobian_metric(typename Elem::index_type) const
Definition: ScanlineMesh.h:599
double det_jacobian_
Definition: ScanlineMesh.h:813
double get_size(typename Face::index_type) const
Definition: ScanlineMesh.h:344
double scaled_jacobian_
Definition: ScanlineMesh.h:814
Distinct type for edge index.
Definition: FieldIndex.h:81
int n
Definition: eab.py:9
void get_nodes(typename Node::array_type &, typename Edge::index_type) const
get the child elements of the given index
Definition: ScanlineMesh.h:942
T InverseMatrix3x3(const T *p, T *q)
Definition: Locate.h:47
boost::shared_ptr< ScanlineMesh< Basis > > handle_type
Definition: ScanlineMesh.h:112
Core::Geometry::Transform transform_
the object space extents of a ScanlineMesh
Definition: ScanlineMesh.h:801
static const TypeDescription * edge_type_description()
Definition: ScanlineMesh.h:1262
#define DEBUG_CONSTRUCTOR(type)
Definition: Debug.h:64
void to_index(typename Cell::index_type &, index_type) const
Definition: ScanlineMesh.h:298
void io(Piostream &stream)
Persistent I/O.
Definition: Mesh.cc:387
double get_area(typename Face::index_type idx) const
Definition: ScanlineMesh.h:350
ScanlineMesh(ScanlineMesh *mh, index_type offset, index_type nx)
Definition: ScanlineMesh.h:207
double get_volume(typename Cell::index_type) const
Definition: ScanlineMesh.h:352
size_type get_ni() const
Definition: ScanlineMesh.h:256
void Pio_size(Piostream &stream, Size &size)
Definition: Persistent.h:273
void z(double)
Definition: Vector.h:195
boost::shared_ptr< MeshFacade< VMesh > > MeshFacadeHandle
Definition: MeshTraits.h:61
void get_center(Core::Geometry::Point &, typename Cell::index_type) const
Definition: ScanlineMesh.h:368
SCIRun::mask_type mask_type
Definition: ScanlineMesh.h:110
bool locate(typename Node::index_type &, const Core::Geometry::Point &) const
Definition: ScanlineMesh.h:1344
index_type edge0_index() const
Definition: ScanlineMesh.h:175
friend class VScanlineMesh
Make sure the virtual interface has access.
Definition: ScanlineMesh.h:102
virtual std::string dynamic_type_name() const
Definition: ScanlineMesh.h:613
void compute_jacobian()
Definition: ScanlineMesh.h:1316
index_type node1_index() const
Definition: ScanlineMesh.h:167
void get_elems(typename Elem::array_type &, typename Edge::index_type) const
Definition: ScanlineMesh.h:321
void set_ni(size_type i)
Definition: ScanlineMesh.h:266
#define DEBUG_DESTRUCTOR(type)
Definition: Debug.h:65
const TypeDescription * get_type_description(Core::Basis::ConstantBasis< T > *)
Definition: Constant.h:209
bool clear_synchronization()
Definition: ScanlineMesh.h:435
void derivate(const VECTOR1 &coords, typename Elem::index_type idx, VECTOR2 &J) const
Definition: ScanlineMesh.h:488
bool elem_locate(INDEX &elem, MESH &msh, const Core::Geometry::Point &p)
General case locate, search each elem.
Definition: Mesh.h:188