[Gmsh] Numbering of higher order elements

Martin Vymazal martin.vymazal at vki.ac.be
Wed Jul 16 17:33:17 CEST 2014


Hi Aleksejs,

 I don't have experience with this, but I think you should google for 
'serendipity element'.

Incomplete elements can also be used in 3D - typically hexahedra, but I 
suppose you could do the same with tetrahedra as well.

Best regards,

 Martin Vymazal


On Wednesday 16 of July 2014 16:41:01 Aleksejs Fomins wrote:
> Dear GMSH,
> 
> Martin, you helped me a lot, thank you :)
> 
> 
> I have another question. There seem to be some higher order triangles in
> the manual that are called "incomplete", in the sense that they have
> less than usual DoF's by not putting any DoF's on the faces. I have 2
> questions:
> 
> 1) What does it mean from interpolatory point of view - are triangles
> interpolated only using a subset of the lagrange polynomials required to
> satisfy a given order?
> 
> 2) Is this only a 2D concept, or can such triangles be integrated into
> tetrahedral mesh as well? At the moment I do not see that being possible
> since there are no incomplete tetrahedra in the description,
> but I just wanted to check
> 
> Cheers,
> Aleksejs
> 
> On 07/16/2014 04:17 PM, Benedikt Oswald wrote:
> >> From: Martin Vymazal <martin.vymazal at vki.ac.be>
> >> Subject: Re: [Gmsh] Numbering of higher order elements
> >> Date: 16 Jul 2014 16:15:47 GMT+2
> >> To: gmsh at geuz.org
> >> 
> >> Hi Aleksejs,
> >> 
> >> Below is a long explanation of what section 9.3.2 ('High Order Elements')
> >> in the GMSH reference manual means according to my understanding. I'm
> >> not a GMSH developer so please use the information below at your own
> >> risk.
> >> 
> >> I will give you an example for tetrahedra. In the following, I suppose
> >> that
> >> the local numbering of DOFs starts from 0.
> >> 
> >> You have to apply recursively the following one rule in order to
> >> enumerate
> >> your degrees of freedom:
> >> 
> >> Labeling all DOFs processes all topological sub-entities of the reference
> >> element going from dimension 0 to higher dimensions.
> >> 
> >> This means that:
> >> 
> >> 0) First you number all vertices: 0,1,2,3
> >> 1) Then you number all remaining degrees of freedom on edges (1D
> >> entities)
> >> 
> >> 	of the tetrahedron:
> >> 	1a) edge 0-1 will have interior DOFs 4, ..., 3 + (P-1), going from
> >> 	vertex 0
> >> 	
> >> 		towards vertex 1;  P is polynomial order of your reference element
> >> 		
> >>        1b) edge 1-2 will have interior DOFS 3+ (P-1) + 1, ..., 3 +
> >>        2*(P-1)
> >>        1c) edge 2-0
> >>        1d) edge 3-0
> >>        1e) edge 3-2
> >>        1f)  edge 3-1
> >> 
> >> At this point, all vertices and interior nodes on edges have assigned
> >> numbers.
> >> 
> >> The next step is numbering the faces (2D entities) of the tetrahedon.
> >> Since
> >> each face already has numbers assigned, you only need to label interior
> >> face nodes. The interior itself is in fact a triangle of lower order, so
> >> you recursively apply the rule I mentioned above: label all vertices of
> >> this lower order triangle, then all edges. If there's anything left in
> >> the interior, repeat.
> >> 
> >> The faces are processed in the following order:
> >> 
> >> 2a) 0, 2, 1, where 0, 2 and 1 are vertices of the face
> >> 2b) 0, 1, 3
> >> 2c) 0, 3, 2
> >> 2d) 3, 1, 2
> >> 
> >> Now you have assigned numbers to all nodes on the 'skin' of your
> >> high-order
> >> tetra, and you can apply all of the above to the lower-order tetrahedron
> >> which is left inside.
> >> 
> >> For more information, look in the source code: Geo/MTetrahedron.h
> >> 
> >> What helped me a lot for code testing (I also needed to read GMSH files
> >> with high-order elements), was to generate a high-order mesh with a
> >> single element. Then I looked at what the *.msh file contains and
> >> compared with what I saw in the GUI. Don't forget that GMSH numbers the
> >> nodes in msh files starting from 1.
> >> 
> >> Best regards,
> >> 
> >>    Martin Vymazal
> >> 
> >> On Wednesday 16 of July 2014 13:16:53 Aleksejs Fomins wrote:
> >>> Dear GMSH developers,
> >>> 
> >>> I am currently trying to write a .MSH reader application for our finite
> >>> element code. I would like to read higher order curvilinear elements
> >>> (triangles and tetrahedrons). For that I would like to know the exact
> >>> ordering of nodes within a higher order element for each element order
> >>> (1 to 5).
> >>> 
> >>> In section 9.3.1 of the reference I found exactly what I needed for
> >>> orders 1 and 2. Unfortunately, I am unable to understand the exact
> >>> ordering mechanism for other orders from section 9.3.2.
> >>> 
> >>> Can you please help me with this?
> >>> 
> >>> Regards,
> >>> Aleksejs Fomins
> >> 
> >> _______________________________________________
> >> gmsh mailing list
> >> gmsh at geuz.org
> >> http://www.geuz.org/mailman/listinfo/gmsh