36 #define TESTRANGE(c, l, h) \
37 if(c < static_cast<index_type>(l) || c >= static_cast<index_type>(h)){ \
38 std::ostringstream msg; \
39 msg << #l "(value=" << l << ") <= " #c << "(value=" << c << ") < " << #h << "(value=" << h << ")"; \
40 throw(SCIRun::AssertionFailed(msg.str().c_str(), __FILE__, __LINE__)); \
43 #define TESTRANGE(c, l, h)
47 #define VFDATAT_ACCESS_DEFINITION(type) \
48 template<class FDATA, class EFDATA, class HFDATA> \
49 void VFDataT<FDATA,EFDATA,HFDATA>::get_value(type &val, VMesh::index_type idx) const \
51 TESTRANGE(idx,0,fdata_.size())\
52 val = CastFData<type>(fdata_[idx]); \
55 template<class FDATA, class EFDATA, class HFDATA> \
56 void VFDataT<FDATA,EFDATA,HFDATA>::set_value(const type &val, VMesh::index_type idx) \
58 TESTRANGE(idx,0,fdata_.size())\
59 fdata_[idx] = CastFData<typename FDATA::value_type>(val); \
62 template<class FDATA, class EFDATA, class HFDATA> \
63 void VFDataT<FDATA,EFDATA,HFDATA>::get_evalue(type &val, VMesh::index_type idx) const \
65 TESTRANGE(idx,0,efdata_.size())\
66 val = CastFData<type>(efdata_[idx]);\
69 template<class FDATA, class EFDATA, class HFDATA> \
70 void VFDataT<FDATA,EFDATA,HFDATA>::set_evalue(const type &val, VMesh::index_type idx) \
72 TESTRANGE(idx,0,efdata_.size()) \
73 efdata_[idx] = CastFData<typename FDATA::value_type>(val);\
76 template<class FDATA, class EFDATA, class HFDATA> \
77 void VFDataT<FDATA,EFDATA,HFDATA>::get_values(type *ptr, VMesh::size_type sz, VMesh::size_type offset) const \
78 { if (static_cast<size_type>(fdata_.size()) < sz+offset) sz = static_cast<size_type>(fdata_.size())-offset; for (size_type i=0; i< sz; i++) ptr[i] = CastFData<type>(fdata_[i+offset]); } \
80 template<class FDATA, class EFDATA, class HFDATA> \
81 void VFDataT<FDATA,EFDATA,HFDATA>::set_values(const type *ptr, VMesh::size_type sz, VMesh::size_type offset) \
82 { if (static_cast<size_type>(fdata_.size()) < sz+offset) sz = static_cast<size_type>(fdata_.size())-offset; for (size_type i=0; i< sz; i++) fdata_[i+offset] = CastFData<typename FDATA::value_type>(ptr[i]); } \
84 template<class FDATA, class EFDATA, class HFDATA> \
85 void VFDataT<FDATA,EFDATA,HFDATA>::get_evalues(type *ptr, VMesh::size_type sz, VMesh::size_type offset) const \
86 { if (static_cast<size_type>(efdata_.size()) < sz+offset) sz = static_cast<size_type>(efdata_.size())-offset; for (size_type i=0; i< sz; i++) ptr[i] = CastFData<type>(efdata_[i+offset]); } \
88 template<class FDATA, class EFDATA, class HFDATA> \
89 void VFDataT<FDATA,EFDATA,HFDATA>::set_evalues(const type *ptr, VMesh::size_type sz, VMesh::size_type offset) \
90 { if (static_cast<size_type>(efdata_.size()) < sz+offset) sz = static_cast<size_type>(efdata_.size())-offset; for (size_type i=0; i< sz; i++) efdata_[i+offset] = CastFData<typename FDATA::value_type>(ptr[i]); } \
92 template<class FDATA, class EFDATA, class HFDATA> \
93 void VFDataT<FDATA,EFDATA,HFDATA>::set_all_values(const type &val) \
94 { typename FDATA::value_type tval = CastFData<typename FDATA::value_type>(val); \
95 size_type sz1 = static_cast<size_type>(fdata_.size()); \
96 size_type sz2 = static_cast<size_type>(efdata_.size()); \
97 for (size_type i=0; i < sz1; i++) fdata_[i] = tval; \
98 for (size_type i=0; i < sz2; i++) efdata_[i] = tval; \
100 template<class FDATA, class EFDATA, class HFDATA> \
101 void VFDataT<FDATA,EFDATA,HFDATA>::get_weighted_value(type &val, const VMesh::index_type* idx, const VMesh::weight_type* w, VMesh::size_type sz ) const \
102 { typename FDATA::value_type tval = typename FDATA::value_type(0); for(size_type i=0; i<sz; i++) { TESTRANGE(idx[i],0,fdata_.size()) tval = tval + static_cast<typename FDATA::value_type>(w[i]*fdata_[idx[i]]); } val = CastFData<type>(tval); } \
104 template<class FDATA, class EFDATA, class HFDATA> \
105 void VFDataT<FDATA,EFDATA,HFDATA>::get_weighted_evalue(type &val, const VMesh::index_type* idx, const VMesh::weight_type* w, VMesh::size_type sz ) const \
106 { typename EFDATA::value_type tval = typename EFDATA::value_type(0); for(size_type i=0; i<sz; i++) { TESTRANGE(idx[i],0,efdata_.size()) tval = tval + static_cast<typename EFDATA::value_type>(w[i]*efdata_[idx[i]]); } val = CastFData<type>(tval); } \
108 template<class FDATA, class EFDATA, class HFDATA> \
109 void VFDataT<FDATA,EFDATA,HFDATA>::get_values(type *ptr, VMesh::Node::array_type& nodes) const \
110 { for(size_t j=0; j<nodes.size(); j++) { TESTRANGE(nodes[j],0,fdata_.size()) ptr[j] = CastFData<type>(fdata_[nodes[j]]); } } \
112 template<class FDATA, class EFDATA, class HFDATA> \
113 void VFDataT<FDATA,EFDATA,HFDATA>::get_values(type *ptr, VMesh::Elem::array_type& elems) const\
114 { for(size_t j=0; j<elems.size(); j++) { TESTRANGE(elems[j],0,fdata_.size()) ptr[j] = CastFData<type>(fdata_[elems[j]]); } } \
116 template<class FDATA, class EFDATA, class HFDATA> \
117 void VFDataT<FDATA,EFDATA,HFDATA>::set_values(const type *ptr, VMesh::Node::array_type& nodes) \
118 { for(size_t j=0; j<nodes.size(); j++) { TESTRANGE(nodes[j],0,fdata_.size()) fdata_[nodes[j]] = CastFData<typename FDATA::value_type>(ptr[j]); } } \
120 template<class FDATA, class EFDATA, class HFDATA> \
121 void VFDataT<FDATA,EFDATA,HFDATA>::set_values(const type *ptr, VMesh::Elem::array_type& elems) \
122 { for(size_t j=0; j<elems.size(); j++) { TESTRANGE(elems[j],0,fdata_.size()) fdata_[elems[j]] = CastFData<typename FDATA::value_type>(ptr[j]);} } \
124 template<class FDATA, class EFDATA, class HFDATA> \
125 void VFDataT<FDATA,EFDATA,HFDATA>::get_values(type *ptr, index_type* idx, size_type size) const\
126 { for(index_type j=0; j<size; j++) { TESTRANGE(idx[j],0,fdata_.size()) ptr[j] = CastFData<type>(fdata_[idx[j]]); } } \
128 template<class FDATA, class EFDATA, class HFDATA> \
129 void VFDataT<FDATA,EFDATA,HFDATA>::set_values(const type *ptr, index_type* idx, size_type size) \
130 { for(index_type j=0; j<size; j++) { TESTRANGE(idx[j],0,fdata_.size()) fdata_[idx[j]] = CastFData<typename FDATA::value_type>(ptr[j]);} } \
133 #define VFDATAT_ACCESS_DEFINITION2(type) \
134 template<class FDATA, class EFDATA, class HFDATA> \
135 void VFDataT<FDATA,EFDATA,HFDATA>::interpolate(type &val, VMesh::ElemInterpolate &interp, type defval) const \
136 { interpolateT<type>(val,interp,defval); } \
138 template<class FDATA, class EFDATA, class HFDATA> \
139 void VFDataT<FDATA,EFDATA,HFDATA>::minterpolate(std::vector<type> &vals, VMesh::MultiElemInterpolate &interp, type defval) const \
140 { minterpolateT<type>(vals,interp,defval); } \
142 template<class FDATA, class EFDATA, class HFDATA> \
143 void VFDataT<FDATA,EFDATA,HFDATA>::gradient(StackVector<type,3> &val, VMesh::ElemGradient &interp, type defval) const \
144 { gradientT<type>(val,interp,defval); } \
146 template<class FDATA, class EFDATA, class HFDATA> \
147 void VFDataT<FDATA,EFDATA,HFDATA>::mgradient(std::vector<StackVector<type,3> > &vals, VMesh::MultiElemGradient &interp, type defval) const \
148 { mgradientT<type>(vals,interp,defval); }
150 #define VFDATA_FUNCTION_SCALAR_DEFINITION(type) \
151 VFData* CreateVFData(std::vector<type>& fdata,std::vector<type>& efdata,std::vector<std::vector<type> >& hfdata) \
152 { return new VFDataScalarT<std::vector<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); } \
154 VFData* CreateVFData(Array2<type>& fdata,std::vector<type>& efdata,std::vector<std::vector<type> >& hfdata) \
155 { return new VFDataScalarT<Array2<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); } \
157 VFData* CreateVFData(Array3<type>& fdata,std::vector<type>& efdata, std::vector<std::vector<type> >& hfdata) \
158 { return new VFDataScalarT<Array3<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); }
160 #define VFDATA_FUNCTION_VECTOR_DEFINITION(type) \
161 VFData* CreateVFData(std::vector<type>& fdata,std::vector<type>& efdata,std::vector<std::vector<type> >& hfdata) \
162 { return new VFDataVectorT<std::vector<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); } \
164 VFData* CreateVFData(Array2<type>& fdata,std::vector<type>& efdata,std::vector<std::vector<type> >& hfdata) \
165 { return new VFDataVectorT<Array2<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); } \
167 VFData* CreateVFData(Array3<type>& fdata,std::vector<type>& efdata, std::vector<std::vector<type> >& hfdata) \
168 { return new VFDataVectorT<Array3<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); }
170 #define VFDATA_FUNCTION_TENSOR_DEFINITION(type) \
171 VFData* CreateVFData(std::vector<type>& fdata,std::vector<type>& efdata,std::vector<std::vector<type> >& hfdata) \
172 { return new VFDataTensorT<std::vector<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); } \
174 VFData* CreateVFData(Array2<type>& fdata,std::vector<type>& efdata,std::vector<std::vector<type> >& hfdata) \
175 { return new VFDataTensorT<Array2<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); } \
177 VFData* CreateVFData(Array3<type>& fdata,std::vector<type>& efdata, std::vector<std::vector<type> >& hfdata) \
178 { return new VFDataTensorT<Array3<type>,std::vector<type>,std::vector<std::vector<type> > >(fdata,efdata,hfdata); }
186 template<
class FDATA,
class EFDATA,
class HFDATA>
194 if (dim.size() > 0) sz = dim[0];
195 if (dim.size() > 1) sz *= dim[1];
196 if (dim.size() > 2) sz *= dim[2];
205 if (dim.size() > 0) sz1 = dim[0];
206 if (dim.size() > 1) sz2 = dim[1];
216 if (dim.size() > 0) sz1 = dim[0];
217 if (dim.size() > 1) sz2 = dim[1];
218 if (dim.size() > 2) sz3 = dim[2];
219 fdata.
resize(sz3,sz2,sz1);
224 VFDataT(FDATA& fdata, EFDATA& efdata, HFDATA& hfdata) :
243 {
return (
fdata_.size()); }
249 if (
fdata_.size() == 0)
return (0);
254 if (
efdata_.size() == 0)
return (0);
282 fdata->get_value(
fdata_[idx],vidx);
290 fdata->get_values(&(
fdata_[idx]),num,vidx);
300 fdata->get_weighted_value(
fdata_[idx],vidx,vw,sz);
307 typename EFDATA::value_type val;
308 fdata->get_value(val,vidx);
317 fdata->get_evalues(&(
fdata_[idx]),num,vidx);
327 typename FDATA::value_type val;
328 fdata->get_weighted_evalue(val,vidx,vw,sz);
336 if (sz1 == 0)
return;
337 if (sz2 < sz1) sz1 = sz2;
338 fdata->get_values(&(
fdata_[0]),sz1,0);
345 if (sz2 < sz1) sz1 = sz2;
346 fdata->get_evalues(&(
efdata_[0]),sz1,0);
369 val =
static_cast<T
>(0.0);
387 val =
static_cast<T
>(0.0);
409 val =
static_cast<T
>(0.0);
429 ASSERTFAIL(
"Interpolate encountered an unknown basis_order");
435 vals.resize(ei.size());
437 if (ei.size() == 0)
return;
439 switch(ei[0].basis_order)
443 for (
size_t j=0; j<ei.size(); j++)
444 if (ei[j].elem_index >= 0)
445 vals[j] = CastFData<T>(
fdata_[ei[j].elem_index]);
452 for (
size_t j=0; j<ei.size(); j++)
454 if (ei[j].elem_index >= 0)
456 vals[j] =
static_cast<T
>(0.0);
457 for (
size_t p=0;p<ei[j].node_index.size(); p++)
458 vals[j] += CastFData<T>(
fdata_[ei[j].node_index[p]]*ei[j].weights[p]);
469 for (
size_t j=0; j<ei.size(); j++)
471 if (ei[j].elem_index >= 0)
473 vals[j] =
static_cast<T
>(0.0);
475 for (
size_t p=0;p<ei[j].node_index.size(); p++)
476 { vals[j] += CastFData<T>(
fdata_[ei[j].node_index[p]]*ei[j].weights[k]); k++; }
477 for (
size_t p=0;p<ei[j].edge_index.size(); p++)
478 { vals[j] += CastFData<T>(
efdata_[ei[j].edge_index[p]]*ei[j].weights[k]); k++; }
489 for (
size_t j=0; j<ei.size(); j++)
491 if (ei[j].elem_index >= 0)
494 vals[j] =
static_cast<T
>(0.0);
495 for (
size_t p=0;p<ei[j].node_index.size();p++)
497 vals[j] += CastFData<T>(
fdata_[ei[j].node_index[p]]*ei[j].weights[k]); k++;
499 { vals[j] += CastFData<T>(
hfdata_[ei[j].node_index[p]][q]*ei[j].weights[k]); k++; }
510 ASSERTFAIL(
"Interpolate encountered an unknown basis_order");
517 vals.resize(eg.size());
519 if (eg.size() == 0)
return;
522 switch(eg[0].basis_order)
525 for (
size_t j=0; j<eg.size(); j++)
528 if (eg[j].elem_index >= 0)
530 vals[j][0] = T(0); vals[j][1] = T(0); vals[j][2] = T(0);
534 vals[j][0] = defval; vals[j][1] = defval; vals[j][2] = defval;
541 for (
size_t j=0; j<eg.size(); j++)
544 vals[j][0] = T(0); vals[j][1] = T(0); vals[j][2] = T(0);
545 if (eg[j].elem_index >= 0)
547 for (
index_type k=0, q = 0; k<eg[j].num_derivs; k++)
550 for (
size_t p=0;p<eg[j].node_index.size();p++)
551 { grad += CastFData<T>(
fdata_[eg[j].node_index[p]]*eg[j].weights[q]); q++; }
553 vals[j][0] += CastFData<T>(grad*eg[j].inverse_jacobian[k]);
554 vals[j][1] += CastFData<T>(grad*eg[j].inverse_jacobian[k+3]);
555 vals[j][2] += CastFData<T>(grad*eg[j].inverse_jacobian[k+6]);
560 vals[j][0] = defval; vals[j][1] = defval; vals[j][2] = defval;
567 for (
size_t j=0; j<eg.size(); j++)
570 vals[j][0] = T(0); vals[j][1] = T(0); vals[j][2] = T(0);
572 if (eg[j].elem_index >= 0)
578 for (
size_t p=0;p<eg[j].node_index.size();p++)
579 { grad += CastFData<T>(
fdata_[eg[j].node_index[p]]*eg[j].weights[q]); q++; }
580 for (
size_t p=0;p<eg[j].edge_index.size();p++)
581 { grad += CastFData<T>(
fdata_[eg[j].edge_index[p]]*eg[j].weights[q]); q++; }
583 vals[j][0] += CastFData<T>(grad*eg[j].inverse_jacobian[k]);
584 vals[j][1] += CastFData<T>(grad*eg[j].inverse_jacobian[k+3]);
585 vals[j][2] += CastFData<T>(grad*eg[j].inverse_jacobian[k+6]);
590 vals[j][0] = defval; vals[j][1] = defval; vals[j][2] = defval;
598 for (
size_t j=0; j<eg.size(); j++)
601 vals[j][0] = T(0); vals[j][1] = T(0); vals[j][2] = T(0);
603 if (eg[j].elem_index >= 0)
610 for (
size_t p=0;p<eg[j].node_index.size();p++)
612 grad += CastFData<T>(
fdata_[eg[j].node_index[p]]*eg[j].weights[q]); q++;
614 { grad += CastFData<T>(
hfdata_[eg[j].node_index[p]][r]*eg[j].weights[q]); q++; }
617 vals[j][0] += CastFData<T>(grad*eg[j].inverse_jacobian[k]);
618 vals[j][1] += CastFData<T>(grad*eg[j].inverse_jacobian[k+3]);
619 vals[j][2] += CastFData<T>(grad*eg[j].inverse_jacobian[k+6]);
624 vals[j][0] = defval; vals[j][1] = defval; vals[j][2] = defval;
631 ASSERTFAIL(
"Gradient encountered an unknown basis_order");
645 val[0] = T(0); val[1] = T(0); val[2] = T(0);
649 val[0] = defval; val[1] = defval; val[2] = defval;
656 val[0] = T(0); val[1] = T(0); val[2] = T(0);
673 val[0] = defval; val[1] = defval; val[2] = defval;
680 val[0] = T(0); val[1] = T(0); val[2] = T(0);
700 val[0] = defval; val[1] = defval; val[2] = defval;
708 val[0] = T(0); val[1] = T(0); val[2] = T(0);
731 val[0] = defval; val[1] = defval; val[2] = defval;
737 ASSERTFAIL(
"Gradient encountered an unknown basis_order");
752 template<
class FDATA,
class EFDATA,
class HFDATA>
757 VFDataT<FDATA,EFDATA,HFDATA>(fdata,efdata,hfdata)
765 typename FDATA::value_type tval(0);
775 if (this->
fdata_[p] < tval)
781 val = CastFData<double>(tval);
787 typename FDATA::value_type tval(0);
790 if (sz > 0) tval = this->
fdata_[0];
else return (
false);
793 val = CastFData<double>(tval);
800 typename FDATA::value_type tval(0);
801 typename FDATA::value_type tval2(0);
805 if (sz > 0) { tval = this->
fdata_[0]; tval2 = tval; }
else return (
false);
811 min = CastFData<double>(tval);
812 max = CastFData<double>(tval2);
817 template<
class FDATA,
class EFDATA,
class HFDATA>
822 VFDataT<FDATA,EFDATA,HFDATA>(fdata,efdata,hfdata)
833 if (sz > 0) tval = this->
fdata_[0].length();
837 double len = this->
fdata_[p].length();
841 val = CastFData<double>(tval);
850 if (sz > 0) tval = this->
fdata_[0].length();
853 double len = this->
fdata_[p].length();
857 val = CastFData<double>(tval);
869 if (sz > 0) { tval = this->
fdata_[0].length(); tval2 = tval; }
875 min = CastFData<double>(tval);
876 max = CastFData<double>(tval2);
882 template<
class FDATA,
class EFDATA,
class HFDATA>
887 VFDataT<FDATA,EFDATA,HFDATA>(fdata,efdata,hfdata)
898 if (sz > 0) tval = this->
fdata_[0].norm();
902 double len = this->
fdata_[p].norm();
906 val = CastFData<double>(tval);
915 if (sz > 0) tval = this->
fdata_[0].norm();
918 double len = this->
fdata_[p].norm();
922 val = CastFData<double>(tval);
933 if (sz > 0) { tval = this->
fdata_[0].norm(); tval2 = tval; }
939 min = CastFData<double>(tval);
940 max = CastFData<double>(tval2);
Definition: VFDataT.h:753
std::vector< ElemInterpolate > MultiElemInterpolate
Definition: VMesh.h:208
virtual void copy_values(VFData *fdata, VMesh::index_type vidx, VMesh::index_type idx, VMesh::size_type num)
Definition: VFDataT.h:285
StackVector< index_type, 8 > node_index
Definition: VMesh.h:199
#define VFDATA_ACCESS_DECLARATION(type)
Definition: VFData.h:47
virtual ~VFDataScalarT()
Definition: VFDataT.h:761
virtual VMesh::size_type efdata_size() const
Definition: VFDataT.h:244
void gradientT(StackVector< T, 3 > &val, VMesh::ElemGradient &eg, T defval) const
Definition: VFDataT.h:635
virtual void resize_efdata(VMesh::dimension_type dim)
Definition: VFDataT.h:237
StackVector< double, 9 > inverse_jacobian
Definition: VMesh.h:224
virtual bool minmax(double &min, VMesh::index_type &idxmin, double &max, VMesh::index_type &idxmax) const
Definition: VFDataT.h:797
Generic exception for internal errors.
virtual bool min(double &val, VMesh::index_type &idx) const
Definition: VFDataT.h:763
index_type elem_index
Definition: VMesh.h:198
virtual void copy_values(VFData *fdata)
Copy values from one FData array to another FData array.
Definition: VFDataT.h:332
virtual void copy_evalues(VFData *fdata, VMesh::index_type vidx, VMesh::index_type idx, VMesh::size_type num)
Definition: VFDataT.h:312
StackBasedVector< double, 64 > weights
Definition: VMesh.h:202
virtual void * efdata_pointer() const
Definition: VFDataT.h:252
virtual VMesh::size_type fdata_size() const
Definition: VFData.cc:105
VFDataTensorT(FDATA &fdata, EFDATA &efdata, HFDATA &hfdata)
Definition: VFDataT.h:886
void minterpolateT(std::vector< T > &vals, VMesh::MultiElemInterpolate &ei, T defval) const
Definition: VFDataT.h:433
virtual void copy_weighted_evalue(VFData *fdata, VMesh::index_type *vidx, VMesh::weight_type *vw, VMesh::size_type sz, VMesh::index_type idx)
Copy a weighted edge value without needing to know the type.
Definition: VFDataT.h:321
HFDATA & hfdata_
Definition: VFDataT.h:745
virtual ~VFDataT()
Definition: VFDataT.h:229
virtual bool max(double &val, VMesh::index_type &idx) const
Definition: VFDataT.h:785
virtual bool max(double &val, VMesh::index_type &idx) const
Definition: VFDataT.h:845
#define VFDATAT_ACCESS_DEFINITION(type)
Definition: VFDataT.h:47
virtual ~VFDataVectorT()
Definition: VFDataT.h:826
#define VFDATA_ACCESS_DECLARATION2(type)
Definition: VFData.h:67
size_type num_hderivs
Definition: VMesh.h:220
Definition: VFDataT.h:883
Definition: ParallelLinearAlgebraTests.cc:358
void resize(size_t size1, size_t size2, size_t size3)
Definition: Array3.h:77
#define TESTRANGE(c, l, h)
Definition: VFDataT.h:43
virtual VMesh::size_type size()
Definition: VFDataT.h:740
long long size_type
Definition: Types.h:40
Definition: StackVector.h:50
Definition: VFDataT.h:818
StackBasedVector< double, 64 > weights
Definition: VMesh.h:221
virtual void copy_value(VFData *fdata, VMesh::index_type vidx, VMesh::index_type idx)
Copy a value without needing to know the type.
Definition: VFDataT.h:278
virtual void copy_weighted_value(VFData *fdata, const VMesh::index_type *vidx, const VMesh::weight_type *vw, VMesh::size_type sz, VMesh::index_type idx)
Definition: VFDataT.h:294
double weight_type
Weights for interpolation.
Definition: VMesh.h:65
virtual bool min(double &val, VMesh::index_type &idx) const
Definition: VFDataT.h:828
virtual VMesh::size_type fdata_size() const
Definition: VFDataT.h:242
virtual VMesh::size_type efdata_size() const
Definition: VFData.cc:111
FDATA & fdata_
Definition: VFDataT.h:743
virtual bool min(double &val, VMesh::index_type &idx) const
Definition: VFDataT.h:893
VFDataVectorT(FDATA &fdata, EFDATA &efdata, HFDATA &hfdata)
Definition: VFDataT.h:821
#define ASSERTFAIL(string)
Definition: Assert.h:52
StackVector< index_type, 12 > edge_index
Definition: VMesh.h:200
virtual void copy_evalue(VFData *fdata, VMesh::index_type vidx, VMesh::index_type idx)
Copy a edge value without needing to know the type.
Definition: VFDataT.h:303
VFDataScalarT(FDATA &fdata, EFDATA &efdata, HFDATA &hfdata)
Definition: VFDataT.h:756
EFDATA & efdata_
Definition: VFDataT.h:744
virtual ~VFDataTensorT()
Definition: VFDataT.h:891
long long index_type
Definition: Types.h:39
Definition: ParallelLinearAlgebraTests.cc:751
virtual void copy_evalues(VFData *fdata)
Definition: VFDataT.h:341
void resize(size_t size1, size_t size2)
Definition: Array2.h:64
void resize(size_t size, const value_type &val=value_type())
Definition: StackVector.h:61
void mgradientT(std::vector< StackVector< T, 3 > > &vals, VMesh::MultiElemGradient &eg, T defval) const
Definition: VFDataT.h:515
virtual bool minmax(double &min, VMesh::index_type &idxmin, double &max, VMesh::index_type &idxmax) const
Definition: VFDataT.h:861
virtual void * fdata_pointer() const
Definition: VFDataT.h:247
virtual void resize_fdata(VMesh::dimension_type dim)
Definition: VFDataT.h:232
size_type num_derivs
Definition: VMesh.h:223
#define VFDATAT_ACCESS_DEFINITION2(type)
Definition: VFDataT.h:133
virtual bool minmax(double &min, VMesh::index_type &idxmin, double &max, VMesh::index_type &idxmax) const
Definition: VFDataT.h:925
void interpolateT(T &val, VMesh::ElemInterpolate &ei, T defval) const
Definition: VFDataT.h:350
StackBasedVector< index_type, 8 > node_index
Definition: VMesh.h:218
VFDataT(FDATA &fdata, EFDATA &efdata, HFDATA &hfdata)
Definition: VFDataT.h:224
size_type num_hderivs
Definition: VMesh.h:201
std::vector< size_type > dimension_type
Definition: VMesh.h:76
Mesh::size_type size_type
Definition: VMesh.h:68
int basis_order
Definition: VMesh.h:216
StackVector< index_type, 12 > edge_index
Definition: VMesh.h:219
virtual bool max(double &val, VMesh::index_type &idx) const
Definition: VFDataT.h:910
int basis_order
Definition: VMesh.h:197
index_type elem_index
Definition: VMesh.h:217
Mesh::index_type index_type
VIRTUAL INTERFACE.
Definition: VMesh.h:63
std::vector< ElemGradient > MultiElemGradient
Multiple gradient calculations in parallel.
Definition: VMesh.h:229
Definition: VFDataT.h:187