next up previous contents index
Next: Fortran Functions. Up: Data Structures Previous: Overview.

The Triangulation.

 

In this section, we define the data structures used to specify the domain tex2html_wrap_inline3668 as a triangulation.   Let tex2html_wrap_inline3828 denote the triangulation, consisting of NTF  triangles tex2html_wrap_inline3834 . Let the triangulation tex2html_wrap_inline3828 have NVF  vertices tex2html_wrap_inline3842 and NBF  edges tex2html_wrap_inline3848 . Triangles may have curved edges, which are approximated by arcs of circles. The centers of the circles are given by tex2html_wrap_inline3850 .  Curved edges may lie either on the boundary or interior of the region tex2html_wrap_inline3668 .

   figure229
Figure: Clockwise, from upper left: example domain; triangle numbers; vertex numbers; curved edges; edge numbers.

For example, consider the circle of radius one with a crack along the positive x-axis. This domain can be triangulated using 8 triangles, 10 vertices, and 10 edges, 8 of which are curved, as illustrated in Figure gif. Vertices tex2html_wrap_inline3858 and tex2html_wrap_inline3860 have the same (x,y) coordinates, but tex2html_wrap_inline3858 is ``above'' the crack, and tex2html_wrap_inline3860 ``below.'' Similarly, edge tex2html_wrap_inline3868 is the top of the crack, while edge tex2html_wrap_inline3870 is the bottom. The ordering of vertices, triangles, and edges is arbitrary.

The arrays VX  and VY  are of length NVF, and contain as their I-th entries the x and y coordinates of tex2html_wrap_inline3888 , illustrated for this example in Table gif. If a triangle has a curved edge,   that edge is approximated by a circular arc passing through the endpoints of the edge, with the center of the circle located at one of the points tex2html_wrap_inline3890 . Because there are generally two such arcs for every pair of endpoints, the shorter arc is taken to be the correct edge; therefore, one should specify curved edges that subtend (strictly) less than tex2html_wrap_inline3892 of arc; tex2html_wrap_inline3894 is a reasonable upper bound. The centers for the various circles used in specifying curved edges are given in the arrays XM  and YM  of length NCF, which contain as their I-th entries the x and y coordinates of the center tex2html_wrap_inline3912 . The data for our example is shown in Table gif.

 

I 12345678910
VX(I) 01 tex2html_wrap_inline3918 0 tex2html_wrap_inline3920 -1 tex2html_wrap_inline3920 0 tex2html_wrap_inline3918 1
VY(I) 00 tex2html_wrap_inline3918 1 tex2html_wrap_inline3918 0 tex2html_wrap_inline3920 -1 tex2html_wrap_inline3920 0
XM(I)0
YM(I)0
Table: Data structures for a triangulation.

The VX, VY, XM and YM arrays. NVF=10 and NCF=1.
I 1 2 3 4 5 6 7 8 9 10
IBNDRY(1,I) 1 2 3 4 5 6 7 8 9 10
IBNDRY(2,I) 2 3 4 5 6 7 8 9 10 1
IBNDRY(3,I) 0 1 1 1 1 1 1 1 1 0
IBNDRY(4,I) 2 2 2 2 2 2 2 2 2 1
IBNDRY(5,I) 2 0 0 0 0 0 0 0 0 1

The IBNDRY array. NBF=10.
I 1 2 3 4 5 6 7 8
ITNODE(1,I) 1 1 1 1 1 1 1 1
ITNODE(2,I) 2 3 4 5 6 7 8 9
ITNODE(3,I) 3 4 5 6 7 8 9 10
ITNODE(4,I) 1 1 2 2 3 3 4 4

The ITNODE array. NTF=8.

 

To simplify data entry, we provide the routine CENTRE for computing the center of a circle given three points on its boundary. CENTRE    is called using the statement:

Call CENTRE( X1, Y1, X2, Y2, X3, Y3, XC, YC )

Here (X1,Y1) and (X2,Y2) are the endpoints of an arc of the circle, and (X3,Y3) is a third point on the arc (e.g., the midpoint). CENTRE returns the center of the circle in (XC,YC).

A given triangle tex2html_wrap_inline4000 is specified by giving an accounting of its three vertices, and by specifying an integer label or tag. Such labels are provided strictly for the convenience of the user, and can be used to identify differing regions or material properties associated with the element. The array ITNODE  is a tex2html_wrap_inline4006 integer array whose I-th column contains information about tex2html_wrap_inline4010 . The first three entries of ITNODE contain the three vertex numbers of triangle tex2html_wrap_inline4010 . ITNODE(J,I)=K, for tex2html_wrap_inline4018 , means (VX(K),VY(K)) is the J-th vertex of tex2html_wrap_inline4010 . The ordering of the vertices of a given triangle is arbitrary and independent of the other triangles.gif The fourth entry of column I of ITNODE contains the label for triangle I. In our example, we choose to label each element by the quadrant in the Euclidean plane in which it lies. The ITNODE array for our example is shown in Table gif.

The array IBNDRY  is a tex2html_wrap_inline4040 integer array whose I-th column contains information about tex2html_wrap_inline4044 . The first two entries of IBNDRY contain the indices of the endpoints of the interval (pointers to the VX and VY arrays). IBNDRY(J,I)=K, tex2html_wrap_inline4054 , means (VX(K),VY(K)) is an endpoint of tex2html_wrap_inline4044 . Ordering of vertices is arbitrary.gif The third entry of the I-th column contains the index for the circle center for the edge (pointer to the XM and YM arrays). IBNDRY(3,I)=K means (XM(K),YM(K)) is the circle center for edge tex2html_wrap_inline4044 . If the edge is straight, IBNDRY(3,K) should be set to 0.

The fourth entry defines the boundary type for edge tex2html_wrap_inline4044 . There are four possibilities for edge type. If IBNDRY(4,I)=2, then tex2html_wrap_inline4044 is a boundary edge on which Dirichlet boundary conditions are imposed. If IBNDRY(4,I)=1, then tex2html_wrap_inline4044 is a boundary edge on which natural boundary conditions are imposed. If IBNDRY(4,I)=0, then tex2html_wrap_inline4044 is an internal edge. There are two reasons to include internal edges in a triangulation. First, if the internal edge is curved, it must be specified in IBNDRY in order to be treated properly. Second, the set tex2html_wrap_inline4092 in equation (gif) is taken as the set edges defined in IBNDRY. Thus internal edges which are part of tex2html_wrap_inline4092 must be defined in IBNDRY. An important restriction on internal edges of a triangulation is that they must lie on an internal interface. That is, the two triangles sharing tex2html_wrap_inline4044 must have different labels as their fourth entries in ITNODE.

The fourth type of edge is a linked edge. Linked edges occur only in pairs. If tex2html_wrap_inline4044 and tex2html_wrap_inline4106 are a pair of linked edges, then IBNDRY(4,I)=-J and IBNDRY(4,J)=-I. Linked edges tex2html_wrap_inline4044 and tex2html_wrap_inline4106 must be geometrically congruent. That is, tex2html_wrap_inline4044 must be mapped to tex2html_wrap_inline4106 using only a translation, an orthogonal rotation, and a refection. Continuity of the solution tex2html_wrap_inline4120 and weak continuity of tex2html_wrap_inline4122 is imposed on linked edge pairs. Thus if tex2html_wrap_inline4044 and tex2html_wrap_inline4106 are boundary edges, this is equivalent to imposing periodic boundary conditions.

The fifth entry in column I of IBNDRY contains an integer label for the edge, similar to the fourth entry of ITNODE; this label can be used to distinguish uniquely a particular edge, or to associate some property with the edge. The IBNDRY array for our example is shown in Table gif.

In our example, we impose Dirichlet boundary conditions on the outer boundary of the circle, and also along the top of the crack, and Neumann boundary conditions on the bottom of the crack. The outer boundary of the circle is labeled 0, the top of the crack 2, and the bottom of the crack 1.

In the case of a singular Neumann problem (e.g., tex2html_wrap_inline4136 , tex2html_wrap_inline4138 , tex2html_wrap_inline4140 , and tex2html_wrap_inline4142 in (gif)), the solution u is determined only up to an arbitrary constant. To make such a solution unique, the user may select a distinguished vertex where u will be specified. The parameter IDBC , where tex2html_wrap_inline4152 , denotes the vertex number. In other situations, one should set IDBC=0.


next up previous contents index
Next: Fortran Functions. Up: Data Structures Previous: Overview.

Randolph E. Bank
Fri Apr 4 12:02:05 PST 1997