Automatic structural component definition from a spatial geometry model M. Y. Rafiq and I. A. MacLeod Department of Civil Engineering, University of Strathclyde, John Anderson Building, 107 Rottenrow, Glasgow G40NG, UK (Received March 1987; revised August 1987)
This paper describes how the geometry files of the architecture design package GOAL are used to automatically create nodes and members for use in structural design. The main programming language used is Prolog which was found to be most suitable for this purpose.
Keywords: structural design, concept, architecture, logic programming, beam, column, slab When developing concepts for a building structure it is most useful to be able to assess the cost of a number of alternative schemes. This is normally done using simplified rules based on cost per unit area. However, with automatic procedures there is potential for much improved estimates. A technique for developing a structural frame model for this purpose is described. Having generated such a model, preliminary sizing of members can be carried out and a cost estimate established. With such a facility, the architect and structural engineer can interact to optimise the structural layout. The G O A L (1) package allows computer aided layout, energy analysis and costing of buildings. The work described here is part of a project to provide a structural design facility for GOAL. Nodes, beams, columns and slabs are defined. G O A L is written in Fortran but some of the tasks described here are more suited to implementation using a logic programming language. Hence the files created by G O A L are made accessible to a Prolog environment.
Definition of terms used For the purposes of this work the following definitions are used:
A node is a point defined by its x, y and z coordinates. A node lies in the plane of a floor slab and has a number. A beam is a horizontal member parallel to the x axis with a node at either end. A cross-beam is a horizontal member parallel to the y axis with a node at either end. A column is a vertical member with a node at each end.
Z
~
Basic data from GOAL The G O A L geometry files define a building geometry in terms of various shapes but for the work described here only rectangular 'blocks' with sides parallel to the coordinate directions are treated. Such blocks are defined as shown in Figure 1. The datum corner (with coordinates X, Y, Z) is that nearest to the origin and the side lengths in the coordinate directions are DX, D Y, and D Z respectively. Blocks are defined within a storey height (i.e D Z is a storey height) and block geometry can vary from storey to storey. A number of blocks can be put together to form a geometry description for a building (Figure 2). Each block is given a number (randomly placed).
0141-0296/88/01037-04/$03.00 ~) 1988 Butterworth & Co (Publishers) Ltd
g
m-, X
7
.._ DX = Figure I
Definition of a block
Eng. Struct. 1988, Vol. 10, J a n u a r y
37
Automatic structural component definition from a spatial geometry model. M. Y. Rafiq and I. A. MacLeod Y
9
I
Y-lost
3
I0
I
Y-start
Figure 4
13
b Figure 2 Block layout for a building: (a) ground floor plan; (b) roof plan
A slab is in the plane of a floor. It is rectangular in shape defined by its four corner nodes. Slabs may be associated with nodes between the corner nodes. The members are numbered in the order that they are created. All information is stored as ' F a c t s ' by Prolog. These facts are collectively described as the 'Database'.
Creation of nodes Initially a set ofx-gridlines and y-gridlines are established corresponding to edges of blocks. For example, Figure 3 shows x-gridlines a, b, c, d and y-gridlines e, f, g, h. The coordinates of the gridlines are stored as Prolog facts xlist(Xlist) and ylist(Ylist). When an intermediate node is required, say on a y-gridline, xlist is updated to include the x coordinate of such node thus creating a new gridline. The z coordinates at each storey level are stored in zlist(Zlist).
For each block the x coordinate of the first x-gridline (i.e. having the lowest vaue of x for the particular block) is defined as X-start (stored as xstart(N, X) where N is the block number and X is the coordinate. Similarly X-last, Y-start and Y-last are defined as shown in Figure 4. Figure 5 is a flow diagram of Process "nxc' (Node X Creation) which creates nodes along an x-gridline. The rules used in nxc are as follows: Starting with the first y-gridline at the bottom of the block and ' X D ' as the coordinate of X-start, the distance to the next x-gridline (whose coordinate is defined as ' X 2 ' ) is defined as 'D'. If D is greater than 3.0 m or if X2 is X-last then a node is created at X2. If D is less than 3.0m then this gridline is ignored and the coordinate of the next gridline is assigned to X2. If D is greater than 7.0 m then a minimum number of new nodes are created with spacing not greater than 7.0 m. When new nodes are created their coordinates are added to X-list. The former value of X2 is now assigned to X D and the process repeated up to X-last. The process is repeated at the top of the block. nxc also includes rules (not shown in Figure 5) which prevent generation of nodes with low spacing (i.e. close to 3 m).
node(N, X, Y, Z, T)
Q ®-
where I I --- X
I I
0 38
~X
Each block is taken in turn. nxc is used for the gridline corresponding to Y-start to generate nodes along the x axis on this gridline. "nyc' generates nodes along an x-gridline using the same rules as nxc. nyc is now called to generate nodes in the Y direction. Whenever such a node is created nxc is called to generate nodes along the new y-gridline. Node data is stored as Prolog facts in the form:
® ®-
Figure 3
X-start X-last Definition of start and last gridlines for a block
0
G
Initial x- and y-gridlines
Eng. Struct. 1988, Vol. 10, January
0
N is the node number X, Y, Z are node coordinates Tis the type number (1 for a corner node, 2 for a side node or 3 for an interior node). Having generated nodes for all blocks the following
Automatic structural component definition from a spatial geometry modeL" M. Y. Rafiq and I. A. MacLeod
J
-I _!
Sl
XD = X_START Create O
X2 = X Coord of next x-gridline
D= X 2 - X D
Yes
J DX2< is.3.0 Metres J not X_LAST
H
1
nodeat XD
Oonotcreate node J
J
Createo nodeotX2
J
Divide into even spaces and createD node at each space
k
XD = X2
I-
No
Yes
F
Figure 5 Nodecreation flow diagram for a block
rule is tested: A node at a higher level must have a node with the same X and Ycoordinates on the floor below it. If this rule is not satisfied then new nodes are created recursively at all levels below the node in question. These nodes are defined separately in the database as 'new nodes'. The final stage in node creation is to modify the node layout interactively. A node or line of nodes can be moved, deleted or added. To achieve this control passes to Fortran graphics routines. Control then passes back to Prolog to satisfy requests to:
is initially defined as the first node on the Y-start gridline. The 'next xnode' is the next node along the current y-gridline and the 'next__ynode' is the next node along the x-gridline corresponding to the c u r r e n t n o d e . A beam is created between the c u r r e n t n o d e and the next xnode and a cross beam is created between the c u r r e n t n o d e and the next _ynode - - see Figure 7. The beam information for example is stored as Prolog facts in the form: beam(N, N1, N2) []
[]
Delete nodes at all levels directly above a deleted node. Add nodes at all levels directly below an added node. Renumber nodes from left to right and from bottom on top.
-I
0
[]
0
[]
[]
0
[]
°t
[]
[]
'Members' of the structure are columns, beams, crossbeams and slabs as defined earlier. Each block is again taken in turn, working only at the top of the block. For columns, starting at the node above the corner node, if there is a node directly below, a column is created between the two nodes. This process of creating a column is repeated working along the y-gridlines. To define the beams and cross-beams a ' c u r r e n t n o d e '
[]
[]
[]
Figure 6 shows a typical node layout generated from the geometry of Figure 2.
Creation of structural members
0
O
[]
0
a
[]
0
[]
O
0
[]
Figure 6 Layout of nodes as generated: first floor levels; (b) nodes at roof level
[]
El
(a) nodes
[]
[]
at ground and
Eng. Struct. 1988, Vol. 10, January
39
Automatic structural component definition from a spatial geometry model. M. Y. Rafiq and I. A. MacLeod Y I I I I I i I.
Cross-beam
b i I
.
.
.
.
.
.
M I I I
I
J
X
Figure 9
Slab w i t h intermediate node, having no associated beams or cross-beams
~nd I for -10eom
Figure 7
End
i
beom N ond cro~
2 for
Beam N
I
M)
I
jI t
=X
Definition of beam and cross-beam
where N is the beam number N1 is the node number at end 1 N2 is the node number at end 2 The next xnode becomes a new current node and the process is repeated along the y-gridlines. The system tests for situations where there can be no beams or cross-beams on a gridline within a block. When all columns, beams and cross-beams have been created any of these can be deleted interactively. To create slabs a current node and associated next xnode and next__ynode are defined starting from the node above the corner node. Where there is a cross-beam from the next xnode and a beam from the next__ynode a slab is created as shown in Figure 8. The slab data is stored as: slab(N, N1, N2, N3, N4) where N is the slab number N1, N2, N3, N4 are the node numbers at the corners of the slab (see Figure 8).
N,
//
The use of Prolog greatly simplified the programming for the tasks described. Some of the procedures would have been less easy to implement in an algorithmic language. Advantages of using a logic programming language such as Prolog as compared with an algorithmic language for the processes described here are: The program text is easy to write and modify Searches of the knowledge base are easy to implement Facilities for recursion are very useful The text of the program is easy to follow by others with a basic knowledge of Prolog There is a better relationship between the program and the user in that the user can interrogate the text at run time. This is very useful for debugging a run The requirement to transfer from Prolog to Fortran in order to carry out arithmetic operations (particularly array manipulations) and graphics is a disadvantage. A programming system that included efficient arithmetic and the features of logic programming would be advantageous.
A means of automatically creating a structural model for a frame building is described. This can be used to investigate the effect of changes in the layout to allow better interaction between structural and architectural constraints.
I i
40
Use of Prolog
Conclusion
T~ Figure 8
The system caters for situations such as shown in Figure 9 where there are intermediate nodes with no associated beams or cross-beams. Where new nodes are identified members are created in their vicinity and recursively in the levels below them.
Definition of slab
Eng. Struct. 1988, Vol. 10, January
Reference 1 Sussock, H. 'GOAL: general outline appriasal of layouts, User Manual', ABACUS, University of Strathclyde, August 1982