From: kayser-herold Date: Thu, 27 Jul 2006 21:56:59 +0000 (+0000) Subject: implement hp quad constraints X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36e656260b3e2351d89f2013e1c658ab5c7bef0b;p=dealii-svn.git implement hp quad constraints git-svn-id: https://svn.dealii.org/trunk@13462 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/source/fe/fe_q.cc b/deal.II/deal.II/source/fe/fe_q.cc index c3a75618f4..fb7606b83b 100644 --- a/deal.II/deal.II/source/fe/fe_q.cc +++ b/deal.II/deal.II/source/fe/fe_q.cc @@ -559,10 +559,7 @@ hp_line_dof_identities (const FiniteElement &fe_other) const { // we can presently only compute // these identities if both FEs are - // FE_Qs. in that case, there - // should be exactly one single DoF - // of each FE at a vertex, and they - // should have identical value + // FE_Qs const FE_Q *fe_q_other = dynamic_cast*>(&fe_other); if (fe_q_other != 0) { @@ -602,10 +599,45 @@ hp_line_dof_identities (const FiniteElement &fe_other) const template std::vector > FE_Q:: -hp_quad_dof_identities (const FiniteElement &/*fe_other*/) const +hp_quad_dof_identities (const FiniteElement &fe_other) const { - Assert (false, ExcNotImplemented()); - return std::vector > (); + // we can presently only compute + // these identities if both FEs are + // FE_Qs + const FE_Q *fe_q_other = dynamic_cast*>(&fe_other); + if (fe_q_other != 0) + { + // this works exactly like the line + // case above, except that now we + // have to have two indices i1, i2 + // and j1, j2 to characterize the + // dofs on the face of each of the + // finite elements. since they are + // ordered in lexicographic order, + // the rest is rather + // straightforward + const unsigned int p = this->degree; + const unsigned int q = fe_q_other->degree; + + std::vector > identities; + + for (unsigned int i1=0; i1 > (); + } }