Automatic mesh generation for three-dimensional solids

Automatic mesh generation for three-dimensional solids

004%7949185 $3.00 + 00 0 1985 Pergamon Press Ltd Compurers & S~rucrures Vol. 20, No. l-3, pp 31-39. 1985 Pnnted in the U.S.A. TRENDS IN ENGINEERING ...

902KB Sizes 3 Downloads 75 Views

004%7949185 $3.00 + 00 0 1985 Pergamon Press Ltd

Compurers & S~rucrures Vol. 20, No. l-3, pp 31-39. 1985 Pnnted in the U.S.A.

TRENDS IN ENGINEERING SOFTWARE

AND HARDWARE

AUTOMATIC MESH GENERATION FOR THREE-DIMENSIONAL SOLIDS MARK

A.

YERRY*

and MARK

Rensselaer Polytechnic

S.

SHEPHARDt

Institute, Troy, NY 12181, U.S.A.

Abstract-Current developments on a fully automatic finite element mesh generator for solid finite elements is presented. The technique, referred to as the modified-octree technique, is being designed for use with computer aided design (CAD) systems employing solid geometric model representations. After giving an overview of the technique the paper emphasizes those algorithmic aspects of the mesh generator concerned with improving the resulting finite meshes and how that mesh approximates the original solid geometry. A solid modeler based on superquadrics primitives is used as a test bed for the mesh generator and to generate the example geometries meshed.

1. INTRODUCTION

proachs taken vary from those that remove one element at a time, to those that employ successive domain subdivision, to those that tessellate the domain based on a set of points placed within the domain. The approach taken here builds the finite element model employing a spatial enumeration scheme referred to as the modified-octree. As discussed in the next section, the modified-octree encoding technique was developed specifically to provide a discretization that can be quickly converted into a properly defined finite element mesh. The steps required to go from the modified-octree to a finite element model are outlined in the following section which also discusses the possible interfaces from a solid modeling system to the mesh generator. The remaining sections describe the use of the modifiedoctree mesh generator with a superquadric solid modeler.

An important component of an integrated computer aided design system is the ability to quickly carry out any required engineering analyses. Using the unique and complete representations employed by solid modeling systems [l], the computation of engineering properties such as the center of gravity or moments of inertia are fully automated. However, more advanced engineering computations, including temperature distribution or stress fields, are not automated. For general geometries these calculations are normally carried out numerically, using the approximate, but accurate, finite element analysis technique. To automate these calculations requires the automation of the finite element modeling process. This paper is concerned with the first step of that process, which is the development of a fully automatic mesh generator capable of generating finite element meshes for any valid solid given no user input past that of the geometry file output from the solid modeling program. A number of investigators [2-71 are considering techniques for the fully automatic generation of solid finite element meshes for solids. Each of these approaches takes advantage of the ability of a solid representation to answer questions related to the geometry to be modeled. These approaches represent a substantial departure from the currently popular blending function based mesh generators [8- 101, which require the subdivision of a given geometry into blocks of specific fix topologies. Because of the requirements to mesh entirely general geometries, the fully automatic generator employs various volume triangulation techniques. The ap-

2. MODIFIED-OCTREE

ENCODING

The modified-octree technique is based on the concepts of the octree encoding technique [ 11, 121, which approximates a three-dimensional object by a set of various sized cubes described in a fixed, integer coordinate system and stored in a tree structure for efficient manipulation. The major difference between an octree representation and a modified-octree representation is the addition of cut octants at the lowest level of the representation. This modification was prompted by the requirements placed on the representation to allow for its conversion into a finite element mesh [2, 13, 141. To gain an understanding for how an object is represented, by a modified-octree, a simplistic conceptual view to the generation is considered. (In actual implementation, the more efficient approaches described later are taken.) The object to

* Research Assistant, Center for Interactive Computer Graphics. t Associate, Director, Center for Interactive Computer Graphics, and Associate Professor, Civil Engineering. 31

32

M. A.

YERRY and

be represented is first placed inside a large cube defined in an integer coordinate system. The side length of the cube is equal to 2 raised to a power. Since all points are represented by the integer coordinate values, the power selected controls the number and fineness of the points that can be used. For example, if in the one-dimensional case a coordinate system of 2” is used, a line would be divided into four spans with five equally spaced points while a coordinate system of 25 the line would be divided into 32 spans with 33 equally spaced points. This original cube represents the root of a tree which is recursively subdivided as explained below. The original cube is subdivided into eight subcubes, referred to as octants. Each octant is then tested to see if it is inside the object (full), outside the object (empty), or if only part of it is in the object (partial). Full and partial octants are checked to see if they are at their minimum level as prescribed by the mesh gradation information associated with the geometry. If a full or partial octant is not at its minimum level it is subdivided and tested as indicated above. Partial octants at the minimum level are flagged as one of three types of cut octants. To maintain the integer tree, octants are cut using only specific points on the octant. In particular, any of the corner and midedge points can be used in the definition of surface cut octants. Edge cut octants use these points plus the midface points, while vertex cut octants can also use the centroid of the object. In the actual implementation of the technique, the modified-octree is generated by first determining the surface octree. The surface octree is that portion of the modified-octree that represents all external surfaces of the objects. The remainder of tree which represents the interior octants is very quickly determined by flagging neighbors to the inside of the boundary octants. Figure 1 shows the

M. S.

SHEPARD

modified-octree representation for a quarter sphere. 3. MESH GENERATION

and its storage tree

FROM MODIFIED-OCTREES

Although a valid discretization of a three-dimensional object, the modified-octree does not represent a valid finite element mesh of the object. Two additional sets of operations are carried out to go from the modified-octree to a finite element mesh [2]. The first is the converting of the complete and cut octants in the modified-octree into a valid finite element mesh topology. The second is to take the element mesh from the integer coordinate system of the modified-octree to the real coordinate system of the object. This is done by repositioning nodal locations to improve both the geometric approximation of the object and the shape of elements. A major consideration in the development of an automatic mesh generator for use with solid modeling systems is the interface between the two systems. Since the internal representations employed by solid modelers are complex and vary significantly from modeler to modeler, the modified-octree mesh generator has been designed to interface to the solid modeler using a set of specific interface functions. The interface functions are general in nature, thus allowing the mesh generator to be interfaced to another modeler by developing the small number of interface routines for that modeler. Two separate approaches, using different sets of interface routines, have been identified for carrying out the mesh generating operations. To make the definition of the modified-octree as efficient as possible the boundary octants are placed in the tree first. Therefore, the basic approach for generating the modified-octree requires knowledge of the surface of the model. Listed below are two approaches for carrying out the process of mesh generation by the modified-octree technique. 3.1 Method 1. Box tracking approach Table 1 shows the basic steps to the generation of a modified-octree mesh based on the box tracking approach. For each step the table indicates what portion of the mesh generation process is carried out and indicates the information to be transferred between the mesh generator and solid model during that step. This method is refered to as the box tracking method because it builds the surface octree by passing boxes to the solid modeler and requesting information about those object boundaries within that box. The function of the first step is to start the process of generating the modified-octree by placing any one of the surface octants in the tree. This can be done by searching, via the IN/OUT test?. for

LaPlan

Storage

Tree

Fig.

1. Modified-octree

wew

0 Empty

Octani

m Parilal

octant

0 cut

Octant

0 Full

Octant

of quarter

sphere.

t For purposes of this paper, the IN/OUT test operates in the following manner. A point in space is passed to the solid modeler interface routine which will then indicate if the point is inside the object or outside the object and also return the mesh gradation for that point.

Automatic mesh generation for three-dimensional Table 1. Modified-octree

Step* number la

Step objective

solids

33

mesh generation using the box tracking approach.

Data sent to solid modeler

Information to be returned by solid modeler

Operations carried out

Define first surface octant

None

A point on the surface with its tolerance level.

First, uncut, surface octant is place in the tree.

Define first surface octant

Points in space

Define the vertex, edge and surface information to produce the entire surface modifiedoctree

(1) Points in space (2) Boxes in space

(1) A box bounding the object of interest. (2) IN/OUT determination plus point tolerance level. (I) IN/OUT determination plus point tolerance level. (2) k;;saey of vertices

Complete the modifiedoctree Prepare for finite element meshing

None

(3) Intersection of any edges with passed box plus labels to indicate which intersections are the same. None

Points in the integer coordinate system are tested until a surface octant is identified. It is then placed in the tree. Track around the surface of the model by testing possible surface octants next to a known surface octant. Octants found to be on the surface are stored in the tree. Process is continued until surface modified-octree is complete.

None

None

5

Generate mesh topology

None

None

6a

Placing edge nodes at final location

List of ordered nodes belonging to an edge

A parametrization of the edge that can be worked with.

Placing edge nodes at final locations

List of ordered nodes belonging to an edge

A set of locations for nodes on the edge.

Place surface nodes at final location

Points near a surface and the direction of motion for the point

Intersection of the line defined by the point and direction with the surface.

Points near a surface

8a

Place surface nodes at final location Placing interior nodes

Surface location nearest to the given location. None

8”;;

Placing interior nodes

Points on interior model

or lb

2

3 4

7a

None

IN/OUT determination.

A tree traversal to fill interior octants. Tree traversals to insure a maximum of one level difference between octants. Break modified-octree into a valid finite element mesh. The parametrized edge will have nodes placed along edge using weighting parameters associated with curve tolerances. Nodes placed by modeler and not adjusted for mesh gradation. An iterative algorithm is run that repositions nodes to improve element aspect ratios and has them pulled back to the surface. Iteration is stopped when element shapes change very little in a step. Same as 7a Apply smoothing algorithm. Apply smoothing algorithm and check to insure points remain on the interior of model.

* A step number listed with both an a and b entry indic:ates that either can be used.

this octant or, if given any surface point with its tolerance, specifying the surface octant. The second step is the heart of defining the modified-octree (with respect to communications with the solid model). The surface modified-octree is generated by starting from a known surface octant and testing neighboring octants to see if they are part of the surface. This process is continued until the surface

octree is complete. The interface required to carry out this step includes testing points with the IN/ OUT test to determine surface octants and then passing the surface octants to the modeler to determine the existance of any edges or vertices in the octant. For a given octant, or box, passed to the modeler, the information to be returned to the mesh generator includes the location of any vertex

M. A. YERRV and M. S. SHEPARD

34

in that box, plus the location of any intersections of edges with the surface of the box. In addition to intersection locations, information about the edges is required to determine if an edge goes through the box or terminates at a vertex inside the box. The steps remaining for generation of the integer domain mesh, steps 3, 4. and 5, require no additional information from the solid model and are explained in the next section. Placing nodes on the edge, step 6, can be carried out in one of two ways. The simplest, is to pass a list of points that belong on an edge to the modeler, with the points ordered going from one end of the curve to the other. The modeler would then be required to return a list of points on the edge near each of the initial points. In the simplest case. these points are the original intersection points given by the box test, and are thus, already available to the modified-octree mesh generator. The second approach, which is preferred since it allows for a more controlled placement of edge nodes, requires that, given the same list of points, the modeler returns a parameterized representation of the edge. The nodes can then be placed on the edge using a weighting scheme. The placing of surface nodes in their final, smoothed position on the surface. step 7. requires that the modeler place a point near the surface on the surface. In the simplest case, a location of the point near the surface and a direction of pull is sent to the modeler which is required to return the intersection of the line and the surface. In the second case only the location of a point near the surface is

given and the modeler is to return the surface location nearest it. Mesh finalization by smoothing interior points, step 8, requires no communication past possible IN/ OUT checks of points. 3.2 Method 2. Boundaryfile approach This approach assumes the existance of a boundary file that can be accessed by the mesh generator. Table 2 shows the basic steps of the generation of a modified-octree mesh based on this approach. The first step in this approach is to represent the edges and vertices in the modified-octree. This is done by going thru the boundary file loading each edge into the tree. It is assumed here that edge tolerance information is available with this file. During this step all the edge and vertex octants are identified. The surface modified-octree is then completed, step 2, using the IN/OUT test to specify the cuts on the edge and vertex octants and checking the various neighboring octants to determine the surface octants. The process of checking candidate surface octants is continued until the surfaces are completely represented. Steps 3, 4, and 5 complete the generation of the integer domain mesh. Placing nodes on the edge will again access the boundary file to obtain a parameterized representation of each edge so the nodes along the edge can be positioned using a weighting scheme. Surface node and interior node placement is the same as in the box tracking procedure.

Table 2. Modified-octree mesh generation using a boundary tile. Step number

Step objective

Data sent to solid modeler

Information to be returned by solid modeler

1

Set up edge and vertex information in the modified-octree

None

Edge descriptions with tolerance information.

2

Define entire surface modified-octree

Points in space

IN/OUT information with tolerance level.

Complete modifiedoctree Prepare for finite element meshing Generate mesh topology Placing edge nodes at final locations

7 8

Placing surface nodes Placing interior nodes

None

Operations carried out Discretize edges in terms of given tolerance levels. The vertices and edges are then represented in modified-octree. Track around the surface of the model testing possible surface points next to known surface octants. Surface modified-octree is complete.

Same as boxed tracking approach-Table

I

Same as boxed tracking approach-Table

1

Same as boxed tracking approach-Table I The edge description of None Step (I) will be used to place nodes along edges using weighting parameters associated with curve tolerances. Same as boxed tracking approach-Table I Same as boxed tracking approach-Table I

35

Automatic mesh generation for three-dimensional solids

A comparison of the two inte~acing approaches indicates a preference for the boundary file approach. Since most modelers either employ boundary representations or build a boundary file, it can be used in most cases. The first approach is preferred only in those cases where a boundary file is not available. 4. MODIFIED-OCTREE

MESH GENERATION FOR

SUPERQUADRIC MODELS

This section discusses how the modified-octree technique is used to generate finite element models for objects modeled using our in-house superquadrics modeler 11.51.The superquadrics modeler employs a CSG approach in which three-dimensional objects are constructed out of individual primitive shapes combined using regularized Boolean operations [l]. In the superquadrics modeler the prim-

itives are defined by a quad& surface fl51. Such primitives are extremely powerful, but their complex nature makes the definition of a complete boundary representation based on them difficult. Thus, a box tracking approach is being used for interfacing of the geometric model and the finite element mesh generator. 4. I

Modified-octree generation

In creating the modified-octree, a linked list data structure is used to track the surface from octant to o&ant. When the individual octants are examined their cutting points are determined and the data for the octant placed in the linked list, thus using the tree to construct the modified-octree. This method only requires IN/OUT tests for the corner nodes of the octants that might represent part of a surface. The remainder of the tree (the complete

afgorlthm

GENERATE AIODIFIED-OCTREE begln (*GEN.MOCTRE*) “START WITH A POINT ON THE SURFACE” PERFORM IN/OUT TEST ON POINT SET UP OCTANT AROUND POINT USING TOLERANCE RETURNED DETERhllNE THE STATUS OF THE OCTANT EDGE, VERTEX OR SURFACE CALL INSERT 0CT “INSERT THE CUT OCTANT INTO THE TREE” DETERMIYE TtiE FACES OF THE OCTANT THAT THE SURFACE INTERSECTS PUSH TO STACK FOR EACH FACE THE POIMTS USED Oh FACE, AND A POINT ii-4 NEIGHBORING OCTANT STACK PTR = NUhlBER OF FACES WITH SURFACE INTERSECTIONS tihtle STACK PTR = 0 do begln PULL INFORhlATION FROM STACK STACK.PTR = STACK PTR _ 1 SET UP OCTANT AND PERFORM IN/OUT TESTS REO~~IRED DETERhlltiE THE STATUS OF THE OCTANT CALL INSERT,OCT tf OCTANT YOT PREVIOUSLY DEFNIVED then begin DETERhllNE THE FACES OF THE OCTANT THAT THE SURFACE INTERSECTS PUSH TO STACK FOR EACH FACE THE POINTS USED Oh: FACE, AND A POINT IN KEIGHBORING OCTANT STACK PTR = STACK PTR + NUhlBER OF FACES kiTH IhTERSECTlONS end end end I*CEN hlOcTRE*I

algor&tlhm

INSERT OCTAhT INTO MODIFIED-OCTREE begIn (*INSERT OCT*) SET UP INFORhlATlON FOR ROOT OCTANT - STATUS AND POINTERS TO CURRENT OCTANT = ROOT OCTANT FOUND = 0 \*h!le FOUND = 0 do begrn If CURRENT OCTANT = INSERT OCTANT then begln FObND = 1 INSERT THE OCTANT TO DEFINE IN THIS POSITION end else begln If STATUS OF CURRENT OCTANT IS UNDEFlhED then begin DEFIYE STATUS TO BE INCOMPLETE SET UP POINTERS TO SONS end If STATUS OF CURREh’T OCTANT IS CUT then begon DEFINE STATUS TO BE INCOMPLETE DEFINE CUT OCTANTS FOR THE NEXT LEVEL DO\\% IN THE TPEE end “LOCATE THE SON OF THE CURRENT OCTANT THAT CONTAINS THE INSERT OCTANT AND hlAKE THIS SON THE NEW CURRENT OCTANT” CURRENT OCTANT = SOk THAT CONTAINS THE INSERT OCTANT end end end

SONS

Fig. 2. Algorithm for creating modified-octree. (a) Main algorithm; (b) inserting into tree.

36

M. A.

YERRY

and M. S.

octants) can be identified by using the data structure to locate the inside neighbors of the cut octants. Constructing the modified-octree in this manner makes efficient use of the tree to significantly reduce the amount of time necessary to generate the model. Figure 2 shows the basic algorithm used for constructing the modified-octree in this manner. As mentioned previously there are three types of cut octants used to represent the boundary of the object being meshed. The simplest are the surface cut octants used to define all boundary octants not containing edges or vertices. These octants are delined using the IN/OUT information of the eight corner points and twelve midedge points [2]. Knowledge of which points are inside the object and which are outside, along with an additional IN/ OUT test of a specific point, are used to define a number of possible one, two, and three planar cut octants. To represent edges and vertices in the final mesh and to reduce the possibility of poorly shaped elements. it is necessary to represent the edges and vertices directly in the modified-octree. This requires two additional cut octant types: the edge cut octant and the vertex cut octant. Figure 3 shows some typical examples for all of the cut octant types.

SHEPARD

Portion

Resulting

of Octant

lnslde

Object

Cut Octant

Fig. 4. Edge cut octant definition.

Surface

Cut Octant

Examples

Edge Cut Octant Examples

Vertex Cut Octant Examples

Fig. 3. Some cut octants.

To properly represent the edges in the superquadrics solid modeler, the box tracking method is used. This method was chosen because the superquadrics solid modeler does not supply a boundary tile. The presence of an intersection is determined using linear approximations to the intersection curves of the faces of the octant with the superquadrics primitives (Fig. 4). This technique identifies all intersections if the size of the octant is chosen properly. Once the intersection is identified the closest integer point on the face is used to represent the edge intersection for the edge cut octant. The remainder of the edge cut octant is defined in the same way that the surface cut octants are defined (Fig. 4). 4.2 Integer

mesh generation

In order to make it easier to obtain a finite element mesh from the modified-octree, a second modification to the tree is carried out to limit the difference in level to one between octants sharing edges or faces. This means that the ratio of side lengths of any two neighboring octants can be one or two. Checking the difference in level between neighboring octants is quickly carried out during a tree traversal. Whenever this restriction is violated, the larger of the two octants is subdivided into its

Automatic mesh generation for three-dimensional Potnt Under Conslderatlon

2

J

Fig. 5. Proper connections

to remove tetrahedra.

eight suboctants. The checking process is carried out until the one level difference requirement is satisfied throughout the tree. The integer finite element mesh is now generated by applying a tetrahedronizing algorithm on an octant by octant basis with proper consideration given to all midedge nodes and mesh patterns on previously meshed octants. The procedure takes a approach similar to that of Wordenweber [6], in that it employs a surface triangulation followed by a volume tetrahedronization. The first step in the process is to triangulate the surface of an octant. Each face polygon can contain up to six edges. The mesh pattern for the face is chosen by examining the position of the oc-

solids

37

tant that the polygon is on. Using this i~ormation a surface mesh that will be compatible with neighboring octants is obtained. The surface mesh is described by its nodal connectivity, triangles, and nodal triangle connectivity (triangles connected to a node). The tetrahedronizing algorithm works with a description of the current surface mesh, the tetrahedra created and the nodal tetrahedra connectivity (tetrahedra connected to a node). The algorithm is run recursively starting with a loop over the nodal connectivity. If any nodes have only three connections, a tetrahedron is removed whenever the four nodes are not coplanar. If there are no nodes with three connections the first node with four connections is examined. Two tetrahedra are formed if they can meet the following criteria: (1) The connected nodes have connections with each other as illustrated in Fig. 5; (2) the connection between nodes 1-3 and 2-4 of Fig. 5 does not intersect the current surface mesh or any existing tetrahedra and (3) the tetrahedra that will be removed do not intersect with one another. If the tetrahedra are formed, the surface mesh and connectivity arrays are updated and the first step is repeated. If nodes cannot be found with just

algorithm. AUTOMATIC TETRAHEDRONIZATION begln (*AUTO.TETRA*) ‘START WITH SURFACE MESH DESCRIBED BY TRIANGLES, NODAL AND TRIANGLE COSNECTIVITIES” while THERE ARE NODES WITH MORE THAN TWO CONECTIONS do begin begrn for NODE = 1 until LAST , do begtn If hODE HAS THREE CONNECTIONS then begln (*THREE CONh*) REMOVE TETRAHEDRON IF NODES ARE COINECTED PROPERLY AND THE TETRAHEDROh HAS hONZER0 VOLUME UPDATE SURFACE MESH INFORMATION end (*THREE COhNf) end end If NO TETRAHEDRA ARE FORMED IN THREE CONN then begln for NODE = 1 until LAST , do begln If NODE HAS FOUR CO’iNECTIONS then begin (*FOUR CONN*l REMOVE TWO TETRAHEDRA BY CONNECTING NODES IF NODES ARE COhNECTED PROPERLY, THE CONhECflON MADE DOES NOT INTERSECT ANY EXISTING TRIANGLES OR TETRAHEDRA, THE TETRAHEDRA DO NOT INTERSECT WITH EACH OTHER AND THE TETRAHEDRA FORMED HAVE NONZERO VOLUhlES UPDATE THE SURFACE MESH INFORMATION end (*FOUR.CONN*) end If NO TETRAHEDRA ARE FORMED IN FOUR.CONN then begin for NODE = 1 until LAST , do begrn If NODE HAS FIVE CONNECTIONS then begin (*FIVE CONN*) REMOVE THREE TETRAHEDRA BY MAKING TWO CONNECTIONS IF NODES ARE CONNECTED PROPERLY, THE CONNECTIONS MADE DOES NOT INTERSECT ANY EXISTING TRIANGLES OR TETRAHEDRA, THE TETRAHEDRA DO NOT INTERSECT WITH EACH OTHER AND THE TETRAHEDRA FORMED HAVE NONZERO VOLUMES UPDATE THE SURFACE MESH INFORMATlON end t*FIVE.CONN*) end end end end (*AUTO.TETRA*)

Fig. 6. Tetrahedronizing algorithm.

M. A. YERRYand M. S.

SHEPARD

four connections, the first node with five connections is found. The node is removed in a manner similar to one with four connections. Here, two valid connections have to be made in order to remove three tetrahedra. After this node is removed the first step is repeated. The mesh is complete when there are no nodes with three or more connections. Figure 6 gives the basic steps in the automatic tetrahedronizing algorithm. Figure 7 shows the integer mesh for a dumbell shaped object that consists of two spheres and a cylinder. 4.3 I%#eshjk.zlization

Fig. 7. Integer mesh for dumbell. (a) Hidden line view; (b) complete mesh.

To finalize the mesh the vertex, edge, and surface nodes must be moved from their geometry approximating current positions in the integer coordinate system to the proper locations in a real coordinate

Fig. 8. Finalization of the mesh for dumbell. (a) Pulling to edges and surface; (b) smoothing the surface; (c) smoothing the interior; (d) final mesh.

Fig. 9. Final mesh for the superquadric plane. (a) Complete mesh; (b) hidden line view; (c) hidden line view.

Automatic mesh generation for three-dimensional

system. In addition, the nodes are repositioned to improve the shape of the resulting elements. Mesh smoothing is carried out in a hierarchic manner, with the edge nodes positioned first, the surface nodes smoothed second and the interior nodes smoothed last. When done in this manner, the final positions of the nodes depends on the element topology and the position of the edge nodes. Edge nodes are placed along the edges using a three-parameter weighting function based on the tolerance levels active along edges. After the edges are smoothed a modified Laplacian 121 based on a measure of surface arc length is used for the surface nodes. The main difftculty here is maintaining the surface. An iterative algorithm that iterates on both arc length and placement on surface is used. In this first implementation, the arc length is approximated by the chord length. In this procedure the boundary nodes in the integer coordinate mesh are first pulled to the surface and the distance between nodes measured. The nodes are then repositioned, one at a time, using a modified Laplacian and then pulled back to the surface. This iterative process is continued until the change in nodal positions is acceptably small. Interior points are then smoothed using a modified Laplacian. Figure 8 shows the steps required to finalize the mesh for the dumbell shaped object. Figure 9 shows several views of the final mesh for the front half of a superquadric airplane. This model is made up of four primitives one for each wing, one for the body, and a last one for the nose. 5.

CONCLUDING REMARKS

The modified-octree mesh generator is well suited for the fully automatic generation of threedimensional objects defined by solid modeling systems. The technique can be applied in either an interactive or batch environment. In an interactive environment, the user can apply and change mesh gradation information generating meshes at desired steps until he is satisfied with the resulting mesh. In batch environment it could be linked with adaptive analysis techniques to insure the accuracy of the resulting meshes. Acknowledgements-The

authors would like to express their appreciation to the Engineering Mechanics Department of the General Motors Research Laboratories for supporting the development of the modified-octree technique. In addition the authors would like to acknowledge

solids

39

the support of the National Science Foundation under grant ISP-20240, the Alcoa Foundation and the CICG Industrial Associates for their general support in automated finite element modeling. An opinions, findings and conclusions in this paper are those of the authors and do not necessarily reflect the views of the National Science Foundation.

REFERENCES

1. A. A. G. Requicha and H. B. Voelcker, Solid modeling: A historical summary and contemporary assessment. IEEE Comput. Graph. Appl. 3,9-24 (1982). 2. M. A. Yerry and M. S. Shephard, Automatic threedimensional mesh generation by the modified-octree techniaue. ht. J. Numer. Meth. E~P~P 20.I 196% .,1990 (i984). 3. J. C. Cavendish, D. A. Field and W. H. Frey, An approach to automatic three-dimensional finite element mesh generation. Znt. J. Numer. Meth. Engng (to be published). 4. T. C. Woo and T. Thomasma, An algorithm for generating solid elements in objects with holes. Comput. Structures 18, 333-342 (1984). 5. M. L. C. Sluiter and D. C. Hansen, A general purpose automatic mesh generator for shell and solid finite elements. Comput. Engng 3, 29-34 (1982). 6. B. Wordenweber, Volume triangulation. CAD Group Document No. 110. Universitv of Cambridge. Computer Laboratory, Corn Exchange Street, Cambridge, CB2 3QG, England, 1980. 7. Nguyen, Van-Phai, Automatic mesh generation with Itetrahedron element. Znt. J. Numer. Meth. Ennna II 18. 273-289 (1982). 8. W. A. Gordon and C. A. Hall, Construction of curvilinear coordinate systems and applications to mesh generation. Znt. J. Numer. Meth. Engng 4, 461-477 (1973). 9. W. A. Cook, Body oriented (natural) coordinates for generating three-dimensional meshes. Znt. J. Numer. Meth. Engng

8, 27-43 (1974).

10. R. B. Haber, M. S. Shephard, J. F. Abel, R. H. Gallagher and D. P. Greenberg, A general two-dimensional finite element preprocessor utilizing discrete transtinite mapping. Znt. J. Numer. Meth. Engng 19, 1015-1044 (1981). 11. C. L. Jackins and S. L. Tanimoto, Octrees and their use in the representation of three-dimensional objects. Comput.

Graph. Image Process.

14, 249-270

(1980).

12. D. Meagher, Geometric modeling using octree encoding. Comput. Graph. Image Process. 19, 129-147 (1982).

13. M. A. Yerry and M. A. Shephard, A modilied-quadtree approach to finite element mesh generation. iEEE Comput.

Graph. Appl. 3, 39-46 (1983).

14. M. S. Shephard and M. A. Yerry, Approaching the automatic generation of finite element meshes. Comput. Mech. Engng 1, 49-56 (1983). 15. A. H. Barr, Superquadrics and angle-preserving transformations, IEEE Comput. Graph. Appl. 1, 11-23 (1981).