32 #ifndef BASIS_CORE_QUADBIQUADRATICLGN_H
33 #define BASIS_CORE_QUADBIQUADRATICLGN_H 1
51 static int dofs() {
return 8; }
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>
89 return (T)(w[0] * cd.node0() +
93 w[4] * this->
nodes_[cd.edge0_index()] +
94 w[5] * this->
nodes_[cd.edge1_index()] +
95 w[6] * this->
nodes_[cd.edge2_index()] +
96 w[7] * this->
nodes_[cd.edge3_index()]);
100 template <
class ElemData,
class VECTOR1,
class VECTOR2>
101 void derivate(
const VECTOR1 &coords,
const ElemData &cd,
102 VECTOR2 &derivs)
const
109 static_cast<typename VECTOR2::value_type
>(
114 w[4]*this->
nodes_[cd.edge0_index()] +
115 w[5]*this->
nodes_[cd.edge1_index()] +
116 w[6]*this->
nodes_[cd.edge2_index()] +
117 w[7]*this->
nodes_[cd.edge3_index()]);
120 static_cast<typename VECTOR2::value_type
>(
125 w[12]*this->
nodes_[cd.edge0_index()] +
126 w[13]*this->
nodes_[cd.edge1_index()] +
127 w[14]*this->
nodes_[cd.edge2_index()] +
128 w[15]*this->
nodes_[cd.edge3_index()]);
132 template <
class ElemData,
class VECTOR>
134 const ElemData &cd)
const
137 return CL.
get_coords(
this, coords, value, cd);
141 template <
class ElemData>
144 return get_arc2d_length<CrvGaussian2<double> >(
this, edge, cd);
148 template <
class ElemData>
149 double get_area(
const unsigned face,
const ElemData &cd)
const
151 return get_area2<QuadGaussian2<double> >(
this, face, cd);
155 template <
class ElemData>
161 static const std::string
type_name(
int n = -1);
175 ASSERT((n >= -1) && n <= 1);
183 static const std::string nm(
"QuadBiquadraticLgn");
204 std::string(__FILE__),
218 Pio(stream, this->nodes_);
void derivate(const VECTOR1 &coords, const ElemData &cd, VECTOR2 &derivs) const
get first derivative at parametric coordinate
Definition: QuadBiquadraticLgn.h:101
Class for describing unit geometry of QuadBiquadraticLgn.
Definition: QuadBiquadraticLgn.h:42
virtual ~QuadBiquadraticLgn()
Definition: QuadBiquadraticLgn.h:69
static int polynomial_order()
Definition: QuadBiquadraticLgn.h:71
virtual void io(Piostream &str)
Definition: QuadBiquadraticLgn.h:214
Definition: Persistent.h:89
double get_area(const unsigned face, const ElemData &cd) const
get area
Definition: QuadBiquadraticLgn.h:149
Definition: TypeDescription.h:45
#define SCISHARE
Definition: share.h:39
std::vector< const TypeDescription * > td_vec
Definition: TypeDescription.h:56
void get_derivate_weights(const VECTOR &coords, double *w) const
Definition: QuadBiquadraticLgn.h:78
double get_arc_length(const unsigned edge, const ElemData &cd) const
get arc length for edge
Definition: QuadBiquadraticLgn.h:142
std::vector< T > nodes_
Definition: Basis.h:159
void get_quadratic_derivate_weights(const VECTOR &coords, double *w) const
get weight factors of derivative at parametric coordinate
Definition: QuadElementWeights.h:82
bool get_coords(VECTOR &coords, const T &value, const ElemData &cd) const
get parametric coordinate for value within the element
Definition: QuadBiquadraticLgn.h:133
#define ASSERT(condition)
Definition: Assert.h:110
void get_weights(const VECTOR &coords, double *w) const
Definition: QuadBiquadraticLgn.h:74
Definition: QuadElementWeights.h:36
virtual int begin_class(const std::string &name, int current_version)
Definition: Persistent.cc:143
T value_type
Definition: QuadBiquadraticLgn.h:66
const string find_type_name(float *)
Definition: TypeName.cc:63
QuadBiquadraticLgn()
Definition: QuadBiquadraticLgn.h:68
static int dofs()
return degrees of freedom
Definition: QuadBiquadraticLgn.h:51
static int number_of_vertices()
return number of vertices
Definition: QuadBiquadraticLgn.h:50
Definition: QuadSamplingSchemes.h:42
const char * name[]
Definition: BoostGraphExampleTests.cc:87
QuadBiquadraticLgnUnitElement()
Definition: QuadBiquadraticLgn.h:47
Definition: QuadBilinearLgn.h:175
void get_quadratic_weights(const VECTOR &coords, double *w) const
get weight factors at parametric coordinate
Definition: QuadElementWeights.h:66
Class for describing unit geometry of QuadBilinearLgn.
Definition: QuadBilinearLgn.h:46
bool get_coords(const ElemBasis *pEB, VECTOR &coords, const T &value, const ElemData &cd) const
find value in interpolation for given value
Definition: QuadBilinearLgn.h:184
T interpolate(const VECTOR &coords, const ElemData &cd) const
get first derivative at parametric coordinate
Definition: QuadBiquadraticLgn.h:84
Class for describing interfaces to basis elements with additional nodes.
Definition: Basis.h:169
static const std::string type_name(int n=-1)
Definition: QuadBiquadraticLgn.h:173
static const std::string make_template_id(const std::string &templateName, const std::string &templateParam)
Definition: TypeName.h:62
double get_volume(const ElemData &) const
get volume
Definition: QuadBiquadraticLgn.h:156
void Pio(Piostream &stream, Array1< T > &array)
Definition: Array1.h:65
virtual void end_class()
Definition: Persistent.cc:178
Definition: QuadBiquadraticLgn.h:58
virtual ~QuadBiquadraticLgnUnitElement()
Definition: QuadBiquadraticLgn.h:48
Class for creating geometrical approximations of Quad meshes.
Definition: QuadBilinearLgn.h:108
int n
Definition: eab.py:9
const int QUADBIQUADRATICLGN_VERSION
Definition: QuadBiquadraticLgn.h:211
Class with weights and coordinates for 3rd order Gaussian integration.
Definition: QuadBilinearLgn.h:287
Definition: TypeDescription.h:49
const TypeDescription * get_type_description(Core::Basis::ConstantBasis< T > *)
Definition: Constant.h:209
static SCISHARE double unit_vertices[8][2]
Parametric coordinates of vertices of unit edge.
Definition: QuadBiquadraticLgn.h:45