17 #include <deal.II/base/quadrature_lib.h> 18 #include <deal.II/lac/vector.h> 19 #include <deal.II/fe/fe_q.h> 23 #include <deal.II/base/std_cxx14/memory.h> 25 DEAL_II_NAMESPACE_OPEN
34 std::vector<Point<1> >
35 get_QGaussLobatto_points (
const unsigned int degree)
41 typedef ::FE_Q_Base<TensorProductPolynomials<1>, 1, 1> FEQ;
44 return std::vector<Point<1> >();
52 template <
int dim,
int spacedim>
60 std::vector<bool> (1, false))
67 template <
int dim,
int spacedim>
75 std::vector<bool> (1, false))
82 template <
int dim,
int spacedim>
90 std::ostringstream namebuf;
91 bool equidistant =
true;
92 std::vector<double> points(this->degree+1);
95 std::vector<unsigned int> lexicographic = this->poly_space.get_numbering_inverse();
96 for (
unsigned int j=0; j<=this->degree; j++)
97 points[j] = this->unit_support_points[lexicographic[j]][0];
100 for (
unsigned int j=0; j<=this->degree; j++)
101 if (std::fabs(points[j] - (
double)j/this->degree) > 1e-15)
107 if (equidistant ==
true)
109 if (this->degree > 2)
112 <<
">(QIterated(QTrapez()," << this->degree <<
"))";
116 <<
">(" << this->degree <<
")";
122 bool gauss_lobatto =
true;
123 for (
unsigned int j=0; j<=this->degree; j++)
124 if (points[j] != points_gl.
point(j)(0))
126 gauss_lobatto =
false;
129 if (gauss_lobatto ==
true)
132 <<
">(" << this->degree <<
")";
136 <<
">(QUnknownNodes(" << this->degree <<
"))";
138 return namebuf.str();
143 template <
int dim,
int spacedim>
147 std::vector<double> &nodal_values)
const 150 this->get_unit_support_points().size());
152 nodal_values.size());
154 nodal_values.size());
156 for (
unsigned int i=0; i<this->dofs_per_cell; ++i)
160 nodal_values[i] = support_point_values[i](0);
166 template <
int dim,
int spacedim>
167 std::unique_ptr<FiniteElement<dim,spacedim> >
170 return std_cxx14::make_unique<FE_Q<dim,spacedim>>(*this);
177 DEAL_II_NAMESPACE_CLOSE
virtual void convert_generalized_support_point_values_to_dof_values(const std::vector< Vector< double > > &support_point_values, std::vector< double > &nodal_values) const
#define AssertDimension(dim1, dim2)
FE_Q(const unsigned int p)
const std::vector< Point< dim > > & get_points() const
const unsigned int degree
const Point< dim > & point(const unsigned int i) const
#define AssertThrow(cond, exc)
virtual std::unique_ptr< FiniteElement< dim, spacedim > > clone() const
std::string dim_string(const int dim, const int spacedim)
virtual std::string get_name() const
void initialize(const std::vector< Point< 1 > > &support_points_1d)