get_generalized_support_points() returns only a vector of size 12 ?

30 views
Skip to first unread message

LY XXXiao

unread,
Aug 16, 2022, 4:11:25 PM8/16/22
to deal.II User Group
Dear deal.ii group users,

I am debugging a program using the function 'get_generalized_support_points()' ( where has_support_points()=0, while has_generalized_support_points()=1). My FE system is defined as 'FESystem<3>        fe(FE_Nedelec<3>(0), 2);', therefore, each active cell has 12*2 dofs. So I would also expect  'get_generalized_support_points()' can return the support points with a vector of size 24 (of course the value will repeat once). However, it only has 12 valid Point<3> values, the other 12 are zero or some crazy number.

My question is, is this reasonable, or there is sth wrong with my understand on this.

For reference, attached pls find a script and its output results. To simplify the problem, the mesh has only one cell .

Best regards,
Longying & Jochen
test_generalized_support_point.cpp

Wolfgang Bangerth

unread,
Aug 17, 2022, 1:29:01 PM8/17/22
to dea...@googlegroups.com

> I am debugging a program using the function
> *'get_generalized_support_points()' *( where**has_support_points()=0,
> while has_generalized_support_points()=1*)*. My FE system is defined as
> *'FESystem<3>        fe(FE_Nedelec<3>(0), 2);'*, therefore, each active cell
> has 12*2 dofs. So I would also expect  'get_generalized_support_points()' can
> return the support points with a vector of size 24 (of course the value will
> repeat once). However, it only has 12 valid Point<3> values, the other 12 are
> zero or some crazy number.
>
> My question is, is this reasonable, or there is sth wrong with my understand
> on this.

Longying & Jochen:
the latter. You assume that the array you are reading from has 12*2 entries,
but the array really only has 12 entries and as a consequence when you output
24 elements, the latter half is accessing invalid memory.

Generalized support points are the ones at which you need to know the values
of a function to compute some kind of interpolant or projection. It is enough
to know a function (which would have 2 components) at 12 points to determine
the 24 coefficients of the interpolant because in your specific case, the two
elements that describe the two components have support points at the same
location.

Best
W.


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

LY XXXiao

unread,
Aug 23, 2022, 5:05:56 AM8/23/22
to deal.II User Group
Dear Prof. Bangerth,

Thanks a lot for your explanations. Indeed, the response was correct, is just the output a bit confusing.

Have a nice day,
Longying

Reply all
Reply to author
Forward
0 new messages