Dear Roman,
Of course, I was a wrong in my last message: the hermite shape functions corresponding to the derivative is zero on segment ends ! So, with the policy that only dof associated with nonzero shape functions on a boundary is declared on that boundary, the declaration in the Hermite element on the segment was correct ! But, for the other Hermite elements (on 2D or 3D or for Argyris element) what is implemented does not follow the policy. In fact all the derivative dof are declared on a face when the corresponding finite element node is on that face. Weither or not the shape function is zero on that boundary. So may be, you are true, this is perhaps a small Pandora box ! At least the things have to be clarified. for instance, the P0 element declare its unique dof on each face, because the shape function is nonzero on each face of the element. Conversely, the P1 nonconforming element declare each of its dof on only one face even though all of its shape functions are nonzero on all the faces. I agree that it is more correct to declare the derivative dof of the Hermite element on the segment on the corresponding faces. May be the right policy would be to say that a dof is on a face if and only if the corresponding node (when existing) is on that face. What is your opinion on that ? Yves. > Posted by Yves Renard on July 19, 2010 - 11:05: > > > Dear Roman, > > The policy for which a dof is on a face or not is rather clear : A > dof should be declared on a face if the corresponding shape function > is nonzero on that face. Surprisingly, the belonging on faces of the > derivative dof of the segment hermite element was explicitely > disabled (getfem_fem.cc lines 1471 and 1477). This was not correct, > of course and I don't remember why it is so ! > > Thank you for this bug report ! > > Yves. Roman Putanowicz <[email protected]> a écrit : > Dear Yves, > > I think I have found a bug in accessing DOFs on regions and faces. > > The setup is as follows : single segment mesh with HERMITE fem. > I create two mesh regions (for the left end node and for the right end node). > > The output of the demo program (sent in attachment) is as follows: > > ----------------------------------- > $ ./dofs_of_region > DOFs on the left end : [0] > DOFs on the right end : [2] > DOFs on convex : 0 1 2 3 > DOFs on face 0 of convex : 2 > DOFs on face 1 of convex 0 > ----------------------------------- > > DOFs on convex are listed properly as 0 1 2 3. > I would expect DOFs on left end region as well as dofs on face 1 of > the convex > to be [0,1] and not just [0]. So it seems that the dofs for > derivative degrees > of freedom are missing. > > I have looked at code for dal::bit_vector mesh_fem::basic_dof_on_region() > but I do not see there provision for non-Lagrangian elements. > > I can check if the fem of a convex is Lagrangian but what should be done > if it is not? > > I am afraid that this can be a little pandora box :( but hope that this is > not) (in particular I have in mind the code for setting Dirichlet boundary > condition on Hermite elements). > > In attachment there is mentioned test code to reproduce the bug. > > Regards > > Roman > -- > Roman Putanowicz, PhD < [email protected] > > Institute for Computational Civil Engng (L-5) > Dept. of Civil Engng, Cracow Univ. of Technology > www.l5.pk.edu.pl, tel. +48 12 628 2569, fax 2034 > _______________________________________________ Getfem-users mailing list [email protected] https://mail.gna.org/listinfo/getfem-users
