unsigned int FEInterface::n_dofs_at_node(const unsigned int dim, const FEType& fe_t, const ElemType t, const unsigned int n) { #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS if ( is_InfFE_elem(t) ) return ifem_n_dofs_at_node(dim, fe_t, t, n); #endif const Order o = fe_t.order; fe_with_vec_switch(n_dofs_at_node(t, o, n)); libmesh_error(); return 0; }
void FE<Dim,T>::dofs_on_edge(const Elem* const elem, const Order o, unsigned int e, std::vector<unsigned int>& di) { libmesh_assert(elem); libmesh_assert_less (e, elem->n_edges()); di.clear(); unsigned int nodenum = 0; const unsigned int n_nodes = elem->n_nodes(); for (unsigned int n = 0; n != n_nodes; ++n) { const unsigned int n_dofs = n_dofs_at_node(elem->type(), static_cast<Order>(o + elem->p_level()), n); if (elem->is_node_on_edge(n, e)) for (unsigned int i = 0; i != n_dofs; ++i) di.push_back(nodenum++); else nodenum += n_dofs; } }