[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Getfem-users] Bug? in enumerating DOFs on region and faces
From: |
Renard Yves |
Subject: |
Re: [Getfem-users] Bug? in enumerating DOFs on region and faces |
Date: |
Mon, 19 Jul 2010 14:29:58 +0200 |
User-agent: |
Dynamic Internet Messaging Program (DIMP) H3 (1.1.2) |
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 <address@hidden> 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 < address@hidden >
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