32 #ifndef CORE_BASIS_TRIQUADRATICLGN_H
33 #define CORE_BASIS_TRIQUADRATICLGN_H 1
51 static int dofs() {
return 6; }
73 template<
class VECTOR>
74 inline void get_weights(
const VECTOR& coords,
double *w)
const
77 template<
class VECTOR>
83 template <
class ElemData,
class VECTOR>
93 w[3] * this->
nodes_[cd.edge0_index()] +
94 w[4] * this->
nodes_[cd.edge1_index()] +
95 w[5] * this->
nodes_[cd.edge2_index()]);
99 template <
class ElemData,
class VECTOR1,
class VECTOR2>
100 void derivate(
const VECTOR1 &coords,
const ElemData &cd,
101 VECTOR2 &derivs)
const
108 derivs[0]=
static_cast<typename VECTOR2::value_type
>(
112 + w[3]*this->
nodes_[cd.edge0_index()]
113 + w[4]*this->
nodes_[cd.edge1_index()]
114 + w[5]*this->
nodes_[cd.edge2_index()]);
116 derivs[1]=
static_cast<typename VECTOR2::value_type
>(
120 + w[9]*this->
nodes_[cd.edge0_index()]
121 + w[10]*this->
nodes_[cd.edge1_index()]
122 + w[11] *this->
nodes_[cd.edge2_index()]);
126 template <
class ElemData,
class VECTOR>
128 const ElemData &cd)
const
131 return CL.
get_coords(
this, coords, value, cd);
135 template <
class ElemData>
138 return get_arc2d_length<CrvGaussian2<double> >(
this, edge, cd);
142 template <
class ElemData>
143 double get_area(
const unsigned face,
const ElemData &cd)
const
145 return get_area2<TriGaussian3<double> >(
this, face, cd);
149 template <
class ElemData>
156 static const std::string
type_name(
int n = -1);
171 ASSERT((n >= -1) && n <= 1);
179 static const std::string nm(
"TriQuadraticLgn");
197 std::string(__FILE__),
211 Pio(stream, this->nodes_);
T interpolate(const VECTOR &coords, const ElemData &cd) const
get value at parametric coordinate
Definition: TriQuadraticLgn.h:84
bool get_coords(const ElemBasis *pEB, VECTOR &coords, const T &value, const ElemData &cd) const
find value in interpolation for given value
Definition: TriLinearLgn.h:194
void get_quadratic_derivate_weights(const VECTOR &coords, double *w) const
get weight factors of derivative at parametric coordinate
Definition: TriElementWeights.h:76
Definition: Persistent.h:89
TriQuadraticLgnUnitElement()
Definition: TriQuadraticLgn.h:47
Class for creating geometrical approximations of Tri meshes.
Definition: TriLinearLgn.h:109
virtual ~TriQuadraticLgnUnitElement()
Definition: TriQuadraticLgn.h:48
void get_weights(const VECTOR &coords, double *w) const
Definition: TriQuadraticLgn.h:74
Definition: TypeDescription.h:45
#define SCISHARE
Definition: share.h:39
std::vector< const TypeDescription * > td_vec
Definition: TypeDescription.h:56
virtual void io(Piostream &str)
Definition: TriQuadraticLgn.h:207
std::vector< T > nodes_
Definition: Basis.h:159
double get_area(const unsigned face, const ElemData &cd) const
get area
Definition: TriQuadraticLgn.h:143
#define ASSERT(condition)
Definition: Assert.h:110
virtual int begin_class(const std::string &name, int current_version)
Definition: Persistent.cc:143
static const std::string type_name(int n=-1)
Definition: TriQuadraticLgn.h:169
const string find_type_name(float *)
Definition: TypeName.cc:63
virtual ~TriQuadraticLgn()
Definition: TriQuadraticLgn.h:69
void derivate(const VECTOR1 &coords, const ElemData &cd, VECTOR2 &derivs) const
get first derivative at parametric coordinate
Definition: TriQuadraticLgn.h:100
void get_quadratic_weights(const VECTOR &coords, double *w) const
get weight factors at parametric coordinate
Definition: TriElementWeights.h:63
const char * name[]
Definition: BoostGraphExampleTests.cc:87
static int dofs()
return degrees of freedom
Definition: TriQuadraticLgn.h:51
Persistent i/o for STL containers.
Definition: TriQuadraticLgn.h:58
static int number_of_vertices()
return number of vertices
Definition: TriQuadraticLgn.h:50
TriQuadraticLgn()
Definition: TriQuadraticLgn.h:68
Class for describing unit geometry of TriQuadraticLgn.
Definition: TriQuadraticLgn.h:43
void get_derivate_weights(const VECTOR &coords, double *w) const
Definition: TriQuadraticLgn.h:78
Class for describing interfaces to basis elements with additional nodes.
Definition: Basis.h:169
double get_arc_length(const unsigned edge, const ElemData &cd) const
get arc length for edge
Definition: TriQuadraticLgn.h:136
static const std::string make_template_id(const std::string &templateName, const std::string &templateParam)
Definition: TypeName.h:62
T value_type
Definition: TriQuadraticLgn.h:66
Class for describing unit geometry of TriLinearLgn.
Definition: TriLinearLgn.h:46
Definition: TriElementWeights.h:36
void Pio(Piostream &stream, Array1< T > &array)
Definition: Array1.h:65
virtual void end_class()
Definition: Persistent.cc:178
static SCISHARE double unit_vertices[6][2]
Parametric coordinates of vertices of unit edge.
Definition: TriQuadraticLgn.h:45
Definition: TriSamplingSchemes.h:43
int n
Definition: eab.py:9
Class with weights and coordinates for 3rd order Gaussian integration.
Definition: TriLinearLgn.h:292
Definition: TriLinearLgn.h:185
static int polynomial_order()
Definition: TriQuadraticLgn.h:71
double get_volume(const ElemData &) const
get volume
Definition: TriQuadraticLgn.h:150
const int TRIQUADRATICLGN_VERSION
Definition: TriQuadraticLgn.h:204
bool get_coords(VECTOR &coords, const T &value, const ElemData &cd) const
get the parametric coordinate for value within the element
Definition: TriQuadraticLgn.h:127
Definition: TypeDescription.h:49
const TypeDescription * get_type_description(Core::Basis::ConstantBasis< T > *)
Definition: Constant.h:209