32 #ifndef CORE_BASIS_PRISMQUADRATICLGN_H
33 #define CORE_BASIS_PRISMQUADRATICLGN_H 1
78 template<
class VECTOR>
79 inline void get_weights(
const VECTOR& coords,
double *w)
const
82 template<
class VECTOR>
87 template <
class ElemData,
class VECTOR>
100 w[6] * this->
nodes_[cd.edge0_index()] +
101 w[7] * this->
nodes_[cd.edge1_index()] +
102 w[8] * this->
nodes_[cd.edge2_index()] +
103 w[9] * this->
nodes_[cd.edge3_index()] +
104 w[10] * this->
nodes_[cd.edge4_index()] +
105 w[11] * this->
nodes_[cd.edge5_index()] +
106 w[12] * this->
nodes_[cd.edge6_index()] +
107 w[13] * this->
nodes_[cd.edge7_index()] +
108 w[14] * this->
nodes_[cd.edge8_index()]);
113 template <
class ElemData,
class VECTOR1,
class VECTOR2>
114 void derivate(
const VECTOR1 &coords,
const ElemData &cd,
115 VECTOR2 &derivs)
const
122 derivs[0]=
static_cast<typename VECTOR2::value_type
>(
129 w[6] * this->
nodes_[cd.edge0_index()] +
130 w[7] * this->
nodes_[cd.edge1_index()] +
131 w[8] * this->
nodes_[cd.edge2_index()] +
132 w[9] * this->
nodes_[cd.edge3_index()] +
133 w[10] * this->
nodes_[cd.edge4_index()] +
134 w[11] * this->
nodes_[cd.edge5_index()] +
135 w[12] * this->
nodes_[cd.edge6_index()] +
136 w[13] * this->
nodes_[cd.edge7_index()] +
137 w[14] * this->
nodes_[cd.edge8_index()]);
139 derivs[1]=
static_cast<typename VECTOR2::value_type
>(
146 w[21] * this->
nodes_[cd.edge0_index()] +
147 w[22] * this->
nodes_[cd.edge1_index()] +
148 w[23] * this->
nodes_[cd.edge2_index()] +
149 w[24] * this->
nodes_[cd.edge3_index()] +
150 w[25] * this->
nodes_[cd.edge4_index()] +
151 w[26] * this->
nodes_[cd.edge5_index()] +
152 w[27] * this->
nodes_[cd.edge6_index()] +
153 w[28] * this->
nodes_[cd.edge7_index()] +
154 w[29] * this->
nodes_[cd.edge8_index()]);
156 derivs[2]=
static_cast<typename VECTOR2::value_type
>(
163 w[36] * this->
nodes_[cd.edge0_index()] +
164 w[37] * this->
nodes_[cd.edge1_index()] +
165 w[38] * this->
nodes_[cd.edge2_index()] +
166 w[39] * this->
nodes_[cd.edge3_index()] +
167 w[40] * this->
nodes_[cd.edge4_index()] +
168 w[41] * this->
nodes_[cd.edge5_index()] +
169 w[42] * this->
nodes_[cd.edge6_index()] +
170 w[43] * this->
nodes_[cd.edge7_index()] +
171 w[44] * this->
nodes_[cd.edge8_index()]);
176 template <
class ElemData,
class VECTOR>
178 const ElemData &cd)
const
181 return CL.
get_coords(
this, coords, value, cd);
185 template <
class ElemData>
188 return get_arc3d_length<CrvGaussian2<double> >(
this, edge, cd);
192 template <
class ElemData>
193 double get_area(
const unsigned face,
const ElemData &cd)
const
196 return get_area3<TriGaussian3<double> >(
this, face, cd);
198 return get_area3<QuadGaussian3<double> >(
this, face, cd);
202 template <
class ElemData>
208 static const std::string
type_name(
int n = -1);
219 ASSERT((n >= -1) && n <= 1);
227 static const std::string nm(
"PrismQuadraticLgn");
249 std::string(__FILE__),
263 Pio(stream, this->nodes_);
void get_quadratic_derivate_weights(const VECTOR &coords, double *w) const
get weight factors of derivative at parametric coordinate
Definition: PrismElementWeights.h:100
void get_weights(const VECTOR &coords, double *w) const
Definition: PrismQuadraticLgn.h:79
Class for creating geometrical approximations of Prism meshes.
Definition: PrismLinearLgn.h:114
PrismQuadraticLgn()
Definition: PrismQuadraticLgn.h:73
Class for describing unit geometry of PrismLinearLgn.
Definition: PrismLinearLgn.h:50
double get_arc_length(const unsigned edge, const ElemData &cd) const
get arc length for edge
Definition: PrismQuadraticLgn.h:186
Definition: Persistent.h:89
Definition: PrismLinearLgn.h:217
static int dofs()
return degrees of freedom
Definition: PrismQuadraticLgn.h:55
void get_derivate_weights(const VECTOR &coords, double *w) const
Definition: PrismQuadraticLgn.h:83
bool get_coords(const ElemBasis *pEB, VECTOR &coords, const T &value, const ElemData &cd) const
Definition: PrismLinearLgn.h:225
Class with weights and coordinates for 2nd order Gaussian integration.
Definition: PrismLinearLgn.h:317
Definition: TypeDescription.h:45
#define SCISHARE
Definition: share.h:39
std::vector< const TypeDescription * > td_vec
Definition: TypeDescription.h:56
std::vector< T > nodes_
Definition: Basis.h:159
#define ASSERT(condition)
Definition: Assert.h:110
T interpolate(const VECTOR &coords, const ElemData &cd) const
get value at parametric coordinate
Definition: PrismQuadraticLgn.h:88
const int PRISMQUADRATICLGN_VERSION
Definition: PrismQuadraticLgn.h:256
virtual int begin_class(const std::string &name, int current_version)
Definition: Persistent.cc:143
void get_quadratic_weights(const VECTOR &coords, double *w) const
get weight factors at parametric coordinate
Definition: PrismElementWeights.h:78
const string find_type_name(float *)
Definition: TypeName.cc:63
static SCISHARE int unit_faces[5][4]
References to vertices of unit face.
Definition: PrismLinearLgn.h:57
Class for describing unit geometry of PrismQuadraticLgn.
Definition: PrismQuadraticLgn.h:43
const char * name[]
Definition: BoostGraphExampleTests.cc:87
virtual void io(Piostream &str)
Definition: PrismQuadraticLgn.h:259
static SCISHARE double unit_vertices[15][3]
Parametric coordinates of vertices of unit edge.
Definition: PrismQuadraticLgn.h:45
static int number_of_vertices()
return number of vertices
Definition: PrismQuadraticLgn.h:51
Definition: PrismElementWeights.h:36
double get_volume(const ElemData &cd) const
get volume
Definition: PrismQuadraticLgn.h:203
Class for describing interfaces to basis elements with additional nodes.
Definition: Basis.h:169
Definition: PrismSamplingSchemes.h:42
static const std::string make_template_id(const std::string &templateName, const std::string &templateParam)
Definition: TypeName.h:62
static int polynomial_order()
Definition: PrismQuadraticLgn.h:76
void derivate(const VECTOR1 &coords, const ElemData &cd, VECTOR2 &derivs) const
get first derivative at parametric coordinate
Definition: PrismQuadraticLgn.h:114
virtual ~PrismQuadraticLgnUnitElement()
Definition: PrismQuadraticLgn.h:48
void Pio(Piostream &stream, Array1< T > &array)
Definition: Array1.h:65
bool get_coords(VECTOR &coords, const T &value, const ElemData &cd) const
get parametric coordinate for value within the element
Definition: PrismQuadraticLgn.h:177
virtual void end_class()
Definition: Persistent.cc:178
virtual ~PrismQuadraticLgn()
Definition: PrismQuadraticLgn.h:74
PrismQuadraticLgnUnitElement()
Definition: PrismQuadraticLgn.h:47
int n
Definition: eab.py:9
static const std::string type_name(int n=-1)
Definition: PrismQuadraticLgn.h:217
Definition: PrismQuadraticLgn.h:63
double get_volume3(const ElemBasis *pEB, const ElemData &cd)
Definition: Locate.h:179
T value_type
Definition: PrismQuadraticLgn.h:71
double get_area(const unsigned face, const ElemData &cd) const
get area
Definition: PrismQuadraticLgn.h:193
Definition: TypeDescription.h:49
const TypeDescription * get_type_description(Core::Basis::ConstantBasis< T > *)
Definition: Constant.h:209