Finding the polynomial degree of a shape function associated with a degree of freedom?

54 views
Skip to first unread message

Ross Kynch

unread,
Oct 29, 2014, 7:46:58 PM10/29/14
to dea...@googlegroups.com
Hi all,

I'm trying to create a function which will reorder the degrees of freedom using the polynomial order of the DoF's shape function. In particular, I'm interested in FE_Nedelec, which I know has hierarchical shape functions.

Is there a function which returns the polynomial degree of the shape function associated with a local (or global) degree of freedom?

Something like fe.get_degree(local_dof_index) or dof_handler.get_degree(global_dof_index) ?

Thanks

Ross

Guido Kanschat

unread,
Nov 1, 2014, 7:16:22 AM11/1/14
to dea...@googlegroups.com
Dear Ross,

this is something we had not considered, in particular since most of the current finite elements only have shape functions of the highest degree.


I think, this should go into the white paper on github.

Best,
Guido

--
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 dealii+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Prof. Dr. Guido Kanschat
Interdisziplinäres Zentrum für Wissenschaftliches Rechnen
Universität Heidelberg
Im Neuenheimer Feld 368, 69120 Heidelberg

Wolfgang Bangerth

unread,
Nov 5, 2014, 11:31:44 PM11/5/14
to dea...@googlegroups.com
Like Guido already said, nothing like this exists right now. It wouldn't be
very difficult to implement in the FE classes (e.g., a member function
fe.get_polynomial_degree(local_dof_index)). Want to give it a try? You could
also just implement it for the FE_Nedelec for now, and one could later make
the function virtual and abstract in the base class.

Best
W.


--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@math.tamu.edu
www: http://www.math.tamu.edu/~bangerth/

Guido Kanschat

unread,
Nov 6, 2014, 12:54:52 AM11/6/14
to dea...@googlegroups.com


>
> Like Guido already said, nothing like this exists right now. It wouldn't be very difficult to implement in the FE classes (e.g., a member function fe.get_polynomial_degree(local_dof_index)). Want to give it a try? You could also just implement it for the FE_Nedelec for now, and one could later make the function virtual and abstract in the base class.
>

I think the goal is making things faster. A virtual function called for each degree of freedom may not be an option then.

Ross Kynch

unread,
Nov 6, 2014, 11:58:46 AM11/6/14
to dea...@googlegroups.com
Thanks for the replies, both.

Yes, the idea is to improve the speed so a pre-computed list is probably best. So far I've got a renumbering which splits off the lower order edge DoFs and then creates 3 blocks made up of the higher order edges, faces and cells. This results in usable block preconditioner (direct solve for the lower order, then jacobi for the higher order blocks) for GMRES, but I was thinking that splitting by degree may improve things further.

I suppose I could create a list of orders for each DoF, which could be populated with the constructor of FE_Nedelec. It's very easy to do for the edge-based DoFs, but the ordering gets a little more complicated once you look at the faces due to the splitting between "vertical" and "horizontal" face shape functions. It may be easier to fill the list as the shape functions are generated. Can either of you tell me where exactly to look for those? - is it all done in the generalized support routines?

Ross

Wolfgang Bangerth

unread,
Nov 6, 2014, 4:06:47 PM11/6/14
to dea...@googlegroups.com

Ross,

> Yes, the idea is to improve the speed so a pre-computed list is probably best.

That certainly sounds reasonable. As mentioned before, since for now it is
specific to that element, just put it into FE_Nedelec.


> I suppose I could create a list of orders for each DoF, which could be
> populated with the constructor of FE_Nedelec. It's very easy to do for the
> edge-based DoFs, but the ordering gets a little more complicated once you look
> at the faces due to the splitting between "vertical" and "horizontal" face
> shape functions. It may be easier to fill the list as the shape functions are
> generated. Can either of you tell me where exactly to look for those? - is it
> all done in the generalized support routines?

It's the Nedelec element -- nobody remembers how it's done :-(

Ross Kynch

unread,
Nov 6, 2014, 6:17:07 PM11/6/14
to dea...@googlegroups.com
Ok, I'll take a look at it (and hopefully figure out the construction of the shape functions while I'm at it) when I get some free time - I'm completely bogged down writing an inverse solver at the moment.

R

Reply all
Reply to author
Forward
0 new messages