44 get_QGaussLobatto_points(
const unsigned int degree)
53 return std::vector<Point<1>>();
61 template <
int dim,
int spacedim>
71 std::vector<
bool>(1, false))
78 template <
int dim,
int spacedim>
87 std::vector<
bool>(1, false))
94 template <
int dim,
int spacedim>
102 std::ostringstream namebuf;
103 bool equidistant =
true;
104 std::vector<double> points(this->degree + 1);
109 std::vector<unsigned int> lexicographic =
111 for (
unsigned int j = 0; j <= this->degree; ++j)
115 for (
unsigned int j = 0; j <= this->degree; ++j)
116 if (
std::fabs(points[j] -
static_cast<double>(j) / this->degree) > 1
e-15)
122 if (equidistant ==
true)
124 if (this->degree > 2)
126 <<
">(QIterated(QTrapezoid()," << this->degree <<
"))";
129 << this->degree <<
")";
135 bool gauss_lobatto =
true;
136 for (
unsigned int j = 0; j <= this->degree; ++j)
137 if (points[j] != points_gl.
point(j)(0))
139 gauss_lobatto =
false;
142 if (gauss_lobatto ==
true)
144 << this->degree <<
")";
147 <<
">(QUnknownNodes(" << this->degree <<
"))";
149 return namebuf.str();
154 template <
int dim,
int spacedim>
158 std::vector<double> &nodal_values)
const
161 this->get_unit_support_points().size());
165 for (
unsigned int i = 0; i < this->n_dofs_per_cell(); ++i)
169 nodal_values[i] = support_point_values[i](0);
175 template <
int dim,
int spacedim>
176 std::unique_ptr<FiniteElement<dim, spacedim>>
179 return std::make_unique<FE_Q<dim, spacedim>>(*this);
184 template <
int dim,
int spacedim>
188 const unsigned int codim)
const
207 if (this->degree < fe_q_other->degree)
209 else if (this->degree == fe_q_other->degree)
217 if (this->degree < fe_p_other->degree)
219 else if (this->degree == fe_p_other->degree)
227 if (this->degree < fe_wp_other->degree)
229 else if (this->degree == fe_wp_other->degree)
237 if (this->degree < fe_pp_other->degree)
239 else if (this->degree == fe_pp_other->degree)
247 if (fe_nothing->is_dominating())
258 if (this->degree == 1)
260 if (fe_hermite_other->degree > 1)
265 else if (this->degree >= fe_hermite_other->degree)
void initialize(const std::vector< Point< 1 >> &support_points_1d)
virtual void convert_generalized_support_point_values_to_dof_values(const std::vector< Vector< double >> &support_point_values, std::vector< double > &nodal_values) const override
FE_Q(const unsigned int p)
virtual std::unique_ptr< FiniteElement< dim, spacedim > > clone() const override
virtual FiniteElementDomination::Domination compare_for_domination(const FiniteElement< dim, spacedim > &fe_other, const unsigned int codim=0) const override final
virtual std::string get_name() const override
const unsigned int degree
const std::vector< Point< dim > > & get_points() const
const Point< dim > & point(const unsigned int i) const
const std::vector< unsigned int > & get_numbering_inverse() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcNotImplemented()
static ::ExceptionBase & ExcImpossibleInDim(int arg1)
#define AssertDimension(dim1, dim2)
#define AssertThrow(cond, exc)
Expression fabs(const Expression &x)
std::vector< unsigned int > get_dpo_vector(const unsigned int degree)
@ either_element_can_dominate
@ other_element_dominates
@ neither_element_dominates
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
std::vector< Polynomial< double > > generate_complete_Lagrange_basis(const std::vector< Point< 1 >> &points)
std::string dim_string(const int dim, const int spacedim)
std::vector< Point< dim > > unit_support_points(const std::vector< Point< 1 >> &line_support_points, const std::vector< unsigned int > &renumbering)