Data Structure: Lowest Order BDM Element

We explain degree of freedoms for the lowest order BDM element on tetrahedrons. The required data structure can be constructured by

  [elem2dof,dofSign,face] = dof3BDM1(elem)

Created by Ming Wang, at Dec 31, 2010.

TODO: Modify dof3BDM1docscript1 and dof3BDM1docscript2 to suit for BDM1 element.

Copyright (C) Long Chen. See COPYRIGHT.txt for details.

Contents

Local Labeling of DOFs

dof3BDM1docscript1

There are 3 dofs on each face, hence 12 dofs on the tetrahedral. Here [1 2 3 4] are local indices of vertices.

For a triangulation consisting of several tetrahedrons, all local faces are collected and the duplication is eliminated to form faces of the triangulation. Therefore the global indices of faces is different with the local one. elem2dof(:,1:12) records the mapping from local to global indices.

display(elem2dof)
elem2dof =

     1    12     5    20    11     4

Orientation of Edges

dof3BDM1docscript2

The face [i,j,k] is orientated in the direction such that i<j<k, where i,j,k are global indices. The faces formed by local indices may not be consistent with this orientation. Therefore dofSign is used to indicate the consistency.

The nodal indices in the left figure is local while that in the right is the global one. The local direction and global direction of edges is also indicated by different edge vectors.

display(elem2dof)
display(dofSign)
elem2dof =

     1     2     3     4     5     6


dofSign =

     1     1    -1    -1    -1    -1

An Example

node = [-1,-1,-1; 1,-1,-1; 1,1,-1; -1,1,-1; -1,-1,1; 1,-1,1; 1,1,1; -1,1,1];
elem = [1,2,3,7; 1,6,2,7; 1,5,6,7; 1,8,5,7; 1,4,8,7; 1,3,4,7];
[elem2dof,dofSign,face] = dof3BDM1(elem);
figure(1); clf;
showmesh3(node,elem,[],'FaceAlpha',0.25);
view(-30,10);
findedge3(node,edge);
findelem3(node,elem,[1 3]');
display(elem2dof);
display(dofSign);
elem2dof =

  Columns 1 through 9

          13           5           3           1          31          41          21          37          49
          32           3          11           2          14          39          29          20          50
          17          11           9           8          35          47          27          44          53
          54           9          12          10          18          45          48          28          36
          16          12           6           7          52          30          24          43          34
          15           6           5           4          33          42          23          40          51

  Columns 10 through 12

          23          39          19
          21          47          38
          29          45          26
          27          30          46
          48          42          25
          24          41          22


dofSign =

    1    1   -1    1    1    1   -1    1    1    1   -1    1
    1    1   -1    1    1    1   -1    1    1    1   -1    1
    1    1   -1    1    1    1   -1    1    1    1   -1    1
    1    1   -1    1    1    1   -1    1    1    1   -1    1
    1    1   -1    1    1    1   -1    1    1    1   -1    1
    1    1   -1    1    1    1   -1    1    1    1   -1    1