1 #ifndef QUAD_1_GAUSS_SHAPE_SET_HPP_INCLUDED
2 #define QUAD_1_GAUSS_SHAPE_SET_HPP_INCLUDED
4 #include "../core/shapeset.hpp"
12 class quad_1_gauss_shape_set;
14 namespace shape_set_traits
33 template <
unsigned Order>
65 static corner_iterator_t corner_begin_impl()
67 return m_corners.cbegin();
71 static const corners_t m_corners;
78 typedef shape_set_traits::shape_value_type<quad_1_gauss_shape_set, 0>::type shape_t;
81 static shape_t eval(xi_t
const &_xi)
83 auto xi = _xi[0], eta = _xi[1];
84 return ( quad_1_gauss_shape_set::shape_t() <<
85 (1.0 - std::sqrt(3.0)*xi) * (1.0 - std::sqrt(3.0)*eta),
86 (1.0 + std::sqrt(3.0)*xi) * (1.0 - std::sqrt(3.0)*eta),
87 (1.0 - std::sqrt(3.0)*xi) * (1.0 + std::sqrt(3.0)*eta),
88 (1.0 + std::sqrt(3.0)*xi) * (1.0 + std::sqrt(3.0)*eta)
98 typedef shape_set_traits::shape_value_type<quad_1_gauss_shape_set, 1>::type shape_t;
101 static shape_t eval(xi_t
const &_xi)
103 auto xi = _xi[0], eta = _xi[1];
104 return ( quad_1_gauss_shape_set::dshape_t() <<
105 -std::sqrt(3.0) * (1.0 - std::sqrt(3.0)*eta) , (1.0 - std::sqrt(3.0)*xi) * -std::sqrt(3.0),
106 +std::sqrt(3.0) * (1.0 - std::sqrt(3.0)*eta) , (1.0 + std::sqrt(3.0)*xi) * -std::sqrt(3.0),
107 -std::sqrt(3.0) * (1.0 + std::sqrt(3.0)*eta) , (1.0 - std::sqrt(3.0)*xi) * +std::sqrt(3.0),
108 +std::sqrt(3.0) * (1.0 + std::sqrt(3.0)*eta) , (1.0 + std::sqrt(3.0)*xi) * +std::sqrt(3.0)
115 #endif // QUAD_1_GAUSS_SHAPE_SET_HPP_INCLUDED