Can anyone help me with that matter?

Best, Samuel

On Monday, August 7, 2017 at 11:48:39 AM UTC+2, [email protected] wrote:
>
> I have tried the following implementation (for 2D computations only 
> hp_line_dof_identities has nonempty constraints):
>
> template <int dim, int spacedim>
> std::vector<std::pair<unsigned int, unsigned int> >
> FE_FaceP<dim, spacedim>::
> hp_line_dof_identities (const FiniteElement<dim, spacedim> &fe_other) 
> const
> {
>   // this element is continuous only for the highest dimensional bounding 
> object
>   if (dim !=2)
>     return
>       std::vector<std::pair<unsigned int, unsigned int> > ();
>   else
>     {
>       if (const FE_FaceP<dim,spacedim> *fe_p_other
>           = dynamic_cast<const FE_FaceP<dim,spacedim>*>(&fe_other))
>         {
>           std::vector<std::pair<unsigned int, unsigned int> > identities;
>
>           for (unsigned int i=0; i<std::min(this->dofs_per_face, 
> fe_p_other->dofs_per_face); ++i)
>             identities.emplace_back (i, i);
>
>           return identities;
>         }
>       else if (dynamic_cast<const FE_Nothing<dim>*>(&fe_other) != nullptr)
>         {
>           // the FE_Nothing has no degrees of freedom, so there are no
>           // equivalencies to be recorded
>           return std::vector<std::pair<unsigned int, unsigned int> > ();
>         }
>       else if (fe_other.dofs_per_face == 0)
>         {
>           // if the other element has no elements on faces at all,
>           // then it would be impossible to enforce any kind of
>           // continuity even if we knew exactly what kind of element
>           // we have -- simply because the other element declares
>           // that it is discontinuous because it has no DoFs on
>           // its faces. in that case, just state that we have no
>           // constraints to declare
>           return std::vector<std::pair<unsigned int, unsigned int> > ();
>         }
>       else
>         {
>           Assert (false, ExcNotImplemented());
>           return std::vector<std::pair<unsigned int, unsigned int> > ();
>         }
>     }
> }
>
> so it just adds identities up to the minimum number of shape functions 
> involved. But somehow it doesn't work as expected (in my model computation 
> I still see the skeleton solution not agreeing on both sides of faces with 
> hanging nodes). Do you see some apparent mistake? Am I wrong in assuming 
> that the shape functions are ordered by ascending polynomial degrees?
>
> I have appended the output of a testcase (I just adapted the one which D. 
> Arndt wrote for FE_FaceQ here: https://github.com/dealii/dealii/pull/4577)
>
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to