Professional Documents
Culture Documents
by
Name
Roll No.
1.
94 CE 31
Jhaman Lalchandani
Supervised by
Prof. Mumtaz Ali Memon
Mr. Rasool Bux Mahar
Department of Civil Engineering
Mehran University of Engineering and Technology, Jamshoro
Submitted in partial fulfillment of the requirements for the degree of
Bachelor of Civil Engineering
July, 2000
DEDICATION
This work is dedicated to Leibniz, Gottfried Wilhelm, (1646-1716), German philosopher,
mathematician, and statesman, regarded as one of the supreme intellects of the 17th
century.
Leibniz was considered a universal genius by his contemporaries. His work encompasses
not only mathematics and philosophy but also theology, law, diplomacy, politics, history,
philology, and physics.
ii
CERTIFICATE
This is to certify that the work presented in this thesis titled FINITE
ELEMENT PROGRAM IN AUTOCAD VBA FOR WINKLER FOUNDATION is
entirely written by the following students themselves under the supervision of Prof.
Mumtaz Ali Memon and Mr. Rasool Bux Mahar.
Name
Roll No.
1.
94 CE 60
2.
Jhaman Lalchandani
94 CE 31
Thesis Supervisors
External Examiner
Chairman
Department of Civil Engineering
Date :________________
iii
ACKNOWLEDGEMENTS
The authors wish to express their gratitude to Mr. M. Soomar Khatri, Chairman, Dept. of
Civil Engineering, for the help and cooperation he rendered at every stage of the project.
The authors are indebted to Prof. Mumtaz Ali Memon and Mr. Rasool Bux Mahar, the
thesis supervisors, for the advice and help in preparing the thesis.
The authors acknowledge, with thanks, the time spared and the help and expert advice
given by Dr. Ghulam Hussain Sidiqui.
In the last, but not the least, the authors are extremely grateful to Mr. Parvaiz Ahmed
Shaikh, Mr. Fazlullah Solangi, and Mr. Mohammad Muhajir for lending their books for a
considerable length of time.
iv
Abstract
In conventional method for design of combined footings, the soil-structure interaction is
usually neglected because it requires a lot of calculations. Instead, the footings are designed
by assuming that they are rigid. However, the demerit of this assumption is that the
computed bending moments are higher than actual, which means that larger amounts of
reinforcement steel are to be provided than required. This soil-structure interaction
phenomena, was first studied by Winkler (1867) by assuming it as a beam (structure) on
elastic springs (soil) placed continuously underneath it. Even though, this Winkler
Foundation Model gives much better approximation of soil pressure, it did not gain much
popularity because the problem becomes statically indeterminate and requires lots of
calculations.
The authors have developed a finite element program BEAMDEZ in AutoCAD VBA,
which is based on Winkler Foundation Model and computes design parameters (bending
moment, shear, soil pressure, deflection, rotation, etc at all node points in the discretized
footing) and draws shear, bending moment, soil pressure, and deflection diagrams in
AutoCAD. The program also considers soil-structure separation and elastic range of soil. It
is illustrated through examples that bending moments obtained by this method are smaller
than those obtained by conventional method and therefore the reinforcement design requires
about 30% less steel than by conventional method.
TABLE OF CONTENTS
LIST OF SYMBOLS
INTRODUCTION
1.1 BACKGROUND
1.2 AIM
1.3 FOOTINGS
1.4 DESIGN OF FOOTINGS
1.4.1 Design of Combined Footing by Conventional (Rigid) Method
1.4.2 Design of Combined Footing by Finite element method
1.5 NUMERICAL SOLUTIONS
1.6 FINITE ELEMENT METHOD
1.7 HISTORICAL COMMENTS
1
2
3
4
5
5
6
8
9
10
10
11
12
12
13
13
14
15
15
15
16
16
16
17
17
17
17
17
18
19
19
19
20
20
21
21
vi
21
22
22
22
23
23
23
24
24
24
25
25
COMBINED FOOTINGS
26
26
26
26
27
27
28
28
29
29
30
31
31
32
32
32
32
33
33
33
34
34
35
35
36
37
4.1
4.2
4.3
4.4
4.5
4.6
4.7
37
37
38
38
39
41
42
ELASTIC FOUNDATION
WINKLER MODEL
LIMITATIONS OF WINKLER MODEL
OTHER MODELS
MODULUS OF SUBGRADE REACTION
PREVIOUS EFFORTS BY RESEARCHERS TO EVALUATE THE VALUE OF K
NEW RESEARCH FOR EVALUATION OF THE VALUE OF K
vii
4.7.1 Augmentation of k
4.7.2 Vallabhans Iterative Procedures
4.7.3 Non-Dimensional Parameters For k
4.8 DISPLACEMENT METHOD
4.9 BASIC DIFFERENTIAL EQUATION
4.10 GENERAL SOLUTION OF THE DIFFERENTIAL EQUATION
4.11 BOUNDARY CONDITIONS OF AN UNLOADED MEMBER
4.12 STIFFNESS MATRIX OF A MEMBER ON ELASTIC FOUNDATION
4.13 APPLICATION OF THE FINITE ELEMENT METHOD
4.14 GENERAL RELATIONS
4.15 DEVELOPMENT OF THE ELEMENT A MATRIX
4.16 DEVELOPMENT OF THE ELEMENT B (OR AT) MATRIX
4.17 DEVELOPMENT OF ELEMENT S MATRIX
4.18 DEVELOPMENT OF THE ELEMENT ESAT AND EASAT MATRICES
4.19 DEVELOPMENT OF THE GLOBAL MATRIX ASAT
4.20 ADDING THE NODE SPRINGS K TO ASAT
4.21 DEVELOPMENT OF P MATRIX
4.22 BEAM WEIGHT
4.23 BOUNDARY CONDITIONS
42
43
43
43
43
45
48
49
67
67
71
72
72
75
76
77
78
78
78
PROGRAM
80
5.1 CAD
5.2 CAE
5.3 AUTOCAD 2000
5.3.1 AutoCAD ActiveX Technology
5.4 RAPID APPLICATION DEVELOPMENT (RAD)
5.5 VISUAL BASIC
5.6 VBA
5.7 AUTOCAD VISUAL BASIC FOR APPLICATIONS (VBA)
5.7.1 VBA implementation in AutoCAD
5.7.2 Strengths of AutoCAD ActiveX and VBA Together
5.7.2.1 Speed
5.7.2.2 Ease of Use
5.7.2.3 Windows Interoperability
5.7.2.4 Rapid Prototyping
5.7.2.5 Programmer Base
5.7.3 Embedded and Global VBA Projects
5.8 FLOW CHART OF THE PROGRAM
5.9 PROGRAM CODE
Code: Beamdimensions
Code: boundary
Code: Elements
Code: Exporter
Code: Filer
Code: loadmom
Code: memberlen
Code: saver
Code: starter
viii
80
80
81
81
82
82
83
83
84
85
85
85
85
85
85
85
87
88
88
96
106
143
145
147
153
158
160
USER GUIDE
162
6.1 INSTALLATION
6.2 LOADING THE PROGRAM
6.3 RUNNING THE PROGRAM
6.4 ENTERING BEAM DATA
6.5 DISCRETIZING THE BEAM
6.6 ENTERING ELEMENT LENGTHS
6.7 APPLIED LOADS AND MOMENTS
6.8 BOUNDARY CONDITIONS
6.9 RESULTS
6.10 CURSOR ICONS
162
162
163
164
165
165
165
166
167
170
EXAMPLE PROBLEMS
171
Example problem 1:
Example problem 2:
Example problem 3:
Example problem 4:
Example problem 5:
171
181
194
209
224
APPENDICES
227
REFERENCE
230
INDEX
233
ix
LIST OF SYMBOLS
= Poissons ratio
= slope, rotation
= multiplier
= deflection
= percentage of steel
= area ratio
= deformation
= pressure
= change in settlement or deformation
= increment of contact pressure
H = settlement of foundation
s = Poissons ratio of soil
a = depth of Whitneys block
A = area
Ab = area of steel bar
Ag = gross cross-sectional area of concrete
As = area of steel
b = width
B = width
C = compression force
d =depth of footing
db = dia. of bar
E = modulus of elasticity
EI = bending rigidity
Es = modulus of elasticity of soil
fc' = characteristic 28-day compressive strength of concrete
fy = characteristic strength of steel
I = identity matrix
ks = modulus of subgrade reaction
L = length
Ld = development length
LF = load factor
M = bending moment
Mn = nominal moment
Mu = ultimate (factored) moment
N = number of elements
P = applied load
Pu = ultimate load
Pw = working load
q = bearing pressure
qa = allowable bearing pressure
Qcon = constant soil pressure
x
xi
CHAPTER ONE
INTRODUCTION
1.1 Background
Conventionally the combined footings are designed by assuming that they are rigid. This
assumption allows the engineer to consider the soil pressure as linear. Then the footing
dimensions are set in such a way that the centroid of area (in plan) of footing coincides
with the resultant of column loads. This gives rise to uniformly distributed soil pressure
on the entire footing area, thus the combined footing for any number of columns can be
considered as an inverted uniformly loaded continuous beam with all reactions (column
loads) known. These assumptions render the problem as statically determinate, thus
simplifying the design process. However, the demerit of these assumptions is that higher
than actual bending moments are obtained, which implies that larger than required
amounts of steel are to be provided. This becomes uneconomical because steel is an
expensive item.
In practice, a footing cannot be made so much rigid that its bending becomes negligible
because this would require a great depth of concrete, which will again render it
uneconomical. Due to this bending, deflection is not same at all points; for example,
deflection will usually be more under the columns than at midspan between them. Since
soil pressure will be higher for greater deflections, these non-uniform deflections will
give rise to non-uniform soil pressure under the footing. This phenomena, known as
soil-structure interaction, was first studied by Winkler in 1867 by assuming it as a beam
(structure) on elastic springs (soil) placed continuously underneath it. Even though this
model (called Winkler Foundation Model) gave much better approximation of soil
pressure, it did not gain much popularity because the problem became statically
indeterminate and required a lot of calculations.
2
In present age, when tools like matrix displacement method (which does not distinguish
between determinate and indeterminate structures) and finite element method has been
developed and high-speed digital computers are commonly available, the Winkler
Foundation Model can be solved easily and quickly. Still many engineers design the
combined footings by conventional method because the commercial software packages of
finite element analysis are rather too expensive.
1.2 Aim
Authors have developed a finite element program BEAMDEZ in AutoCAD VBA with
the aim that it should be easily available to anyone who requires it. This program
computes design parameters (bending moment, shear, soil pressure, deflection, rotation,
etc at all node points of the discretized footing) based on the theory of
beam-on-elastic-foundation and draws the shear, bending moment, soil pressure, and
deflection diagrams in AutoCAD. Soil reaction is modeled as springs under the footing
(Winkler Foundation Model). The program also considers soil-structure separation (soil
pressure is zeroed out at such nodes to prevent tension in soil) and elastic range of soil (a
certain deflection after which soil pressure becomes constant). Deflections and rotations
are obtained using the stiffness matrix. As the stiffness of the footing is considered, the
bending moment obtained is more realistic and lower in magnitude than the one
computed by the conventional (rigid) method. This results in economical design of the
footing because lesser amount of reinforcement steel is required.
Every effort has been taken to make the program user friendly. Data entry and editing
have been made very easy. Data files can be saved by the program in binary format and
results can be exported to text format. The shear force, bending moment, deflection,
rotation, and soil pressure diagrams can be obtained readily in AutoCAD and can be
manipulated using AutoCADs rich set of tools. These diagrams can be printed easily and
saved in various file formats supported by AutoCAD for use in other programs such as
word processors, etc.
3
A two column combined footing and a three column combined footing have been
designed by both the conventional (rigid) method and the finite element method to
illustrate the economy achieved by the later method.
1.3 Footings
Footings are structural members used to support columns and walls and transmit their
load to the soil. Footings act as transition-members to distribute the higher pressure of
loads coming from the superstructure to larger areas of soil in such a way that
Types of footings:
Different types of footings may be used to support building columns or walls. The most
common types are as follows:
1. Continuous or Wall footings are used to support structural walls that carry loads from
other floors, or to support nonstructural walls. They have limited width and a
4
continuous length under the wall. Wall footings may have one thickness, be stepped,
or have a sloped top.
2. Isolated or single footings are used to support single columns. They may be square,
rectangular, or circular. Again, the footing may be of uniform thickness, stepped, or
have a sloped top. This is one of the most economical types of footings and it is used
when columns are spaced at relatively long distances.
3. Combined footings usually support two or more columns in a line. The shape of the
footing in plan may be rectangular or trapezoidal, depending on column loads.
Combined footings are used when two columns are so close that single footings
cannot be used, or when one column is located at or near a property line.
4. Cantilever or strap footings consist of two single footings connected with a beam or a
strap and support two single columns. They are used when one footing supports an
eccentric column and the nearest adjacent footing lies at quite a distance from it. This
type replaces a combined footing and is more economical.
5. Raft or mat foundation consists of a single large footing, usually under the entire
building area, and supports the columns of the building. They are used when
5
1.4.1 Design of Combined Footing by Conventional (Rigid) Method
In conventional method, the basic assumption is that the footing is a rigid member so that
the soil pressure can be taken as linear. In order to make the soil pressure uniform, the
length of footing is set in such a manner that the resultant of loads coming from columns
acts at the centroid of the footing area. If the soil pressure is uniform and the resultant of
applied loads acts at the centroid of the footing then the settlements will also be uniform.
This assumption is approximately true if the soil is homogeneous and footing is rigid.
However, in actual practice, it is very difficult to make a rigid footing because the
thickness required would have to be large. Bowles suggests that the success of the
designs based on the assumption of a rigid member has probably resulted from a
combination of soil creep, concrete stress transfer, and overdesign.
Depth of the footing is obtained from two-way action or wide-beam shear (whichever is
greater). Reinforcement steel is designed using the selected depth and bending moment
diagram.
1.4.2 Design of Combined Footing by Finite element method
Because the footing cannot be made rigid in actual practice, therefore the settlements will
not be uniform or linear if the column spacing is large. For one thing, the more heavily
loaded columns will cause larger settlements, and thereby larger subgrade reactions, than
the lighter ones. Also, since the continuous strip or beam between the columns will
deflect upward relatively to the nearby columns, this means that the soil settlement, and
thereby the subgrade reaction, will be smaller midway between columns than directly at
the columns. This is shown schematically in figure 1.2. In this case, the subgrade
reaction can no longer be assumed as uniform. A reasonably accurate but fairly complex
analysis can then be made using the theory of beams on elastic foundations.
Structure/soil interaction problems may be simplified as a beam (structure) on springs
(soils), which is a one dimensional (1D) problem.
Even though Winkler had studied the beam on elastic springs in 1867 but the method was
not used in common practice because of the enormous amount of calculations involved.
Because of easy availability of computers and development of finite element procedures
6
in present times, the beam-on-elastic-foundation analysis can be made easily by assuming
it as a beam on springs (or Winkler foundation) and using a computer program.
Due to the overdesign involved in rigid method, current practice tends to modify the
design by beam-on-elastic-foundation analysis. Now the footing is considered as a
beam or flexural member. Modified moments (which tend to be lower in magnitude)
are obtained using finite element analysis using a computer program.
Thus, an
economical design can be obtained as will be shown later using the finite element
program BEAMDEZ.
7
equations relating various quantities of interest. To determine the characteristics of fluid
flow, finding the concentration of pollutants in sea water or in the atmosphere, stress
distribution in complex structures subjected to a variety of loads, and simulating weather
in an attempt to understand and predict the mechanics of formation of tornadoes and
thunder storms are a few examples of many important practical problems. To derive the
governing equations for these problems is not unduly difficult, but to solve these by exact
methods of analysis is a formidable task. In such cases, the numerical methods are
employed as an alternative means of finding approximate solutions. Among these the
finite-difference method, variational methods such as the Ritz and Galerkin methods, and
the finite-element method have been frequently used.
In the finite-difference approximation of a differential equation, the derivatives in the
equations are replaced by difference equations, which involve the values of the solution at
discrete mesh points of the domain. The resulting discrete equations are solved, after
imposing the boundary equations for the values of the solution at the mesh points. Even
though the finite-difference method is simple in concept, it suffers from several
disadvantages. The most notable are the inaccuracy of derivatives of the approximated
solution, the difficulties in imposing the boundary conditions along non-straight
boundaries, the difficulty in accurately representing geometrically complex domains, and
the inability to employ non-uniform and nonrectangular meshes.
In the variational solution of differential equations, the differential equation is put into an
equivalent variational form, and then the approximate solution is assumed to be a
combination (cjj) of given approximation functions j.
determined from the variational form.
disadvantage that the approximation functions for problems with arbitrary domains are
difficult to construct.
The finite element method overcomes the difficulty of the variational methods because it
provides a systematic procedure for the derivation of the approximation functions. The
method is endowed with two basic features, which account for its superiority over other
competing methods. First, a geometrically complex domain of the problem is represented
8
as a collection of geometrically simple subdomains called finite elements. Second, over
each finite element the approximation functions are derived using the basic idea that any
continuous function can be represented by a linear combination of algebraic polynomials.
The approximation functions are derived using concepts from interpolation theory, and
are therefore called interpolation functions. Thus, the finite element method can be
interpreted as a piecewise application of the variational methods (e.g., Ritz and weightedresidual methods), in which the approximation functions are algebraic polynomials and
the undetermined parameters represent the values of the solution at a finite number of
preselected points called nodes, on the boundary and in the interior of the element.
9
in the finite element method are the equilibrium of forces, compatibility of displacements,
and stress-strain relationships and it essentially relies on the matrix methods and computer
programming for the solution of problems. The method is quite versatile and can be
applied to very complex problems.
The finite element method is the best approach available for the numerical analysis of
continua. The theory requires discretization of a given structure into a network of finite
elements and implementation of the analysis on a digital computer.
CHAPTER TWO
Typical individual
member
Typical
individual
member
Typical nodal
point
(a)
(b)
Examples of such structures are the continuous beams, trusses, and the
multistory frames. Engineers have long appreciated that the analysis of these skeletal
10
11
structures can be carried out by first considering the behavior of each individual element
independently and by then assembling the elements together in such a way that
equilibrium of forces and compatibility of displacements are satisfied at each nodal point.
An example of such a process is the analysis of a continuous beam by the slope-deflection
method where the relationship between the moments and the rotations within each
individual span of the beam is first established, the spans then being combined together
such that equilibrium of moments and compatibility of rotations are satisfied at the points
of interconnection.
However, when a structure comprised of many members, such as a continuous beam
containing many spans or a multistory frame containing many bays, is being analyzed,
this type of approach can become very laborious and can involve the solution of a large
number of simultaneous equations. Because of this, in the past much research effort has
been devoted to developing analytical techniques, based on a physical appreciation of the
structural behavior, which would reduce the amount of work required to complete an
analysis, and would not require the direct solution of many simultaneous equations. A
prime example of such a technique is the Hardy Cross Moment Distribution Method, in
which, instead of setting up the simultaneous equations explicitly as in the slopedeflection method, the solution is accomplished in a series of convenient steps.
With the advent of the electronic digital computer, however, engineers realized that the
solution of a large number of simultaneous equations no longer posed an insurmountable
problem and this prompted a return to fundamental methods of analysis, such as the
slope-deflection method. These methods, since they involve a number of repetitive steps,
are particularly suitable for automatic computation, and they have been formulated to take
maximum advantage of the capabilities of a digital computer. These so-called matrix
methods for analyzing skeletal structures have been firmly established for a number of
years.
12
sheeting on aircraft wings.
terminology of the stiffness method has been incorporated into the finite element method.
To understand the principles of the finite element method, it is helpful first to consider
briefly the basis of the stiffness method of structural analysis.
ii.
iii.
Mixed method
The stiffness and flexibility methods differ in the order in which the two basic conditions
of joint (or nodal) equilibrium and compatibility are treated. In the stiffness method, the
displacement compatibility conditions are satisfied and the equations of equilibrium set
up and solved to yield the unknown nodal displacements. In the flexibility method, the
conditions of joint equilibrium are first satisfied and the equations arising from the need
for compatibility of nodal displacements solved to yield the unknown forces in the
members. In addition to these two basic approaches, in recent years a mixed formulation
involving both approaches has been also used.
displacements at the end of each member are derived. These are called local stiffness
matrices. All of the calculations described so far are performed on isolated members, but
in the third stage the stiffness matrix of the entire structure is compiled using equilibrium
of forces on each joint and compatibility of displacements of member ends at each joint.
13
Displacement boundary conditions are imposed at appropriate joints and these render the
overall stiffness matrix non-singular.
displacements and from these and the local stiffness matrices the load effects on each
member are determined. The method has a number of features that facilitate automatic
handling. Local stiffness matrices of members and joint loading from members can be
determined by procedures that need take no account of the overall structural
configuration.
structure can be assembled automatically from the local stiffness matrices of members
using only a specification of the members connected to each joint. Standard solution to
linear simultaneous equations can be used to determine joint displacements. A single
computer program can be derived to solve all skeletal structures from a description of
member loading, member properties, structural topology, and the displacement boundary
conditions.
14
calculations require truncation, leading to approximate results.
Furthermore,
discretization of differential equations by the method of finite differences has the primary
disadvantage that boundary conditions are difficult to satisfy. A secondary disadvantage
is that accuracy of the results is usually poor.
Typical nodal
point
Typical nodal
point
finite element
Typical triangular
finite element
(a)
(b)
15
involves extensive computations but, because of the repetitive nature of these
computations, it is ideally suited for programming for a solution using a computer.
2.8 Fundamental requirements
Whatever the cause of the internal forces and deformations in a structure, three basic
conditions must be observed. These are:
i.
ii.
iii.
The first condition merely requires that the internal forces balance the external applied
loads. Although the use of this condition alone is sometimes sufficient to enable a
statically determinate problem to be solved, the conditions of compatibility and material
behavior then being automatically satisfied, for redundant structures it yields insufficient
information to enable a complete analysis to be conducted. In these circumstance the
conditions of compatibility must be invoked separately. Compatibility requires that the
deformed structure fits together, i.e. that the deformations of the members are compatible.
Before this condition can be used, it is necessary to know the relationship between load
and deformation for each component of the structure.
problems of linear elasticity reduces to the use of Hookes Law, is the third condition.
The use of these three conditions is a fundamental requirement of any method of
structural analysis.
16
The shape of elements can be line elements (spring and beam elements), triangular,
rectangular, tetrahedral, or brick elements, etc (figure-2.3). The vertices of the elements
are known as node points or simply nodes.
Beam (line)
Spring
Tetrahedron
Triangle
Hexahedron (brick)
Quadrilateral
Axisymmetric
17
2.9.5 Accuracy of Solution
In general, the accuracy of the solution will be greater if the number of elements is large.
However, computer time (and cost) also increases with number of elements chosen so it is
generally wise only to use a dense concentration of elements in the critical areas of the
solid which are likely to be of particular interest.
2.9.6 Necessity of Computer Application
In any case, finite element method is a computer-oriented method that must be
implemented with appropriate digital computer programs.
Although the analysis of each individual element in the finite element method is
straightforward, the analysis of a large number of elements becomes extremely tedious.
For this reason finite element solutions to problems are carried out on computers and
there are many shareware and commercial software packages available for the purpose.
To some extent this has led to the current situation where many engineers are put off by
the apparent complexity of the subject and they leave it to the experts who tend to attach a
certain mystique to the subject through the use of computer jargon!
2.9.7 Continuity of Displacements
To improve the analytical model it is necessary to provide continuity of displacements,
and in some cases of displacement derivatives along finite element sides. The techniques
for deriving local stiffness matrices will later be illustrated for beam elements.
2.9.8 Plotting of Results
It is almost essential that plotting of results and input data should be provided in finite
element programs because these provide an instant visual check and errors can readily be
detected which would otherwise become very difficult.
18
attempted to extend the method to problems of structural continua and later to general
field problems. At first attempts were made to derive local stiffness matrices for sheet
material in terms of forces and displacements at joints and to connect sheets together as
though they were discrete members. Such attempts were not successful, because in an
actual structure displacements are continuous, whereas in the analytical model the sheets,
or finite elements, could have different values of displacements at points along common
edges. Application of finite element has been extended to soil and rock mechanics,
dynamics, earthquake analysis, torsion, head conduction, seepage, consolidation,
thermoelasticity, hydroelasticity, viscoelasticity, fluid mechanics, hydraulics, flow of
compressible fluids, electrical engineering, and many other fields.
19
8. Calculate stresses at selected points within the elements.
9. Determine support reactions at restrained node if desired.
a11 a12
A a 21 a 22
a31 a32
then its transpose is the (23) matrix
a
AT 11
a12
a 21
a 22
a31
a32
a11 a12
A a 21 a 22
a31 a32
and
b
b
B 11 12
b21 b22
20
then the product C = AB is a (3 2) matrix defined as
w
x y z
a
w
b q r s
A x q c
t
u
t
d
v
y r
z s u
v
e
is symmetric.
0
0
0
5 3 0
3 7
2
0
0
0
0
2 3 6
0
0
A 0
0
6 4 9
0
0
0
0
9
1 2
0
0
0 2 5
0
0
0
0
0
0
4
0
0
0
0
0
4
2
Because matrix A is symmetric, its half bandwidth can be taken which is 2. Hence matrix
A can be represented as follows to save computer memory.
21
5 3
7
2
3 6
A 4 9
1 2
4
5
2
0
Special methods for solution of linear equations defined by banded matrices have been
developed. The Cholesky Method is a popular method of solving with banded matrices.
2.12.5 Identity Matrix
A square matrix is known as the identity matrix if all the entries on its main diagonal are
unity and the remaining entries are zero. Identity matrix is denoted by I.
1
0
I
0
0 0 0
1 0 0
0 1 0
0 0 1
22
that the solution is obtained as a finite number of discrete node points, the formation of
field variable models inherently provide a solution at all other locations in the body.
2.13.1 Better Approximations
In the finite element method, a modified structural system consisting of discrete (finite)
elements is substituted for the actual continuum and thus the approximation is of a
physical nature. There need be no approximation in the mathematical analysis of this
substitute system. By contrast, in the finite difference method the exact equations of the
actual physical system are solved by approximate mathematical procedures.
2.13.2 Trial Solutions
In contrast to other variational and residual approaches, the finite element method does
not require trial solutions which must all apply to the entire multidimensional continuum.
The use of separate sub regions, or finite elements, for the separate trial solutions thus
permits a greater flexibility in considering continua of complex shapes.
2.13.3 Boundary Conditions
Some of the most important advantages of the finite element method derive from the
techniques of introducing boundary conditions. This is another area in which the method
differs from other variational or residual approaches. Rather than requiring every trial
solution to satisfy the boundary conditions, one prescribes the conditions after obtaining
the algebraic equations for the assemblage. Since the boundary conditions do not enter
into the equations for the individual finite elements, one can use the same field variable
models for both internal and boundary elements. Moreover, the field models need not be
changed when the boundary conditions change.
The introduction of boundary conditions into the assembled equations is a relatively easy
process.
simplified in a variational approach because the natural conditions are implicitly satisfied.
No special technique or artificial devices are necessary, such as the non-centered
difference equations for fictitious external points often employed in the finite difference
method.
23
2.13.4 Material Properties
The finite element method not only accommodates complex geometry and boundary
conditions, but it also has proven successful in representing various types of complicated
material properties that are difficult to incorporate into other numerical methods. For
example, formulations in solid mechanics have been devised for anisotropic, nonlinear,
hysteretic, time-dependent, or temperature-dependent behavior.
2.13.5 Non Homogenous Continua
One of the most difficult problems encountered in applying numerical procedures of
engineering analysis is the representation of non-homogenous continua. Nevertheless, the
finite element method readily accounts for non-homogeneity by the simple tactic of
assigning different properties to different elements if a refined representation of the
variation of material characteristics is desired, it is even possible to vary the properties
within an element according to a preselected polynomial pattern. For instance, it is
possible to accommodate continuous or discontinuous variations of the constitutive
parameters or of the thickness of a two-dimensional body.
2.13.6 Systematic Generality
The systematic generality of the finite element procedure makes it a powerful and
versatile tool for a wide range of problems.
computer programs can be constructed. Early examples of these programs are the several
structural analysis packages, which include a variety of element configurations and which
can be applied to several categories of structural problems. Among these packages are
STARDYNE, ASKA, STRUDL, SAP, NASTRAN, ETABS, and SAFE.
Another
indicator of the generality of the method is that programs developed for one field of
engineering have been applied successfully to problems in a different field with little or
no modification.
Finally, an engineer may develop a concept of the finite element method at different
levels. It is possible to interpret the method in physical terms. On the other hand, the
method may be explained entirely in mathematical terms. The physical or intuitive nature
24
of the procedure is particularly useful to the engineering student and practicing engineer.
Nevertheless, it is significant that the method has mathematical functions.
25
2.14.3 Discretizing the Continuum and Data Input
The most tedious aspects of the use of the finite element method are the basic processes of
subdividing the continuum and of generating error-free input data for the computer.
Although these processes may be automated to a degree, they have not been totally
accomplished by computer because some engineering judgment must be employed in the
discretization. Errors in the input data may go undetected and the erroneous results
obtained therefrom may appear acceptable.
2.14.4 Interpretation of Results
Finally, as for any approximate numerical method, the results of a finite element analysis
must be interpreted with care. We must be aware of the assumptions employed in the
formulation, the possibility of numerical difficulties, and the limitations in the material
characterizations used. A large volume of solution information is generated by a finite
element routine, but this data is worthwhile only when its generation and interpretation
are tempered by proper engineering judgment.
CHAPTER THREE
COMBINED FOOTINGS
27
gravity of the combined footing coincides with the resultant of the loads on the two
columns.
3.2.2 Closely Spaced Columns
If the columns are spaced so closely that their footings overlap then a combined footing
becomes necessary. Another case is when the footings do not overlap but are so closely
spaced that providing a combined footing may prove to be more economical than isolated
footings. The shape of the combined footing may be rectangular or trapezoidal.
3.2.3 Poor Soil
Another case where combined footings become necessary is when the soil is poor and the
footing of one column overlaps the adjacent footing. If there is a row of columns and the
bearing capacity of the subsoil is low so that large bearing areas become necessary,
individual footings are replaced by continuous strip footings that support more than two
columns and usually all columns in a row. Sometimes such strips are arranged in both
directions, in which case a grid foundation is obtained. Such a foundation can be made to
develop a much larger bearing area much more economically than can be done by single
footings because the individual strips represent continuous beams whose moments are
much smaller than the cantilever moments in large single footings that project far out
from the column in all four directions. Bridge piers are also founded on very rigid
combined rectangular footings.
For still lower bearing capacities, the strips are made to merge, resulting in a mat
foundation. That is, the foundation consists of a solid reinforced concrete slab under the
entire building. In structural action, such a mat is very similar to a flat slab or a flat plate,
upside down, i.e. loaded upward by the bearing pressure and downward by the
concentrated column reactions. The mat foundation evidently develops the maximum
available bearing area under the building. If the soils capacity is so low that even this
large bearing area is insufficient, some form of deep foundation, such as piles or caissons,
must be used.
28
3.2.4 Differential Settlement
When a column load is transmitted to the soil by the footing, the soil becomes
compressed. The amount of settlement depends on many factors, such as the type of soil,
the load intensity, the depth below ground level, and the type of footing. If different
footings of same structure have different settlements, new stresses develop in the
structure. Excessive differential settlement may lead to the damage (cracking and tilting)
of nonstructural members in the buildings, even failure of the affected parts.
Besides developing large bearing areas, another advantage of strip, grid, and mat
foundations is that their continuity and rigidity help in reducing differential settlements of
individual columns relative to each other, which may otherwise be caused by local
variations in the quality of subsoil, or other causes. For this purpose, continuous spread
foundations are frequently used in situations where the superstructure or the type of
occupancy provides unusual sensitivity to differential settlement.
If the bearing soil capacity is too much different under different footings, for example if
the footings of a building are partly on soil and partly on rock, a differential settlement
will occur. In such cases it is advisable to provide a joint between the two parts to
separate them, allowing for independent settlement.
29
3.3.1 Rectangular Combined Footing
A combined footing is usually made rectangular, if the rectangle can extend beyond each
column face to a distance required to make the center of the gravity of the column loads
coincide with the centroid of the footing area. Rectangular combined footings can be
divided into two categories: those that support only two columns (figure-3.1) and those
that support more than two (generally large number of) columns (figure-3.2).
In buildings where the allowable soil pressure is large enough for single footings to be
adequate for most columns, two-column footings are seen to become necessary in two
situations: (1) if columns are so close to the property line that single-column footings
cannot be made without projecting beyond that line, and (2) if some adjacent columns are
so close to each other that their footings would merge. Combined footing for rows of
columns are provided where soil is poor.
If the footing is to support an exterior column at the property line where the projection of
the footing is limited, a rectangular shape can be used provided the interior column caries
greater load or a row of columns is supported by the continuous strip footing which is
rectangular. When the loading of the column is equal, the rectangular shape is used with
advantage.
3.3.2 Trapezoidal Footing
When the load of the external column near the property line is greater than the load of the
interior column, a trapezoidal footing (figure-3.3) is necessary to keep the centroid of the
footing in line with the resultant of the two column loads. In most other cases, a
rectangular footing may be advantageous.
30
31
3.3.4 Strip, Grid, And Mat Foundation
In the case of heavily loaded columns, particularly if they are to be supported on
relatively weak or uneven soils, continuous footings are resorted to. They may consist of
a continuous strip footing supporting all columns in a given row, or of two sets of such
strip footings intersecting at right angles so that they form one continuous grid foundation
(figure-3.4). For even larger loads or weaker soils the strips are made to merge, resulting
in a mat foundation (figure-3.4).
This assumption is
approximately true if the soil is homogeneous and the footing is rigid. The ACI Code,
section 15.40, does not provide a detailed approach for the design of combined footings.
The design, in general, is based on an empirical approach.
32
3.4.1 Footing Dimensions
Therefore, the dimensions of a combined footing are so proportioned that the center of
gravity of the area of the footing in contact with the soil lies on the line of action of the
resultant of the loads applied to the footing (figure-3.5). By doing so, the distribution of
soil pressure is assumed to be fairly uniform. If the resultant of the applied loads does not
coincide with the centroid of the bearing area, a bending moment develops. In this case,
the pressure on one side of the footing will be greater than the pressure on the other side,
causing higher settlement on one side and a possible rotation of the footing. Moreover,
the dimensions of the footing are chosen such that the allowable pressure is not exceeded.
3.4.2 Rounding of Dimensions
The conventional design method requires computing shears and moments at sufficient
locations that shear and moment diagrams can be drawn for critical values. It is also
standard practice to round the computed length and width to the nearest larger multiple of
75-mm or 3 inch. If this is done prior to computing shear and moment diagrams there
will be a closure error which depends on the amount the length is changed; thus, it is
recommended that footing dimensions be rounded as the final design step. Also, this
rounding may cause a small variation in the uniform pressure under the footing, but it can
be tolerated.
3.4.3 Shear and Moment Computations
The column loads are actually distributed over the column width but may be considered
to be concentrated point loads.
computations, and the values at the critical locations are the same by either method. Then
the resulting shear force and bending moment diagrams can be plotted. The maximum
bending moment should be adopted as the design value for the reinforced concrete
footing, which should also be checked for maximum shear and bond etc.
3.4.4 Depth of Footing
The depth based on the more critical of two-way action or wide-beam shear is computed.
Critical sections for two-way action and wide-beam are the same as for spread footings,
i.e., at d/2 and d, respectively, from the column face. It is common practice not to use
33
shear reinforcement both for economy and to increase the rigidity. The labor costs to
bend and place the shear reinforcement are likely to far exceed the small savings in
concrete that would result from its use.
3.4.5 Reinforcement Design
With the depth selected, the flexural steel can be designed using the critical moments
from the moment diagram. Alternatively, the depth and the loading can be used in a
finite-element analysis to obtain modified moments for the flexural steel. These beamtype members usually have both positive and negative moments, resulting in reinforcing
steel in both the top and bottom of the footing. The minimum percentage of steel should
be taken as 200/fy since the footing is designed as a beam or flexural member.
3.4.5.1 Main Reinforcement
The main reinforcement in a combined footing is placed in the longitudinal direction.
The computation of the main steel is done on the assumption that the footing acts as one
way slab.
3.4.5.2 Transverse Reinforcement
If we compute the short, or transverse, direction bending moments as for a rectangular
spread footing, they will be in substantial error. This is because the soil pressure is larger
near the columns, from their stiffening effect on the footing, and lesser in the zone
between columns. That zone closest to, and approximately centered on, the column is
most effective and should be analyzed somewhat similar to the ACI Code requirement for
rectangular footings. The Code does not directly specify this effective column zone
width. Bowles suggests that for the effective zone for the transverse direction it should be
assumed that the column load is spread over a width under the column equal to the
column width plus 0.75d on each side (figure-3.6), whenever that is available. In other
words, the column load acts on a beam under the column within the footing which has a
maximum width of (w + 1.5d) and a length equal to the short side of the footing smaller
width, down to (w + 0.75d), may be used. Transverse reinforcement is provided at the
bottom of the footing in these zones (shown in figure-3.6).
34
35
(e) Design main reinforcement steel between columns by using ultimate strength design
method.
(f) Calculate the transverse steel required under each column.
(g) Check dowel requirements of each column to footing. If dowels are not required then
provide at least four dowels of 0.005 Ag.
(h) Design steel for cantilever portion of footing.
36
reaction can no longer be assumed as uniform. A reasonably accurate but fairly complex
analysis can then be made using the theory of beams on elastic foundations.
CHAPTER FOUR
38
subgrade soils may obey Hookes Law or be non-linear or elastic-plastic [Selvadurai,
1979].
The Winkler model has its advantages for obtaining fast solutions, sometimes analytical,
to more complicated soil/structure interaction problems.
Terzaghi
[Terzaghi, 1955], Vesic [Vesic, 1961], and Selvadurai [Selvadurai, 1979], among others,
discussed the validation of the Winkler foundation model and suggested methods for the
estimation of spring constants. Despite the two major limitations, the Winkler foundation
model has found applications in the analysis of soil/structure interaction problems; e.g.,
footings on soils and laterally loaded piles in soils.
It is noted that the beam in the Winkler foundation model is based on the pure bending
beam theory commonly used in structural analysis.
39
considers both bending and shearing was proposed by Timoshenko [Timoshenko, 1921]
for modeling vibration of beams. The Timoshenko beam still attracts peoples attention
in studying the static and dynamic response of beams [Wang et al., 1997]. However, less
attention is paid to modeling the Timoshenko beam on an elastic foundation.
Pressure,
ks =
Deformation,
Figure-4.1 Modulus of subgrade reaction.
(4.1)
with terms identified on both figure-4.1 and figure-4.2. Plots of q versus from load tests
give curves of the type qualitatively shown in figure-4.2. If this type of curve is used to
obtain ks in the above equation, it is evident that the value depends on whether it is a
tangent or secant modulus and the location of the coordinates of q and .
40
k=
q
k depends on curve coordinates
used and is generally nonlinear
Linear
Nonlinear
q
Xmax
It is difficult to make a plate-load test, except for very small plates because of the reaction
load required. Even with small plates of say 450, 600, and 750 mm diameter it is difficult
to obtain since the plate tends to be less than rigid so that a constant deflection across
the plate (and definition of ks) is difficult to obtain. Stacking the smaller plates concentric
with the larger ones tends to increase the rigidity, but in any case, the plot is of load
divided by plate contact area (nominal P/A) and the average measured deflection.
Figure-4.2 is a representation of ks taken as a constant up to a deflection Xmax. Beyond
Xmax the soil pressure is a constant value defined by
Qcon = ks(Xmax)
(4.2)
Obviously one could divide the q- curve into several regions so that ks takes on values of
the slope in several regions however, this tends to incorporate too much refinement into
the problem since most analyses proceed on the basis of estimated values or at best an
approximate load test.
Some engineers do not like to use the concept of a modulus of subgrade reaction; rather
the use of Es (and ) in finite-element analyses is preferred. Bowles suggests that, until
the state of the art improves so that accurate values of Es can be obtained, the modulus of
subgrade reaction method is preferred for its greater ease of use and from the substantial
savings in computer computation time.
41
There is a direct relationship between ks and Es but since one does not often have values
of Es, other approximations are useful and often quite satisfactory if the computed
deflection (directly dependent on ks) can be tolerated for any reasonable value. It has
been found that bending moments and the computed soil pressure are not very sensitive to
what is used for ks. This is because the structural member stiffness is usually 10 or more
times as great as the soil stiffness as measured by ks. Recognizing this, Bowles suggests
that the following formulae for approximating ks from the allowable bearing capacity
furnished by the geotechnical consultant should be used
ks = 12 (SF) qa (kip/ft3) (in fps units)
(4.3)
(4.4)
where qa is furnished in ksf or kPa. These formulae are based on qa = qult/SF and the
ultimate soil pressure is at a settlement H = 1 inch or 25.4 mm and ks is qult/H. For
H=1/4, 1/2, 3/4 inch, etc, the factor 12 (or 40) can be adjusted to 48, 24, 16, etc; 12 is
reasonably conservative but smaller assumed displacements can always be used. Tables
A-3 to A-6 can be referred as guidelines for determining value of ks.
4.6 Previous efforts by researchers to evaluate the value of k
Many researchers have worked to develop a technique to evaluate the modulus of
subgrade reaction k. One of the early contributions was that of Terzaghi [Terzaghi,
1955], who proposed that ks for full-sized footings could be obtained from plate-load
tests.
0.3050.305m (11 ft) rigid slab placed on a soil medium; however, the implementation
of procedure to compute the value of k for use in a larger slab was not specific.
Biot [Biot, 1937] solved the problem for an infinite beam with a concentrated load resting
on a 3D elastic soil continuum. He found a correlation of the continuum elastic theory
and the Winkler model where the maximum moments in the beam are equated. He
developed an empirical equation for k
0.95Es
B 4 Es
k
2
2
1 s (1 s ) EI
0.108
(4.5)
42
where, Es = modulus of elasticity of the soil; s = Poissons ratio of the soil; B= beam
width; and EI = bending rigidity of the beam.
On similar grounds, Vesic [Vesic, 1961] tried to develop a value for k using the stressstrain modulus of Es, except, instead of matching bending moments, he matched the
maximum displacements of the beam in both models. He obtained the equation for k for
use in the Winkler model as
0.65Es
k
2
1 s
12
B 4 Es
EI
(4.6)
43
4.7.2 Vallabhans Iterative Procedures
Vallabhan and Daloglu [Vallabhan, 1997, 1999], Vallabhan and Das [Vallabhan, 1988,
1989], Straughan [Straughan, 1990], and Turhan [Turhan, 1992] have proposed some
iterative procedures to get the value of k at different locations. These procedures are still
not very popular among practicing engineers.
4.7.3 Non-Dimensional Parameters For k
Using non-dimensional parameters, Daloglu and Vallabhan [Daloglu, 2000] have
attempted to evaluate the value of k for use in Winkler model for the analysis of slabs
subjected to concentrated and uniformly distributed loads. For convenience, a constant
value of Poissons ratio for the soil, s=0.25, is used. They have provided some graphs
from which values of an equivalent k can be computed from the complete geometry and
properties of the overall system.
EIy deflection
(4.7)
EI
dy
slope
dx
(4.8)
EI
d2y
moment M
dx 2
(4.9)
EI
d3y
dM
shear V
3
dx
dx
(4.10)
44
EI
d4y
dV d 2 M
load
dx
dx 4
dx 2
(4.11)
Now consider a structural member AB and its elastic curve A'B' as shown in figure-4.3. It
is subjected to a varying downward load of w per unit distance and to an upward force of
ky per unit distance, wherein k is the stiffness modulus of the elastic foundation, measured
in force per unit area. Sometimes the compression modulus of the medium is given in
force per unit volume, in which case the stiffness modulus is the product of the
compression modulus and the width of the structural member.
From the equilibrium equations of resolution and rotation of an infinitesimal segment of
the structural member,
dV
ky w
dx
(4.12)
and
dM
V
dx
(4.13)
45
wherein the positive directions of shear V and bending moment M are as shown in figure4.3 above. The change in slope between any two consecutive points at an infinitesimal
distance dx apart is equal to
dy
M
dx
(4.14)
dx
EI
The negative sign is due to the fact that the slope is decreasing in positive or concave
d
bending. Combining equations (4.12) and (4.14) gives the basic differential equation of
elastic curve as
d4y k
w
y
4
EI
EI
dx
(4.15)
V EI
d3y
dx 3
(4.16)
and
M EI
d2y
dx 2
(4.17)
d4y k
y0
dx 4 EI
(4.18)
Solution:
Let
d
dx
(4.19)
4 k
y 0
EI
(4.20)
46
For y 0,
k
0
EI
(4.21)
22
k
EI
to equation (4.21)
k
k
k
22
0
EI EI
EI
4 22
(4.22)
1
2
2
4
k
k
2
0
EI
EI
1
1
k
k 4 2
k
k 4
2
2
2 0
EI
EI
EI
EI
(4.23)
(4.24)
k
k 4
2
0
EI
EI
2
(4.25)
k
k
k 4
2 2
4
EI
EI
EI
2
1
1 k 4
1 k 4
i
2 EI
2 EI
1
y1 e
1 k 4
x
2 EI
L4
(4.26)
1
1
1 k 4
1 k 4
x a 2 sin
x
a1 cos
2 EI
2 EI
k
4 EI
(4.27)
(4.28)
(4.29)
y1 e L a1 cos x a 2 sin x
L
L
(4.30)
k
k 4
2 2
0
EI
EI
(4.31)
47
k
k
k 4
2 2
4
EI
EI
EI
2
1
(4.32)
1 k 4
1 k 4
i
2 EI
2 EI
1
y2 e
1 k 4
x
2 EI
(4.33)
1
1
1 k 4
1 k 4
x a 4 sin
x
a3 cos
2 EI
2 EI
(4.34)
y 2 e L a3 cos x a 4 sin x
L
L
(4.35)
x
x
y y1 y 2 e L a1 cos x a 2 sin x e L a3 cos x a 4 sin x
L
L
L
L
(4.36)
Because,
ebx cosh bx sinh bx
cosh
x sinh
e bx cosh bx sinh bx
and
and
x
L
cosh
x sinh
Let,
s sin
s' sinh
c cos
c' cosh
(4.37)
(4.38)
(4.39)
y A cos
x cosh
x B cos
x sinh
C sin
x cosh
x D sin
x sinh
(4.40)
48
where,
L4
k
4EI
A a1 a3
B a1 a3
C a2 a4
D a2 a4
Mi
i
Vi
x
0
Mj
y
j
j
Vj
49
It will be shown that the use of the first approach will yield a 44 flexibility matrix of a
member on elastic foundation, and the second approach will produce the 44 stiffness
matrix.
M i EI
as
y A cos
d2y
dx 2
x cosh
(4.41)
x B cos
C sin
Differentiate y w.r.t. x:
x sinh
x cosh
x D sin
x sinh
dy d
( Acc' Bc s'C sc' D s s' )
dx dx
(4.40)
(4.42)
(4.43)
d2y 2
2 [ A{(cc' s s' ) (cc' s s' )} B{(c s'c' s) (c s'c' s)}
dx 2
L
C{(c' s c s' ) (c' s c s' )} D{(cc' s s' ) (cc' s s' )}]
2
L2
2
L2
(4.44)
(4.45)
(4.46)
d2y
2
(
at
x
0
)
[ A(2 0 0) B(2 0 1)
dx 2
L2
C (2 1 0) D(2 1 1)]
(4.47)
50
2
L2
[ 2 D]
(4.48)
d2y
2 EI 2
M i ( EI 2 at x 0)
D
dx
L2
(4.49)
Let,
s' sinh
s sin
c' cosh
c cos
Now,
d2y
(at x L) [ A(2ss' ) B(2c' s) C (2cs ' ) D(2cc ' )]
dx 2
2
2
L2
M j ( EI
y A cos
(4.51)
d2y
2 EI 2
at
x
L
)
x cosh
x B cos
C sin
x sinh
x cosh
(4.50)
(4.52)
x D sin
x sinh
d2y
2
2 2 [ s s' A c' sB c s' C cc' D]
dx 2
L
(4.40)
(4.53)
d3y
3
2
[ A(c' s c s' ) B( s s'cc' ) C (cc's s' ) D(c s'c' s)]
dx 3
L3
(4.54)
d3y
3
(
at
x
0
)
2
[ A(0 0) B(0 1) C (1 0) D(0 0)]
dx 3
L3
(4.55)
3
L3
(B C)
(4.56)
51
Vi ( EI
d3y
2 EI 3
at
x
0
)
(B C)
dx 3
L3
(4.57)
d3y
2 3
(
at
x
L
)
V j ( EI
d3y
2 EI 3
at
x
L
)
(4.58)
(4.59)
The four deformation quantities i ,j , i , and j can be expressed in terms of the four
arbitrary constants A, B, C, and D by
dy
[ A(c s'c' s) B(cc's' s) C ( s s'c' c) D( sc' s' c)]
dx L
dy
(4.60)
dy
at x 0) ( B C )
dx
L
(4.61)
dy
j (
dy
As
y A cos
x cosh
x B cos
C sin
(4.43)
x sinh
x cosh
(4.62)
(4.63)
x D sin
x sinh
(4.40)
(4.64)
i ( y at x 0) A
(4.65)
(4.66)
52
(4.67)
The four arbitrary constants A, B, C, and D may be expressed in terms of the four
deformation quantities i ,j , i , and j by solving the four simultaneous equations (4.61),
(4.63), (4.65), and (4.67); thus
From equation (4.65),
A i
(4.68)
i C
(4.69)
From equation (4.68) and (4.69), put values of A and B in equation (4.67)
j cc ' i
ss' D cc ' i j
D
(4.70)
(4.71)
cc '
1
Lc
c c'
i j
i ( )C
ss'
ss'
s
s s'
(4.72)
From equation (4.68), (4.69), and (4.72) put values of A, B, and D in equation (4.63),
L
L
(c' s cs ' ) i ss' i cc ' i ss' C cc ' C ss' C
cc ' 2
c 2 c'
c'
c
L
L c 2 s'
cc ' C
i
i j j cc ' i
i
s'
s
s'
s
s
cc ' C
c' 2 s
c 2 s'
C
C cc ' C
s'
s
cc ' 2
c 2 c'
c'
(4.73)
L
c 2 s'
s
s'
s' s
c' 2 s c 2 s '
C
2ss'
s'
s
(4.74)
53
j
ss
'
ss
'
2 2
2 2
2 2
2s s ' c' s c s '
C
ss'
i
j
i
ss'
ss'
2 2
2 2
2 2
2 2
c ' s s s ' s s ' c s '
C
ss'
(4.76)
L s'
c' s'cs
c' s cs '
i
j i
s
ss'
ss'
C
ss'
2
s' 2 s 2
L
L s'
c' s'cs
c' s cs '
C
j
i
j i
ss'
ss'
ss'
ss'
L
(4.75)
ss' j
( s' 2 s 2 )C
1
s' s 2
2
s' 2 i
L 2
L
s' i ss' j (cs c' s' ) i (c' s cs ' ) j
(4.77)
(4.78)
(4.79)
(4.80)
(4.81)
1 L 2
L
s' i ss' j (cs c' s' ) i (c' s cs ' ) j
2
s' s
L( s ' 2 s 2 )
1
i 2 2
2
2
( s' s )
s' s
1
s' s 2
2
L 2
L
s' i ss' j (cs c' s' ) i (c' s cs ' ) j
L
2
2
2
( s' s' s ) i ss' j (cs c' s' ) i (c' s cs ' ) j
(4.82)
(4.83)
(4.84)
54
1 L 2
L
s i ss' j (cs c' s' ) i (c' s cs ' ) j
2
s' s
(4.85)
cc' A cc' i
(4.86)
cc ' A
1
(cc ' s 2 cc ' s' 2 ) i
2
s' s
2
(4.87)
L 2
L
2
2
2
2 2
cs s' i css' j (c ss'cc ' s' ) i (cc ' ss'c s' ) j
1
s' s 2
2
1 L
L
c' ss' 2 i c' s' s 2 j (cc ' s 2 c' 2 ss' ) i (c' 2 s 2 cc ' ss' ) j
2
s' s
(4.88)
(4.89)
(4.90)
ss' D
s' 2 s 2
j cc ' A cs ' B c' sC
s' 2 s 2
(4.91)
From equation (4.86), (4.88), and (4.89) put values of cc'A, cs'B, and c'sC in equation
(4.91),
ss' D
1
L
L
[ (cs 2 s'c' ss' 2 ) i (css' 2 c' s 2 s' ) j
2
s' s
2
(cc ' s 2 cc ' s' 2 c 2 ss'cc ' s' 2 cc ' s 2 c' 2 ss' ) i
(cc ' ss'c 2 s' 2 c' 2 s' 2 cc ' ss' s' 2 s 2 ) j ]
D
1
s' s 2
2
L
L
(cs c' s' ) i (c' s cs ' ) j
(c ' 2 c 2 ) i (
) j
s
s'
s s'
(4.92)
(4.93)
55
1
s' s 2
2
L
L
(cs c' s' ) i (c' s cs ' ) j
1
s' s 2
2
L
L
(cs c' s' ) i (c' s cs ' ) j
( s ' 2 s 2 ) i {
1
2
s' s 2
(4.94)
s' 2 (1 c 2 ) s 2 (c' 2 1)
} j
ss'
L
s 2 s' 2 s 2 s' 2
2
2
(
cs
c
'
s
'
)
(
c
'
s
cs
'
)
(
s
'
s
)
(
) j
i
j
i
ss'
(4.95)
(4.96)
L
2
2
(4.97)
(cs c' s' ) i (c' s cs ' ) j ( s' s ) i 2ss' j
If we put value of D from equation (4.97) in equation (4.49), the coefficient of i on right
D
1
s' s 2
2
2 EI 2 L
(cs c' s' )
L2 ( s' 2 s 2 )
2 EI (c' s'cs )
L( s ' 2 s 2 )
(4.98)
(4.99)
2 EI 2 L
2 2 2
(c' s cs ' )
L ( s' s )
2 EI (c' s cs ' )
L( s ' 2 s 2 )
(4.100)
(4.101)
2 EI 2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
The coefficient of j becomes:
2 EI 2 (2ss' )
2 2 2
L (s' s )
4 EI 2 ss'
L2 ( s' 2 s 2 )
(4.102)
(4.103)
(4.104)
56
Hence, equation (4.49) becomes:
Mi
2 EI (c' s'cs )
2 EI (c' s cs ' )
i
j
2
2
L( s ' s )
L( s ' 2 s 2 )
2 EI 2 ( s' 2 s 2 )
4 EI 2 ss'
j
i
L2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
(4.105)
or
(4.106)
If we put value of A, B, C, and D from equation (4.68), (4.85), (4.81), and (4.97) in
equation (4.52), the coefficient of i on right hand side becomes:
2 EI 2 L
( ss'0 c' s 3 cs '3 c 2 c' s cc ' 2 s' )
2
2
2
L ( s' s )
2 EI
{c' s( s 2 c 2 ) cs ' (c' 2 s' 2 )}
2
2
L( s ' s )
2 EI (c' s cs ' )
L( s ' 2 s 2 )
(4.107)
(4.108)
(4.109)
(4.110)
2 EI
(c' s 2 s'css' 2 cc ' 2 s c 2 c' s' )
2
2
L( s ' s )
(4.111)
2 EI
{c' s' ( s 2 c 2 ) cs (c' 2 s' 2 )}
2
2
L( s ' s )
(4.112)
2 EI (c' s'cs )
L( s ' 2 s 2 )
(4.113)
2 EI 2
{ss' (1)(s' 2 s 2 ) c' s(cs c' s' ) cs ' (cs c' s' ) cc ' ( s' 2 s 2 )}
L2 ( s' 2 s 2 )
(4.114)
57
2 EI 2
( ss'3 s 3 s'cc ' s 2 c' 2 ss'c 2 ss'cc ' s' 2 cc ' s' 2 cc ' s 2 )
2
2
2
L ( s' s )
(4.115)
2 EI 2
{ss'3 s 3 s' ss' (1 s' 2 ) ss' (1 s 2 )}
2
2
2
L ( s' s )
(4.116)
2 EI 2
( ss'3 s 3 s' ss' ss'3 ss' s 3 s' )
L2 ( s' 2 s 2 )
(4.117)
2 EI 2 ss'
2 2 2
L ( s' s )
(4.118)
2 EI 2
{ss'0 c' s(c' s cs ' ) cs ' (c' s cs ' ) cc ' (2ss' )}
L2 ( s' 2 s 2 )
(4.119)
2 EI 2
2 2 2 (c' 2 s 2 cc ' ss'cc ' ss'c 2 s' 2 2cc ' ss' )
L ( s' s )
(4.120)
2 EI 2
{s 2 (1 s' 2 ) s' 2 (1 s 2 )}
2
2
2
L ( s' s )
(4.121)
2 EI 2
( s 2 s 2 s' 2 s' 2 s 2 s' 2 )
2
2
2
L ( s' s )
(4.122)
2 EI 2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
(4.123)
2 EI (c' s cs ' )
2 EI (c' s'cs )
i
j
2
2
L( s ' s )
L( s ' 2 s 2 )
2 EI 2 ss'
2 EI 2 ( s' 2 s 2 )
2 2 2 i
j
L ( s' s )
L2 ( s' 2 s 2 )
(4.124)
or
(4.125)
58
If we put value of B, and C from equation (4.85) and (4.81) in equation (4.57), the
coefficient of i on right hand side becomes:
2 EI 3 L
( s 2 s' 2 )
3
2
2
L ( s' s )
2 EI 2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
(4.126)
(4.127)
2 EI 3 L
( ss' ss' )
L3 ( s' 2 s 2 )
(4.128)
4 EI 2 ss'
2 2 2
L ( s' s )
(4.129)
2 EI 3
(cs c' s'cs c' s' )
L3 ( s' 2 s 2 )
(4.130)
2 EI 3
3 2 2 (2cs 2c' s' )
L ( s' s )
(4.131)
(4.132)
2 EI 3
{(c' s cs ' ) (c' s cs ' )}
L3 ( s' 2 s 2 )
(4.133)
2 EI 3
(c' s cs 'c' s cs ' )
L3 ( s' 2 s 2 )
(4.134)
4 EI 3 (c' s cs ' )
L3 ( s' 2 s 2 )
(4.135)
Vi
2 EI 2 ( s' 2 s 2 )
4 EI 2 ss'
j
i
L2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
j
i
L3 ( s' 2 s 2 )
L3 ( s' 2 s 2 )
(4.136)
59
or
(4.137)
If we put value of A, B, C, and D from equation (4.68), (4.85), (4.81), and (4.97) in
equation (4.59), the coefficient of i on right hand side becomes:
2 EI 3 L
{(c' s cs ' ) 0 s 3 s'cc ' s 2 ss'3 cc ' s' 2 (c' s cs ' )(cs c' s' )}
3
2
2
L ( s' s )
2 EI 2
( s 3 s'cc ' s 2 ss'3 cc ' s' 2 cc ' s 2 c 2 ss'c' 2 ss'cc ' s' 2 )
2
2
2
L ( s' s )
2 EI 2
2 2 2 { ss' ( s 2 c 2 ) ss' (c' 2 s' 2 )}
L ( s' s )
2 EI 2
(2ss' )
L2 ( s' 2 s 2 )
4 EI 2 ss'
2 2 2
L ( s' s )
(4.138)
(4.139)
(4.140)
(4.141)
(4.142)
2 EI 2
2 2 2 {s 2 s' 2 cc ' ss' s 2 ' 2 cc ' ss'(c' s cs ' ) 2 }
L ( s' s )
(4.143)
(4.144)
2 EI 2
(2cc ' ss' s 2 c' 2 2cc ' ss'c 2 s' 2 )
L2 ( s' 2 s 2 )
(4.145)
2 EI 2
{s 2 (1 s' 2 ) s' 2 (1 s 2 )}
L2 ( s' 2 s 2 )
(4.146)
60
2 EI 2
2 2 2 ( s 2 s 2 s' 2 s' 2 s 2 s' 2 )
L ( s' s )
2 EI 2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
(4.147)
(4.148)
2 EI 3
{(c' s cs ' )( s' 2 s 2 )(1) ( ss'cc ' )(cs c' s' )
3
2
2
L ( s' s )
( ss'cc ' )(cs c' s' ) (c' s cs ' )( s' 2 s 2 )}
(4.149)
2 EI 3
(c' ss' 2 cs '3 c' s 3 cs ' s 2 cs ' s 2 c' ss' 2 cc ' 2 s'c 2 c' s cs ' s 2 c 2 c' s
3
2
2
L ( s' s )
c' ss' 2 cc ' 2 s'c' ss' 2 cs ' s 2 c' s 3 cs '3 )
(4.150)
2 EI 3
3 2 2 (2cs '3 2c' s 3 2c 2 c' s 2cc ' 2 s' )
L ( s' s )
(4.151)
4 EI 3
{cs ' (c' 2 s' 2 ) c' s( s 2 c 2 )}
3
2
2
L ( s' s )
(4.152)
4 EI 3 ( sc'cs ' )
L3 ( s' 2 s 2 )
(4.153)
2 EI 3
{(ss'cc ' )(c' s cs ' ) ( ss'cc ' )(c' s cs ' ) 2ss' (c' s cs ' )}
L3 ( s' 2 s 2 )
(4.154)
2 EI 3
(c' s 2 s'cc ' 2 s css' 2 c 2 c' s'c' s 2 s'
3
2
2
L ( s' s )
cc ' 2 s css' 2 c 2 c' s'2c' s 2 s'2css' 2 )
(4.155)
2 EI 3
(2cc ' 2 s 2c 2 c' s'2c' s 2 s'2css' 2 )
3
2
2
L ( s' s )
(4.156)
4 EI 3
(cc ' 2 s css' 2 c 2 c' s'c' s 2 s' )
3
2
2
L ( s' s )
(4.157)
61
4 EI 3
{cs (c' 2 s' 2 ) c' s' (c 2 s 2 )}
L3 ( s' 2 s 2 )
(4.158)
(4.159)
Vj
4 EI 2 ss'
2 EI 2 ( s' 2 s 2 )
j
i
L2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
4 EI 3 ( sc'cs ' )
4 EI 3 (cs c' s' )
j
i
L3 ( s' 2 s 2 )
L3 ( s' 2 s 2 )
(4.160)
or
(4.161)
The stiffness matrix [S] of a member on elastic foundation can be formed from equation
(4.106), (4.125), (4.137), and (4.161) as follows:
Mi
VAR1
-VAR2
-VAR3
-VAR4
Mj
-VAR2
VAR1
VAR4
VAR3
Vi
-VAR3
VAR4
VAR5
VAR6
Vj
-VAR4
VAR3
VAR6
VAR5
Matrix 4.1
Because we have to superimpose the element stiffness matrices in global stiffness matrix,
we interchange 2nd row with 3rd row and 2nd column with 3rd column and get:
62
MI
VAR1
VAR3
VAR2
-VAR4
VI
VAR3
VAR5
VAR4
-VAR6
Mj
VAR2
VAR4
VAR1
-VAR3
Vj
-VAR4
-VAR6
-VAR3
VAR5
Matrix 4.2
Because the elements are not supposed to bend, we take = 0 and obtain the degenerate
values of VAR1 to VAR6 by applying limits and using lHospitals rule:
2 EI (c' s'cs )
VAR1
L( s ' 2 s 2 )
2 EI (c' s'cs ) 2 EI
(c' s'cs ) 0
lim
2
2
0
L 0 ( s' 2 s 2 )
0
L( s ' s )
lim
(4.162)
(4.163)
2 EI
(c' s'cs ) 2 EI
( s' 2 c' 2 s 2 c 2 ) (c' s'cs ) 0
lim
lim
L 0 ( s ' 2 s 2 )
L 0
2(c' s'cs )
0
(4.164)
2 EI
( s' 2 c' 2 s 2 c 2 ) (c' s'cs )
lim
L 0
2(c' s'cs )
2 EI
4 (c' s'cs ) ( s' 2 c' 2 s 2 c 2 ) 0
lim
L 0
0
2(c' 2 s' 2 c 2 s 2 )
(4.165)
2 EI
4 (c' s'cs ) ( s' 2 c' 2 s 2 c 2 )
lim
L 0
2(c' 2 s' 2 c 2 s 2 )
2 EI
4 (c' 2 s' 2 c 2 s 2 ) 8( s' c' sc) 0
lim
L 0
8(c' s'cs )
0
(4.166)
63
Again applying lHospitals rule:
2 EI
4 (c' 2 s' 2 c 2 s 2 ) 8( s' c' sc)
lim
L 0
8(c' s'cs )
2 EI
16 (c' s'cs ) 12( s' 2 c' 2 s 2 c 2 ) 4 EI
lim
L 0
L
8( s' 2 c' 2 s 2 c 2 )
VAR1
4 EI
L
VAR 2
2 EI (c' s cs ' )
L( s ' 2 s 2 )
at 0
2 EI (c' s cs ' ) 2 EI
(c' s cs ' ) 0
lim
2
2
0
L 0 ( s ' 2 s 2 )
0
L( s ' s )
lim
(4.167)
(4.168)
(4.169)
(4.170)
2 EI
(c' s cs ' ) 2 EI
2ss'(c' s cs ' ) 0
lim
lim
2
2
L 0 ( s' s )
L 0 2(c' s'cs )
0
(4.171)
2 EI
2ss'(c' s cs ' ) 2 EI
2 (c' s cs ' ) 4ss' 0
lim
lim
0
L
2(c' s'cs )
L
2(c' 2 s' 2 c 2 s 2 ) 0
Again applying lHospitals rule:
2 EI
2 (c' s cs ' ) 4ss' 2 EI
4cc '6(c' s cs ' ) 0
lim
lim
2
2
2
2
L 0 2(c' s' c s )
L 0
8(c' s'cs )
0
(4.172)
(4.173)
2 EI
4cc '6(c' s cs ' ) 2 EI
4 (cs 'c' s) 16cc ' 2 EI
lim
lim
L 0
8(c' s'cs )
L 0 8(c' 2 s' 2 c 2 s 2 )
L
VAR 2
2 EI
L
at 0
(4.174)
(4.175)
64
VAR 3
2 EI 2 ( s' 2 s 2 )
L2 ( s' 2 s 2 )
2 EI 2 ( s' 2 s 2 ) 2 EI
2 ( s' 2 s 2 ) 0
lim
2 lim
0
0
L2 ( s' 2 s 2 )
L 0 ( s' 2 s 2 )
(4.176)
(4.177)
2 EI
2 ( s' 2 s 2 ) 2 EI
2 2 (c' s'cs ) 2 ( s' 2 s 2 ) 0
lim
lim
2(c' s'cs )
0
L2 0 ( s' 2 s 2 )
L2 0
(4.178)
2 EI
2 2 (c' s'cs ) 2 ( s' 2 s 2 )
lim
2(c' s'cs )
L2 0
2 EI
2 2 ( s' 2 c' 2 s 2 c 2 ) 8 (c' s'cs ) 2( s' 2 s 2 ) 0
2 lim
0
L 0
2( s' 2 c' 2 s 2 c 2 )
(4.179)
2 EI
2 2 ( s' 2 c' 2 s 2 c 2 ) 8 (c' s'cs ) 2( s' 2 s 2 )
lim
L2 0
2( s ' 2 c' 2 s 2 c 2 )
2 EI
8 2 (c' s'cs ) 12 ( s' 2 c' 2 s 2 c 2 ) 12(c' s'cs ) 0
lim
8(c' s'cs )
0
L2 0
(4.180)
VAR3
6 EI
L2
at 0
(4.181)
(4.182)
4 EI 2 ss'
VAR 4 2 2 2
L ( s' s )
(4.183)
4 EI 2 ss'
4 EI
2 ss'
0
lim
2 0
2
2
0 L2 ( s ' 2 s 2 )
L
( s' s ) 0
(4.184)
lim
65
Applying lHospitals rule:
4 EI
2 ss'
4 EI
2 (c' s cs ' ) 2ss' 0
lim
lim
2(c' s'cs )
0
L2 0 ( s' 2 s 2 )
L2 0
(4.185)
4 EI
2 (c' s cs ' ) 2ss' 4 EI
2 2 cc '4 (c' s cs ' ) 2ss' 0
lim
lim
2(c' s'cs )
0
L2 0
L2 0
2( s' 2 c' 2 s 2 c 2 )
(4.186)
4 EI
2 2 cc '4 (c' s cs ' ) 2ss'
lim
L2 0
2( s' 2 c' 2 s 2 c 2 )
4 EI
2 2 (cs 'c' s) 12cc '6(c' s cs ' ) 0
lim
8(c' s'cs )
0
L2 0
(4.187)
4 EI
2 2 (cs 'c' s) 12cc '6(c' s cs ' )
lim
8(c' s 'cs )
L2 0
4 EI
2 2 ss'16 (cs 'c' s) 24cc ' 6 EI
2 lim
2
L 0
8( s' 2 c' 2 s 2 c 2 )
L
VAR 4
6 EI
L2
VAR5
at 0
lim
0
0
L3 ( s' 2 s 2 )
L3 0 ( s' 2 s 2 )
lim
(4.188)
(4.189)
(4.190)
(4.191)
4 EI
3 (cs c' s' ) 4 EI
3 (c' 2 s' 2 c 2 s 2 ) 3 2 (cs c' s' ) 0
lim
lim
2(c' s'cs )
0
L3 0 ( s' 2 s 2 )
L3 0
(4.192)
4 EI
3 (c' 2 s' 2 c 2 s 2 ) 3 2 (cs c' s' )
lim
2(c' s'cs )
L3 0
4 EI
4 3 (c' s 'cs ) 6 2 (c' 2 s' 2 c 2 s 2 ) 6 (cs c' s' ) 0
3 lim
0
L 0
2(c' 2 s' 2 c 2 s 2 )
(4.193)
66
Again applying lHospitals rule:
4 3 (c' s'cs ) 6 2 (c' 2 s' 2 c 2 s 2 ) 6 (cs c' s' )
4 EI
lim
L3 0
2(c' 2 s' 2 c 2 s 2 )
8(c' s'cs )
0
L3 0
(4.194)
4 EI
16 3 (c' s'cs ) 36 2 (c'2 s'2 c 2 s 2 ) 72 (c' s'cs ) 24(c'2 s'2 c 2 s 2 ) 12 EI
lim
3
L3 0
8(c'2 s'2 c 2 s 2 )
L
VAR5
12 EI
L3
VAR 6
4 EI 3 ( sc'cs ' )
L3 ( s' 2 s 2 )
at 0
4 EI 3 ( sc'cs ' ) 4 EI
3 ( sc'cs ' ) 0
lim
0
0
L3 ( s' 2 s 2 )
L3 0 ( s' 2 s 2 )
lim
(4.195)
(4.196)
(4.197)
(4.198)
4 EI
3 ( sc'cs ' ) 4 EI
2 3 cc '3 2 ( sc'cs ' ) 0
lim
lim
2(c' s'cs )
0
L3 0 ( s' 2 s 2 )
L3 0
(4.199)
lim
2(c' s'cs )
0
L3 0
L3 0
2(c' 2 s' 2 c 2 s 2 )
(4.200)
4 EI
2 3 (cs 'c' s) 12 2 cc '6 ( sc'cs ' )
lim
L3 0
2(c' 2 s' 2 c 2 s 2 )
4 EI
4 3 ss'18 2 (cs 'c' s) 36cc '6( sc'cs ' ) 0
3 lim
8(c' s'cs )
0
L 0
(4.201)
67
Again applying lHospitals rule:
4 EI
4 3 ss'18 2 (cs 'c' s) 36cc '6( sc'cs ' )
lim
8(c' s'cs )
L3 0
4 EI
4 3 (c' s cs ' ) 18 2 ss'72 (cs 'c' s) 48cc ' 12 EI
lim
3
L3 0
8( s' 2 c' 2 s 2 c 2 )
L
(4.202)
12 EI
at 0
L3
Hence, the stiffness matrix (4.2) becomes,
VAR 6
(4.203)
Mi
4EI/L
6EI/L2
2EI/L
-6EI/L2
Vi
6EI/L2
12EI/L3
6EI/L2
-12EI/L3
Mj
2EI/L
6EI/L2
4EI/L
-6EI/L2
Vj
-6EI/L2
-12EI/L3
-6EI/L2
12EI/L3
Matrix 4.3
68
P -X
2
P -X
P -X
1
P -X
Nodal P-X
F -e
1
L
e
F +F
L
1
F -e
2
F +F
L
Element F-e
Here,
Pi = external node forces (point loads or moments)
Fi = internal member forces (bending moments and shear forces, in resistance to Pi )
Xi = external nodal displacements (rotations in radians or translations)
ei = internal member deformations (rotations in radians or translations)
Ai , Bi = bridging constants
Now we equate the ith external nodal forces Pi to the sum of all contributing internal
member forces Fi using the bridging constants Ai
Pi = Ai Fi
(4.204)
For the full set of nodes on any structure and using matrix notation, where P and F are
column vectors and A is a rectangular matrix, this becomes
P=AF
(4.205)
69
Similarly, the relation between the internal-member deformations e and external nodal
displacements X becomes
e=BX
(4.206)
From the principle of virtual work, matrix B is exactly the transpose of matrix A*.
Hence,
e = AT X
(4.207)
(4.208)
These three equations constitute the fundamental equations in the finite element method
of analysis.
Putting equation (4.207) into (4.208), we get
F = Se = SATX
(4.209)
(4.210)
In this system of equations, the only unknowns are the Xs, therefore the ASAT is inverted
to obtain
X = (ASAT)-1P
(4.211)
Thus, the deformation characteristics (rotations and deflections) are obtained. To get the
internal-member forces (bending moments and shear forces) for design purpose, we backsubstitute the values of X in equation (4.209).
70
The ASAT matrix is called the global matrix because it represents the system of equations
for each P or X nodal entry for the entire structure. The global matrix ASAT can easily be
constructed by superimposing the finite element matrices EASAT. All element matrices
are prefixed with E to distinguish them from the global matrices.
Nodes
P 2 - X2
P 4 - X4
P 1 - X1
P 6 - X6
P 3 - X3
K1
F 2 - e2
K4
F 3 - e3
P 1 - X1
P 3 - X3
F 1 - e1
F 1 + F2
L1
L1
1
F 5 - e5
4
Element numbers
K5
F 4 - e4
3
P 9 - X9
L4
K3
P 10 - X10
P 7 - X7
L3
K2
F 1 - e1
P 8 - X8
P 5 - X5
L2
L1
F 2 - e2
F 1 + F2
L1
71
P2
P4
P1
Node 1
F1
P3
Node 2
F2
F 1 + F2
L1
F 1 + F2
L1
K 1 X1
K 2X2
(4.212)
P3 = 0F1 + F2
(4.213)
While summing the forces, we do not include the soil spring forces KX because these are
global quantities and will be included to the global ASAT matrix separately. Hence,
summing the forces, we get
P2
F1 F2
L
L
P4
F1 F2
L
L
(4.214)
(4.215)
72
Arranging in the conventional form, we get the element A matrix for element 1
1/L
1/L
-1/L
-1/L
Matrix-4.4
1/L
-1/L
1/L
-1/L
Matrix-4.5
F1 L
2 EI
(4.216)
73
F
L
e
Moment diagram
Moment diagram
R'
R'
F
EI
F
EI
Cojugate beam
a
Cojugate beam
b
MA = 0:
F1 L L
RB L
2 EI 3
RB
RA
F1 L
6 EI
F1 L
FL FL
RB 1 1
2 EI
2 EI 6 EI
RA
F1 L
3EI
(4.217)
(4.218)
(4.219)
(4.220)
74
Applying equilibrium conditions:
Fy = 0:
R A ' RB '
F2 L
2 EI
(4.221)
MA = 0:
F2 L 2 L
RB 'L
2 EI 3
RB '
RA '
(4.222)
F2 L
3EI
(4.223)
F2 L
FL FL
RB ' 2 2
2 EI
2 EI 3EI
RA '
F2 L
6 EI
(4.224)
(4.225)
Now applying conjugate beam theorem 1, which states that the clockwise slope and the
downward deflection at any point in a real beam are equal to the positive shear and
positive bending moment at that point in the conjugate beam, respectively, we get
slope at point A,
e1 R A R A '
F1 L F2 L
3EI 6 EI
(4.226)
F1 L F2 L
6 EI 3EI
(4.227)
4 EI
2 EI
e1
e2
L
L
2 EI
4 EI
F2
e1
e2
L
L
F1
(4.228)
(4.229)
75
Arranging in the conventional form, we get the element S matrix for element 1
4EI/L
2EI/L
2EI/L
4EI/L
Matrix-4.6
FEI
ES AT ES EA T L
2 EI
L
4 EI
ES AT L
2 EI
6 EI
L2
6 EI
L2
2 EI
L
4 EI
L
2 EI
1
L
4 EI
0
L
1
L
1
L
1
0
L
1
1
L
6 EI
L2
6 EI
2
L
(4.230)
(4.231)
6 EI
L2
12 EI
L3
6 EI
L2
12 EI
3
L
Matrix-4.7
2 EI
L
6 EI
L2
4 EI
L
6 EI
2
L
6 EI
L2
12 EI
3
L
6 EI
2
L
12 EI
L3
(4.232)
76
4.19 Development of the global matrix ASAT
The global matrix ASAT is built by superimposing the element matrices EASAT. To
illustrate the procedure, the first two EASAT are superimposed on following page:
Let,
EAS AT 1
4 EI
L
1
6 EI
L2
1
2 EI
L1
6 EI
2
L1
6 EI
2
L1
12 EI
3
L1
12 EI
L1
6 EI
2
L1
12 EI
3
L1
6 EI
2
L1
12 EI
3
L1
(4.233)
6 EI
2
L2
12 EI
3
L2
6 EI
2
L2
12 EI
3
L2
(4.234)
L1
6 EI
2 EI
L1
6 EI
L1
4 EI
L1
6 EI
2
L1
and
EAS A
4 EI
L
2
6 EI
L2
2
2 EI
L2
6 EI
2
L2
6 EI
2
L2
12 EI
3
L2
6 EI
2
L2
12 EI
L2
2 EI
L2
6 EI
L2
4 EI
L2
6 EI
2
L2
be the EASAT matrices of element 1 and 2 respectively. Then superimposing these two in
the global ASAT ,we get
4 EI
L
1
6 EI
L12
2 EI
L
T
AS A 1
6 EI
2
L1
6 EI
2
L1
12 EI
3
L1
6 EI
2
L1
12 EI
3
L1
0
0
2 EI
L1
6 EI
2
L1
4 EI 4 EI
L1
L2
6 EI 6 EI
2 2
L1
L2
2 EI
L2
6 EI
2
L2
6 EI
2
L1
12 EI
3
L1
6 EI 6 EI
2 2
L1
L2
12 EI 12 EI
3
3
L1
L2
6 EI
2
L2
12 EI
3
L2
Matrix-4.8
0
0
2 EI
L2
6 EI
2
L2
4 EI
L2
6 EI
2
L2
6 EI
2
L2
12 EI
3
L2
6 EI
2
L2
12 EI
3
L2
0
77
All the element EASAT matrices are superimposed in this fashion. If the number of
elements is N then the order of the global ASAT will be (2N + 2) (2N + 2).
L L
contributo ry area2 1 2 B
2
2
(4.235)
Hence
K2
L1 L2
Bk s .
2
(4.236)
The end springs get the contributory area from only one element. For example,
K1
L1
Bk s
2
(4.237)
Because the soil pressure is higher at the edges, Bowles suggests that best results are
obtained by doubling the end springs. Hence, the end springs are multiplied by 2,
therefore
K1 L1 Bk s
(4.238)
After obtaining the values of the end springs, they are added to the global ASAT matrix.
The springs constant Ki of the ith element is added to the (2i)th element on the main
diagonal of the ASAT matrix as shown on next page
78
4 EI
L
1
6 EI
L12
2 EI
L
T
AS A 1
6 EI
2
L1
6 EI
2
L1
12 EI
K1
3
L1
6 EI
2
L1
12 EI
3
L1
0
0
2 EI
L1
6 EI
2
L1
4 EI 4 EI
L1
L2
6 EI 6 EI
2 2
L1
L2
2 EI
L2
6 EI
2
L2
6 EI
2
L1
12 EI
3
L1
6 EI 6 EI
2 2
L1
L2
12 EI 12 EI
K2
3
3
L1
L2
6 EI
2
L2
12 EI
3
L2
0
0
2 EI
L2
6 EI
2
L2
4 EI
L2
6 EI
2
L2
6 EI
2
L2
12 EI
3
L2
6 EI
2
L2
12 EI
K3
3
L2
0
Matrix-4.9
79
3. Insert the known displacements in the P matrix (so Pj = ).
4. Augment all other P matrix entries as
P(I) = P(I ) - ASATi,j for i = 1 to (2N + 2) except i= j.
Then set ASATi,j=0
To show the technique, a small example is given here. Suppose that the structure has
only four possible nodal displacements/rotations, as indicated by the following
equilibrium equations:
S11
S
21
S 31
S 41
S12
S 22
S13
S 23
S 32
S 42
S 33
S 43
S14 X 1 P1
S 24 X 2 P2
S 34 X 3 P3
S 44 X 4 P4
(4.239)
S11
S
21
0
S 41
S12
S 22
0
S 42
0 S14 X 1 P1 S13 X 3
0 S 24 X 2 P2 S 23 X 3
X3
1 0 X3
0 S 44 X 4 P4 S 43 X 3
(4.240)
Here the first matrix on left-hand side represents the ASAT matrix and the column vector
on right hand side represents P.
In the next chapter, based on the equations and matrices of this chapter, the finite element
program BEAMDEZ is developed.
CHAPTER FIVE
PROGRAM
5.1 CAD
CAD is acronym for computer-aided design (also computer-aided drafting). A CAD
system is a combination of hardware and software that enables engineers and architects to
design everything from furniture to airplanes. In addition to the software, CAD systems
require a high-quality graphics monitor; a mouse, light pen, or digitizing tablet for
drawing; and a special printer or plotter for printing design specifications.
CAD systems allow an engineer to view a design from any angle with the push of a
button and to zoom in or out for close-ups and long-distance views. In addition, the
computer keeps track of design dependencies so that when the engineer changes one
value, all other values that depend on it are automatically changed accordingly.
Until the mid 1980s, all CAD systems were specially constructed computers. Now, one
can buy CAD software that runs on general-purpose personal computers.
5.2 CAE
CAE is abbreviation of computer-aided engineering. CAE are computer systems that
analyze engineering designs. Most CAD systems have a CAE component or provide the
facility to add analysis components by writing programs, but there are also independent
CAE systems that can analyze designs produced by various CAD systems. CAE systems
are able to simulate a design under a variety of conditions to see if it actually works.
80
81
5.3 AutoCAD 2000
AutoCAD 2000 is a CAD system with a rich and unique history. First released in 1982
under the name MicroCAD, the first AutoCAD ran under the CP/M operating system on
Intel 8080 computers. That first AutoCAD release started a revolution in drafting and
design. Today, AutoCAD is translated into 18 languages and used by millions of users
worldwide on computers a thousand times more powerful than those early 8080
microprocessors.
AutoCAD 2000 continues the AutoCAD heritage and introduces new tools and facilities.
Along with many other tools, AutoCAD 2000 has built-in Visual Basic for Applications
making it easy to rapidly expand the functionality of AutoCAD by writing programs.
5.3.1 AutoCAD ActiveX Technology
AutoCAD ActiveX provides a mechanism to manipulate AutoCAD programmatically
from within or outside AutoCAD. It does this by exposing AutoCAD objects to the
outside world. Once these objects are exposed, they can be accessed by many different
programming languages and environments and by other applications such as Microsoft
Word VBA or Excel VBA.
82
Sharing data with other Windows applications, such as Microsoft Excel and
Word, is made dramatically easier.
programming environments now come with a number of visual tools to aid development.
Therefore, the line between RAD systems and other development environments has
become blurred.
It is sometimes called an
83
event-driven language because each object can react to different events such as a mouse
click.
Since its launch in 1990, the Visual Basic approach has become the norm for
programming languages. Now there are visual environments for many programming
languages, including C, C++, Pascal, and Java. Visual Basic is sometimes called a Rapid
Application Development (RAD) system becomes it enables programmers to quickly
build prototype applications.
5.6 VBA
VBA is fundamentally the same language as visual basic, except that VBA is embedded
within individual applications instead of standing alone, like VB, as an independent
programming language. VBA comes built into popular Microsoft applications like word,
excel, and project, etc, as well as in software by other companies like in AutoCAD.
Basic has evolved through DOSs GW-BASIC, BASICA, Obasic, QuickBasic, assorted
macro Basics, Visual Basic, and now VBA.
efficiency, new capabilities, and many new commands. Visual Basic is a standalone
language designed to make it easy to write programs that work under windows. As such,
visual basic is the child of DOSs Basic and QuickBasic and the parent of VBA (Visual
Basic for Applications)
84
The standalone development editions of Visual Basic, which must be purchased
separately, complement AutoCAD VBA with additional components, such as an external
database engine and report-writing capabilities.
There are four advantages to implementing VBA for AutoCAD:
VBA runs in-process with AutoCAD. This translates to very fast program execution.
85
ActiveX Automation interface can be found in the ActiveX and VBA Reference that
comes with AutoCAD package.
5.7.2 Strengths of AutoCAD ActiveX and VBA Together
The AutoCAD ActiveX/VBA interface represents several advantages over other
AutoCAD API environments:
5.7.2.1 Speed
Running in-process with VBA, ActiveX applications are faster than either AutoLISP or
ADS applications.
5.7.2.2 Ease of Use
The programming language and development environment are easy to use and come
installed with AutoCAD.
5.7.2.3 Windows Interoperability
ActiveX and VBA are designed to be used with other Windows applications and provide
an excellent path for communication of information across applications.
5.7.2.4 Rapid Prototyping
The rapid interface development of VBA provides the perfect environment for
prototyping applications, even if those applications will eventually be developed in
another language.
5.7.2.5 Programmer Base
There are millions of Visual Basic programmers around the world. AutoCAD ActiveX
and VBA technology open up AutoCAD customization and application development to
these programmers and the many more who will learn Visual Basic in the future.
5.7.3 Embedded and Global VBA Projects
An AutoCAD VBA project is a collection of code modules, class modules, and forms that
work together to perform a given function. Projects can be stored within an AutoCAD
drawing, or as a separate file.
86
Embedded projects are stored within an AutoCAD drawing.
automatically loaded whenever the drawing in which they are contained is opened in
AutoCAD, making the distribution of projects very convenient. Embedded projects are
limited and not able to open or close AutoCAD drawings because they function only
within the document where they reside. Users of embedded projects are no longer
required to find and load project files before they run a program. A time log that is
triggered when the drawing is opened is an example of a project embedded in a drawing.
With this macro users can log in and record the length of time they worked on the
drawing. The user does not have to remember to load the project before opening the
drawing; it simply is done automatically.
Global projects are stored in separate files and are more versatile because they can work
in, open, and close any AutoCAD drawing, but are not automatically loaded when a
drawing is opened. Users must know which project file contains the macro they need and
then load that project file before they can run the macro. However, global projects are
easier to share with other users, and they make excellent libraries for common macros.
An example of a project you may store in a project file is a macro that collects a bill of
materials from many drawings. This macro can be run by an administrator at the end of a
work cycle and can collect information from many drawings.
At any given time, users can have both embedded and global projects loaded into their
AutoCAD session.
87
5.8 Flow Chart of the Program
Get Beam Dimensions,
Ec, Ks, units, No of
elements, no of loads
and moments, and
options, etc.
Calculate moment of
inertia
Compute spring
constants, double end
springs
Multiply ASAT by P
matrix to get X matrix
no
If self-weight of beam is
to be considered, add its
values in P matrix
Build column vector np
from P matrix
yes
Is number of
iterations
done > max.
iterations
allowed?
no
yes
Compute F matrix
EASAT
matrix
Superimpose element
matrices in global
matrix ASAT
yes
All element
matrices
done?
88
5.9 Program Code
Note: If any line of code is longer than page width then it is continued on next line,
starting with symbol .
Figure-5.2 Form-Beamdimensions
Code: Beamdimensions
'Declare user-defined type for file I/O
Private Type Record
units55 As Boolean
conbmwt55 As Boolean
consoilsep As Boolean
numel55 As Integer
numpl55 As Integer
nummom55 As Integer
maxiter55 As Integer
numknowdef55 As Integer
numknowrot55 As Integer
89
beamlen55 As Double
beamwid55 As Double
beamdep55 As Double
beamwt55 As Double
youngs55 As Double
msr55 As Double
maxdef55 As Double
End Type
Private Sub CmdButton3_Click()
'Declare "filerec" to be of type "Record"
Dim filerec As Record
'store present filename
keepfname = FileLoaded
'Get filename for loading from "Filer" form
Filer.Show
If FileLoaded = "" Then
'if user pressed "Cancel" then restore old file name
FileLoaded = keepfname
Else
'Open File with name returned by "Filer"
'for Random input/output
Open FileLoaded For Random As #1 Len = Len(filerec)
'read data from file
Get #1, 1, filerec
'if type of units saved was not SI then
'change all units shown on "Beamdimensions" to fps units
If filerec.units55 = False Then
fpsunits.Value = True
Label10.Caption = "kip/ft"
Label3.Caption = "ft"
Label4.Caption = "ft"
Label6.Caption = "ft"
Label17.Caption = "ksf"
Label23.Caption = "kip/ft"
Label25.Caption = "inch"
'otherwise show all units shown on "Beamdimensions" to SI units
Else
90
siunits.Value = True
Label10.Caption = "kN/m"
Label3.Caption = "m"
Label4.Caption = "m"
Label6.Caption = "m"
Label17.Caption = "kPa"
Label23.Caption = "kN/m"
Label25.Caption = "mm"
End If
considerbeamwt.Value = filerec.conbmwt55 'consider beam weight
'if beam weight was saved as "to be considered" then
'make relevant controls visible
If considerbeamwt.Value = True Then
Label10.Visible = True
Label11.Visible = True
Label15.Visible = True
BeamWeight.Visible = True
'otherwise hide them
Else
Label10.Visible = False
Label11.Visible = False
Label15.Visible = False
BeamWeight.Visible = False
End If
'if soil separation and maximum deflection
'was saved as "to be considered" then
'make relevant controls visible
SoilSeparation.Value = filerec.consoilsep
If SoilSeparation.Value = True Then
Label16.Visible = True
maxiter.Visible = True
Label14.Visible = True
Label25.Visible = True
maxdef.Visible = True
'otherwise hide them
Else
Label16.Visible = False
maxiter.Visible = False
91
Label14.Visible = False
Label25.Visible = False
maxdef.Visible = False
End If
'assign values read from file to relevant controls
numelem.Value = filerec.numel55
numpl.Value = filerec.numpl55
nummom.Value = filerec.nummom55
maxiter = filerec.maxiter55
numdef = filerec.numknowdef55
numrot = filerec.numknowrot55
Beamlength = filerec.beamlen55
Beamwidth = filerec.beamwid55
Beamdepth = filerec.beamdep55
BeamWeight = filerec.beamwt55
youngs = filerec.youngs55
msr = filerec.msr55
maxdef = filerec.maxdef55
'Close the file
Close #1
'set a flag that file has been loaded
filestatus.Value = True
End If
End Sub
Private Sub CommandButton1_Click()
'shift control to "Elements" form
BeamDimensions.Hide
Elements.Show
End Sub
Private Sub CommandButton2_Click()
'Exit the program
End
End Sub
Private Sub considerbeamwt_AfterUpdate()
'if user wants the program consider beam weight and
92
'checks the "considerbeamwt" checkbox then make
'the relevant controls visible
If considerbeamwt.Value = True Then
Label10.Visible = True
Label11.Visible = True
Label15.Visible = True
BeamWeight.Visible = True
End If
'hide these controls when user unchecks
If considerbeamwt.Value = False Then
Label10.Visible = False
Label11.Visible = False
Label15.Visible = False
BeamWeight.Visible = False
End If
End Sub
Private Sub fpsunits_AfterUpdate()
'if user selects fps units, change all units to
'fps units on form "Beamdimensions"
If fpsunits.Value = True Then
Label10.Caption = "kip/ft"
Label3.Caption = "ft"
Label4.Caption = "ft"
Label6.Caption = "ft"
Label17.Caption = "ksf"
Label23.Caption = "kip/ft"
Label25.Caption = "inch"
'convert the written values if checkbox "convertval" is checked
If convertval = True Then
If Beamdepth <> "" Then Beamdepth = Beamdepth / 0.3048
If Beamwidth <> "" Then Beamwidth = Beamwidth / 0.3048
If Beamlength <> "" Then Beamlength = Beamlength / 0.3048
If BeamWeight <> "" Then BeamWeight = BeamWeight / 157.087463846
If msr <> "" Then msr = msr / 157.087463846
If youngs <> "" Then youngs = youngs / 47.8802589803
If maxdef <> "" Then maxdef = maxdef / 25.4
End If
93
End If
End Sub
Private Sub siunits_AfterUpdate()
'if user selects SI units, change all units to
'SI units on form "Beamdimensions"
If siunits.Value = True Then
Label10.Caption = "kN/m"
Label23.Caption = "kN/m"
Label3.Caption = "m"
Label4.Caption = "m"
Label6.Caption = "m"
Label17 = "kPa"
Label25 = "mm"
'convert the written values if checkbox "convertval" is checked
If convertval = True Then
If Beamdepth <> "" Then Beamdepth = Beamdepth * 0.3048
If Beamwidth <> "" Then Beamwidth = Beamwidth * 0.3048
If Beamlength <> "" Then Beamlength = Beamlength * 0.3048
If BeamWeight <> "" Then BeamWeight = BeamWeight * 157.087463846
If msr <> "" Then msr = msr * 157.087463846
If youngs <> "" Then youngs = youngs * 47.8802589803
If maxdef <> "" Then maxdef = maxdef * 25.4
End If
End If
End Sub
Private Sub SoilSeparation_AfterUpdate()
'if user wants the program consider for soil separation and
'max. deflection and checks the "SoilSeparation" checkbox then
'make the relevant controls visible
If SoilSeparation.Value = True Then
Label16.Visible = True
maxiter.Visible = True
Label14.Visible = True
Label25.Visible = True
maxdef.Visible = True
End If
94
'hide these controls when user unchecks
If SoilSeparation.Value = False Then
Label16.Visible = False
maxiter.Visible = False
Label14.Visible = False
Label25.Visible = False
maxdef.Visible = False
End If
End Sub
Private Sub UserForm_Initialize()
'show program name and picture of foundation beam
starter.Show
'Declare "filerec" to be of type "Record"
Dim filerec As Record
'set name of initialization file
FileLoaded.text = "init.bdt"
'Open Initialization File "init.bdt"
'for Random input/output
Open "init.bdt" For Random As #1 Len = Len(filerec)
'read data from file
Get #1, 1, filerec
'if type of units saved was not SI then
'change all units shown on "Beamdimensions" to fps units
If filerec.units55 = False Then
fpsunits.Value = True
Label10.Caption = "kip/ft"
Label3.Caption = "ft"
Label4.Caption = "ft"
Label6.Caption = "ft"
End If
'if beam weight was saved as "to be considered" then
'make relevant controls visible
considerbeamwt.Value = filerec.conbmwt55 'consider beam weight
If considerbeamwt.Value = True Then
Label10.Visible = True
Label11.Visible = True
Label15.Visible = True
95
'otherwise hide them
Else
Label10.Visible = False
Label11.Visible = False
Label15.Visible = False
End If
SoilSeparation.Value = filerec.consoilsep
'if soil separation and maximum deflection
'was saved as "to be considered" then
'make relevant controls visible
If SoilSeparation.Value = True Then
Label14.Visible = True
Label16.Visible = True
Label25.Visible = True
maxdef.Visible = True
maxiter.Visible = True
'otherwise hide them
Else
Label14.Visible = False
Label16.Visible = False
Label25.Visible = False
maxdef.Visible = False
maxiter.Visible = False
End If
'assign values read from file to relevant controls
numelem.Value = filerec.numel55
numpl.Value = filerec.numpl55
nummom.Value = filerec.nummom55
maxiter = filerec.maxiter55
numdef = filerec.numknowdef55
numrot = filerec.numknowrot55
Beamlength = filerec.beamlen55
Beamwidth = filerec.beamwid55
Beamdepth = filerec.beamdep55
BeamWeight = filerec.beamwt55
youngs = filerec.youngs55
msr = filerec.msr55
maxdef = filerec.maxdef55
96
'Close the file
Close #1
'set a flag that file has been loaded
filestatus.Value = True
End Sub
Figure-5.3 Form-boundary
Code: boundary
'Declare user-defined type for file I/O
Private Type Record
units55 As Boolean
conbmwt55 As Boolean
consoilsep As Boolean
numel55 As Integer
numpl55 As Integer
nummom55 As Integer
maxiter55 As Integer
numknowdef55 As Integer
numknowrot55 As Integer
beamlen55 As Double
beamwid55 As Double
beamdep55 As Double
97
beamwt55 As Double
youngs55 As Double
msr55 As Double
maxdef55 As Double
End Type
'Declare user-defined type for file I/O
Private Type doubler
doub As Double
End Type
Private Sub CommandButton1_Click()
'return control back to the calling routine
boundary.Hide
End Sub
Private Sub CommandButton2_Click()
'exit program
End
End Sub
Private Sub CommandButton3_Click()
If curnode <> "" Then
'if "curnode" is not empty then put "none" as
'known deflection in ListBox1 at current position
ListBox1.List(Val(curnode) - 1, 1) = "none"
'put "none" in "curdef" too
curdef = "none"
'reset numdef and numrot to zero
numdef = 0
numrot = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'count known deflections
If ListBox1.List(i - 1, 1) <> "none" Then numdef = numdef + 1
'count known rotations
If ListBox1.List(i - 1, 2) <> "none" Then numrot = numrot + 1
Next i
Else
98
'if "curnode" is empty then give erro message
beep
feedback = MsgBox("Input node number first", 48, "Error!")
End If
End Sub
Private Sub CommandButton4_Click()
If curnode <> "" Then
'if "curnode" is not empty then put "none" as
'known rotation in ListBox1 at current position
ListBox1.List(Val(curnode) - 1, 2) = "none"
'put "none" in "currot" too
currot = "none"
'reset numdef and numrot to zero
numdef = 0
numrot = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'count known deflections
If ListBox1.List(i - 1, 1) <> "none" Then numdef = numdef + 1
'count known rotations
If ListBox1.List(i - 1, 2) <> "none" Then numrot = numrot + 1
Next i
Else
beep
'if "curnode" is empty then give erro message
feedback = MsgBox("Input node number first", 48, "Error!")
End If
End Sub
Private Sub curdef_AfterUpdate()
If curnode <> "" Then
'if there is any number placed in "curnode" then put
'current value of "curdef" in ListBox1
ListBox1.List(Val(curnode) - 1, 1) = curdef
'reset numdef and numrot to zero
numdef = 0
numrot = 0
99
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'count number of known deflections
If ListBox1.List(i - 1, 1) <> "none" Then numdef = numdef + 1
'count number of known rotations
If ListBox1.List(i - 1, 2) <> "none" Then numrot = numrot + 1
Next i
Else
'if "curnode" is empty then give error message
beep
curdef = ""
feedback = MsgBox("Input node number first", 48, "Error!")
End If
End Sub
Private Sub curnode_AfterUpdate()
If Val(curnode) < (BeamDimensions.numelem + 2) And Val(curnode) > 0 And
Val(curnode) = Int(Val(curnode)) Then
'if current node number is less or equal to total number of nodes,
positive, and integer then
'select corresponding entry in ListBox1 and
'put value of selected known deflection and rotation from ListBox1 in
"curdef" and "currot"
ListBox1.ListIndex = Val(curnode) - 1
curdef = ListBox1.List(Val(curnode) - 1, 1)
currot = ListBox1.List(Val(curnode) - 1, 1)
Else
'otherwise give error beep, and clear the text boxes for re-entry
beep
curnode = ""
curdef = ""
currot = ""
'set flag ctrlbck for getting focus back
ctrlbck.Value = True
End If
End Sub
Private Sub curdef_Enter()
100
If ctrlbck.Value = True Then
'give focus back to "curnode" if it contained an invalid entry
ctrlbck.Value = False
curnode.SetFocus
End If
End Sub
Private Sub currot_AfterUpdate()
If curnode <> "" Then
'if there is any number placed in "curnode" then put
'current value of "currot" in ListBox1
ListBox1.List(Val(curnode) - 1, 2) = currot
'reset numdef and numrot to zero
numdef = 0
numrot = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'count number of known deflections
If ListBox1.List(i - 1, 1) <> "none" Then numdef = numdef + 1
'count number of known rotations
If ListBox1.List(i - 1, 2) <> "none" Then numrot = numrot + 1
Next i
Else
'if "curnode" is empty then give error message
beep
currot = ""
feedback = MsgBox("Input node number first", 48, "Error!")
End If
End Sub
Private Sub ListBox1_AfterUpdate()
'if ListBox1 is clicked, set the values of clicked
'entry in "curnode", "curdef", and "currot"
curnode = ListBox1.Value
curdef = ListBox1.List(Val(curnode) - 1, 1)
currot = ListBox1.List(Val(curnode) - 1, 2)
End Sub
101
Private Sub UserForm_Initialize()
If BeamDimensions.fpsunits = True Then
'set units of "boundary" to fps if set in BeamDimensions
Label2.Caption = "Deflection
(ft):"
Label10.Caption = "(ft)"
End If
'read total number of nodes from form-"BeamDimensions"
numnode = 1 + BeamDimensions.numelem
'read total number of elements from form-"BeamDimensions"
numelem = BeamDimensions.numelem
loadflag = True
'dimension an array according to number of nodes
numnode = numnode - 1
ReDim nodedata(numnode, 3)
If BeamDimensions.filestatus = True Then
'if a file has been read in BeamDimensions then
'Declare filerec to be of user-defined type Record
Dim filerec As Record
'open same file for random I/O which was opened in "BeamDimensions"
Open BeamDimensions.FileLoaded For Random As #1 Len = Len(filerec)
'Read record from file.
Get #1, 1, filerec
'Close the file
Close #1
'loop for all nodes
For i = 0 To numnode
'put numbers in first column
nodedata(i, 0) = i + 1
'initialize all entries for known deflections to "none"
nodedata(i, 1) = "none"
'initialize all entries for known rotations to "none"
nodedata(i, 2) = "none"
Next i
'put values of array "nodedata" in "ListBox1"
ListBox1.List() = nodedata
'check if number of elements is same in file as
'on "BeamDimensions"
If filerec.numel55 = BeamDimensions.numelem Then
102
'Declare "nod2" to be of user type "doubler"
Dim nod2 As doubler
'get name of "beam data (bdt) file" from "BeamDimensions"
file1 = BeamDimensions.FileLoaded
'truncate ".bdt" and concatenate ".ndt" (node data)
len1 = Len(file1) - 4
file1 = Left(file1, len1)
file1 = file1 & ".ndt"
'compute location in .ndt file where the entries
'for known deflections written
currec = (filerec.numel55 + 1) * 3 - 1
If filerec.numknowdef55 > 0 Then
'if there are any known deflections in file then
'open the .ndt file
Open file1 For Random As #1 Len = Len(nod2)
'loop for all known deflections
For i = 1 To filerec.numknowdef55
'compute location of next entry in .ndt file
currec = currec + 1
'read node number from file
Get #1, currec, nod2
'convert this number to integer and put it
'in "gotnode"
gotnode = Int(nod2.doub)
'compute location of next entry in .ndt file
currec = currec + 1
'read value of known deflection
Get #1, currec, nod2
'put this value in "gotvalue"
gotvalue = nod2.doub
'insert "gotvalue" at node number "gotnode" in ListBox1
ListBox1.List(gotnode, 1) = gotvalue
Next i
'close the file
Close #1
End If
If filerec.numknowrot55 > 0 Then
'if there are any known deflections in file then
103
'open the .ndt file
Open file1 For Random As #1 Len = Len(nod2)
'loop for all known rotations
For i = 1 To filerec.numknowrot55
'compute location of next entry in .ndt file
currec = currec + 1
'read node number from file
Get #1, currec, nod2
'convert this number to integer and put it
'in "gotnode"
gotnode = Int(nod2.doub)
'compute location of next entry in .ndt file
currec = currec + 1
'read value of known rotation
Get #1, currec, nod2
'put this value in "gotvalue"
gotvalue = nod2.doub
'insert "gotvalue" at node number "gotnode" in ListBox1
ListBox1.List(gotnode, 2) = gotvalue
Next i
'close the file
Close #1
End If
End If
End If
'reset numdef and numrot to zero
numdef = 0
numrot = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'count known deflections
If ListBox1.List(i - 1, 1) <> "none" Then numdef = numdef + 1
'count known rotations
If ListBox1.List(i - 1, 2) <> "none" Then numrot = numrot + 1
Next i
End Sub
104
105
106
Code: Elements
'Declare user-defined type for file I/O
Private Type Record
units55 As Boolean
conbmwt55 As Boolean
consoilsep As Boolean
numel55 As Integer
numpl55 As Integer
nummom55 As Integer
maxiter55 As Integer
numknowdef55 As Integer
numknowrot55 As Integer
beamlen55 As Double
beamwid55 As Double
beamdep55 As Double
beamwt55 As Double
youngs55 As Double
msr55 As Double
maxdef55 As Double
End Type
'Declare user-defined type for file I/O
Private Type doubler
doub As Double
End Type
'declare function Fix2 for converting values to
'2 decimal places
Private Function Fix2(NumArg) As Double
temp1 = NumArg
temp2 = Fix(NumArg)
temp3 = temp1 - temp2
temp3 = Fix(temp3 * 100) / 100
Fix2 = temp2 + temp3
'check for -ve +ve
End Function
Private Sub CommandButton1_Click()
'exit the program
107
End
End Sub
Private Sub CommandButton2_Click()
'give control to form-saver for getting a filename
saver.Show
'read the filename from form-saver
filenamer = saver.filenamer.text
'if user has not pressed cancel
If filenamer <> "" Then
'declare nod2 of user type doubler
Dim nod2 As doubler
'declare filerec to be of user type Record
Dim filerec As Record
'prepare values for saving
filerec.units55 = BeamDimensions.siunits.Value
filerec.conbmwt55 = BeamDimensions.considerbeamwt.Value 'consider beam
weight
filerec.consoilsep = BeamDimensions.SoilSeparation.Value 'consider soil
separation
filerec.numel55 = BeamDimensions.numelem.Value
filerec.numpl55 = loadmom.loadnum.Value
filerec.nummom55 = loadmom.momnum.Value
filerec.maxiter55 = BeamDimensions.maxiter
filerec.numknowdef55 = boundary.numdef
filerec.numknowrot55 = boundary.numrot
filerec.beamlen55 = BeamDimensions.Beamlength
filerec.beamwid55 = BeamDimensions.Beamwidth
filerec.beamdep55 = BeamDimensions.Beamdepth
filerec.beamwt55 = BeamDimensions.BeamWeight
filerec.youngs55 = BeamDimensions.youngs
filerec.msr55 = BeamDimensions.msr
filerec.maxdef55 = BeamDimensions.maxdef
'concatenate ".bdt" to filename
curfile = filenamer & ".bdt"
'open file for random I/O
Open curfile For Random As #1 Len = Len(filerec)
'write data to file
108
Put #1, 1, filerec
'Close the file
Close #1
'concatenate ".ndt" to filename
curfile = filenamer & ".ndt"
'open file for random I/O
Open curfile For Random As #1 Len = Len(nod2)
'read number of elements
currec = BeamDimensions.numelem
'loop for all elements
For i = 1 To currec
'read element lengths
nod2.doub = memberlen.ListBox1.List(i - 1, 1)
'write element lenghts to file
Put #1, i, nod2
Next i
'loop for all nodes
For i = 0 To currec
'read loads on nodes
nod2.doub = loadmom.ListBox1.List(i, 1)
'compute location in file for putting next value
recnum = i + currec + 1
'write load value to file
Put #1, recnum, nod2
Next i
'loop for all nodes
For i = 0 To currec
'read moments on nodes
nod2.doub = loadmom.ListBox1.List(i, 2)
'compute location in file for putting next value
recnum = recnum + 1
'write moment value to file
Put #1, recnum, nod2
Next i
'write boundary condition if any
If boundary.numdef > 0 Then
'if there are any known deflections
'loop for all nodes
109
For i = 0 To currec
If boundary.ListBox1.List(i, 1) <> "none" Then
'if there is a known deflection on current node
'then note the node number
nod2.doub = i
'compute location in file for putting next value
recnum = recnum + 1
'write node number to file
Put #1, recnum, nod2
'read value of known deflection
nod2.doub = boundary.ListBox1.List(i, 1)
'compute location in file for putting next value
recnum = recnum + 1
'write value of known deflection to file
Put #1, recnum, nod2
End If
Next i
End If
If boundary.numrot > 0 Then
'if there are any known rotations
'loop for all nodes
For i = 0 To currec
If boundary.ListBox1.List(i, 2) <> "none" Then
'if there is a known rotation on current node
'then note the node number
nod2.doub = i
'compute location in file for putting next value
recnum = recnum + 1
'write node number to file
Put #1, recnum, nod2
'read value of known rotation
nod2.doub = boundary.ListBox1.List(i, 2)
'compute location in file for putting next value
recnum = recnum + 1
'write value of known rotation to file
Put #1, recnum, nod2
End If
Next i
110
End If
'close the file
Close #1
'concatenate message string and filename
curfile = "File has been saved as " & curfile
'tell user that file has been saved
response = MsgBox(curfile, 64)
End If
End Sub
Private Sub CommandButton3_Click()
'give control to form-Exporter for getting a filename
Exporter.Show
'read the filename from form-Exporter
filenamer = Exporter.filenamer.text
'if user has not pressed cancel
If filenamer <> "" Then
'see if "siunits" is selected on form-BeamDimensions
siunits = BeamDimensions.siunits.Value
If siunits Then
'if siunits are selected then prepare
'appropriate strings for units
ulength = " (m)"
uforce = " (kN)"
umom = " (kN-m)"
uunitwt = " (kN/m^3)"
uyoungs = " (kPa)"
ufpl = " (kN/m)"
umomin = " (m^4)"
umaxdef = " mm"
Else
'if fpsunits are selected then
'prepare appropriate strings for units
ulength = " (ft)"
uforce = " (kip)"
umom = " (kip-ft)"
uunitwt = " (kcf)"
uyoungs = " (ksf)"
111
ufpl = " (kip/ft)"
umomin = " (ft^4)"
umaxdef = " inch"
End If
'concatenate ".txt" to filename
curfile = filenamer & ".txt"
'open file for sequential output
Open curfile For Output As #2
'write descriptions, values, and units to file
'which are self-explanatory
Print #2, "Beam Data:"
Print #2,
Print #2, "beam length = "; Beamlength.Value; ulength
Print #2, "beam width = "; Beamwidth.Value; ulength
Print #2, "beam depth = "; Beamdepth.Value; ulength
Print #2,
Print #2, "number of elements = "; numelem.Value
Print #2,
Print #2, "Element"; Tab; "Length"; ulength
'loop for all elements
For i = 1 To numelem.Value
Print #2, i; Tab; memberlen.ListBox1.List(i - 1, 1)
Next i
Print #2,
Print #2, "modulus of subgrade reaction, ks = ";
BeamDimensions.msr.Value; uunitwt
Print #2,
Print #2, "modulus of elasticity for concrete = ";
BeamDimensions.youngs.Value; uyoungs
Print #2,
Print #2, "moment of inertia of beam = "; mominertia; umomin
Print #2,
'if check for soil separation and max.deflection is selected
If BeamDimensions.SoilSeparation = True Then
Print #2, "maximum allowable deflection= "; BeamDimensions.maxdef;
umaxdef
Print #2,
Print #2, "number of iterations = "; BeamDimensions.maxiter
112
Print #2,
End If
'if beam self weigt was considered
If BeamDimensions.considerbeamwt = True Then
Print #2, "unit weight of beam= "; BeamDimensions.BeamWeight; uunitwt
Print #2,
End If
Print #2, "Applied Loads:"
Print #2,
Print #2, "number of point loads = "; loadmom.loadnum.Value
Print #2, "number of moments = "; loadmom.momnum.Value
Print #2,
Print #2, "node"; Tab; "point load"; uforce; Tab(41); "moment"; umom
'loop for all nodes
For i = 0 To numelem.Value
Print #2, 1 + i; Tab; loadmom.ListBox1.List(i, 1); Tab(40);
loadmom.ListBox1.List(i, 2)
Next i
Print #2,
Print #2, "Rotations and Deflections:"
Print #2,
Print #2, "node"; Tab; "rotation (rads)"; Tab(41); "deflection"; ulength
'loop for all nodes
For i = 0 To numelem.Value
Print #2, 1 + i; Tab; ListBox1.List(i, 1); Tab(40); ListBox1.List(i,
2)
Next i
Print #2,
Print #2, "Moments on Elements:"
Print #2,
Print #2, "element"; Tab; "1st node"; umom; Tab(41); "2nd node"; umom
'loop for all nodes
For i = 1 To numelem.Value
Print #2, i; Tab; ListBox2.List(i - 1, 1); Tab(40); ListBox2.List(i 1, 2)
Next i
Print #2,
Print #2,
113
Print #2, "Shear at Nodes:"
Print #2,
Print #2, "node"; Tab; "shear on left"; uforce; Tab(41); "shear on
right"; uforce
'loop for all nodes
For i = 0 To numelem.Value
Print #2, 1 + i; Tab; ListBox3.List(i, 1); Tab(40); ListBox3.List(i,
2)
Next i
Print #2,
Print #2, "Moments at Nodes:"
Print #2,
Print #2, "node"; Tab; "moment on left"; umom; Tab(41); "moment on
right"; umom
'loop for all nodes
For i = 0 To numelem.Value
Print #2, 1 + i; Tab; ListBox4.List(i, 1); Tab(40); ListBox4.List(i,
2)
Next i
Print #2,
Print #2, "Spring Forces:"
Print #2,
Print #2, "node"; Tab; "spring ks"; ufpl; Tab(41); "spring force";
uforce
'loop for all nodes
For i = 1 To (numelem.Value + 1)
Print #2, i; Tab; ListBox7.List(i, 1); Tab(40); ListBox7.List(i, 2)
Next i
Print #2,
Print #2, "Soil Pressure:"
Print #2,
Print #2, "node"; Tab; "soil pressure Q"; uyoungs
'loop for all nodes
For i = 1 To (numelem.Value + 1)
Print #2, i; Tab; ListBox8.List(i - 1, 1)
Next i
If boundary.numdef > 0 Or boundary.numrot > 0 Then
114
'if there are any boundary conditions
Print #2, "Boundary Conditions:"
Print #2,
Print #2, "number of known deflections = "; boundary.numdef.Value
Print #2, "number of known rotations = "; boundary.numrot.Value
Print #2,
Print #2, "node"; Tab; "known deflection"; ulength; Tab(41); "known
rotation"; " (rad)"
'loop for all nodes
For i = 0 To numelem.Value
If boundary.ListBox1.List(i, 1) <> "none" Or
boundary.ListBox1.List(i, 2) <> "none" Then
Print #2, 1 + i; Tab; boundary.ListBox1.List(i, 1); Tab(40);
boundary.ListBox1.List(i, 2)
End If
Next i
End If
'close the file
Close #2
'concatenate message string and filename
curfile = "File has been saved as " & curfile
'tell user that file has been saved
response = MsgBox(curfile, 64)
End If
End Sub
Private Sub CommandButton4_Click()
'if user clicks "Print This Screen" then
'print a snapshot of current screen to
'default printer
Elements.PrintForm
End Sub
Private Sub CommandButton5_Click()
'if user clicks "New Problem" then
'unload all forms and give control to BeamDimensions
Unload BeamDimensions
Unload memberlen
115
Unload loadmom
Unload boundary
Unload Filer
Unload saver
Unload Exporter
Unload Elements
BeamDimensions.Show
End Sub
Private Sub CommandButton6_Click()
'if user clicks "Plot Diagrams" then
'declare plineobj to be of type AutoCAD polyline
Dim plineObj As AcadLWPolyline
'declare array for drawing polyline
Dim points(0 To 9) As Double
'get value of original beam depth
beamdepthorg = Val(Beamdepth)
'get value of beam length
beamlengthd = Val(Beamlength)
'set beamdepthd for scaling according
'to length of beam (this doesn't have anything
'to do with original beam length)
beamdepthd = Beamlength / 10
'Compute coordinates for drawing the beam
'Define the 2D polyline points
points(0) = 0: points(1) = 11 * beamdepthd
points(2) = beamlengthd: points(3) = 11 * beamdepthd
points(4) = beamlengthd: points(5) = 11 * beamdepthd + beamdepthorg
points(6) = 0: points(7) = 11 * beamdepthd + beamdepthorg
points(8) = 0: points(9) = 11 * beamdepthd
'draw a beam using light weight Polyline object
'in model space of current drawing
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
'compute coordinates for drawing another beam
'to show as 'beam before deflection'
points(0) = beamlengthd + beamdepthd: points(1) = 11 * beamdepthd
points(2) = beamlengthd * 2 + beamdepthd: points(3) = 11 * beamdepthd
116
points(4) = beamlengthd * 2 + beamdepthd: points(5) = 11 * beamdepthd +
beamdepthorg
points(6) = beamlengthd + beamdepthd: points(7) = 11 * beamdepthd +
beamdepthorg
points(8) = beamlengthd + beamdepthd: points(9) = 11 * beamdepthd
'draw a beam using light weight Polyline object
'in model space of current drawing
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
'set color of this beam as light gray
plineObj.Color = 253
'update beam for color effect
plineObj.Update
'make overall boundary border
points(0) = -beamdepthd: points(1) = 0
points(2) = (beamlengthd + beamdepthd) * 2: points(3) = 0
points(4) = (beamlengthd + beamdepthd) * 2: points(5) = 14 * beamdepthd
points(6) = -beamdepthd: points(7) = 14 * beamdepthd
points(8) = -beamdepthd: points(9) = 0
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
'set color of this beam as cyan
plineObj.Color = acCyan
'update border for color effect
plineObj.Update
'make box for soil pressure
points(0) = beamlengthd + beamdepthd: points(1) = 6 * beamdepthd
points(2) = 2 * beamlengthd + beamdepthd: points(3) = 6 * beamdepthd
points(4) = 2 * beamlengthd + beamdepthd: points(5) = 8 * beamdepthd
points(6) = beamlengthd + beamdepthd: points(7) = 8 * beamdepthd
points(8) = beamlengthd + beamdepthd: points(9) = 6 * beamdepthd
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
'draw shear force diagram
nm = Val(BeamDimensions.numelem)
ReDim ptmatrix(nm, 2)
For i = 0 To nm
ptmatrix(i, 1) = Val(ListBox3.List(i, 1))
117
ptmatrix(i, 2) = Val(ListBox3.List(i, 2))
Next i
drawnodes = (nm + 1) * 4 - 1
ReDim drawpoints(drawnodes + 2) As Double
drawpoints(0) = 0
drawpoints(2) = 0
drawpoints(drawnodes + 1) = 0
runlen = 0
runnum = 0
maxval = ptmatrix(0, 1)
minval = ptmatrix(0, 1)
For i = 0 To nm
If ptmatrix(i, 1) < minval Then minval = ptmatrix(i, 1)
If ptmatrix(i, 1) > maxval Then maxval = ptmatrix(i, 1)
If ptmatrix(i, 2) < minval Then minval = ptmatrix(i, 2)
If ptmatrix(i, 2) > maxval Then maxval = ptmatrix(i, 2)
Next i
scaledepth = maxval - minval
scalefac = (beamdepthd * 3) / scaledepth
For i = 4 To drawnodes Step 4
runlen = runlen + Val(ListBox10.List(runnum, 1))
'memlen
runnum = runnum + 1
drawpoints(i) = runlen
drawpoints(i + 2) = runlen
Next i
runnum = 0
For i = 1 To drawnodes Step 4
drawpoints(i) = -(ptmatrix(runnum, 1) + minval) * scalefac + beamdepthd
* 7 + (maxval + minval) * scalefac
drawpoints(i + 2) = -(ptmatrix(runnum, 2) + minval) * scalefac +
beamdepthd * 7 + (maxval + minval) * scalefac
runnum = runnum + 1
Next i
drawpoints(drawnodes + 2) = drawpoints(drawnodes)
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
'draw beam elements
runnum = 0
118
j = 0
For i = 1 To drawnodes Step 4
drawpoints(i) = j + beamdepthd * 11
If j = 0 Then
j = beamdepthorg
Else
j = 0
End If
drawpoints(i + 2) = j + beamdepthd * 11
runnum = runnum + 1
Next i
drawpoints(drawnodes + 2) = drawpoints(drawnodes)
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
'draw bending moment diagram
For i = 0 To nm
ptmatrix(i, 1) = Val(ListBox4.List(i, 1))
ptmatrix(i, 2) = Val(ListBox4.List(i, 2))
Next i
drawpoints(0) = 0
drawpoints(2) = 0
runlen = 0
runnum = 0
maxval = ptmatrix(0, 1)
minval = ptmatrix(0, 1)
For i = 0 To nm
If ptmatrix(i, 1) < minval Then minval = ptmatrix(i, 1)
If ptmatrix(i, 1) > maxval Then maxval = ptmatrix(i, 1)
If ptmatrix(i, 2) < minval Then minval = ptmatrix(i, 2)
If ptmatrix(i, 2) > maxval Then maxval = ptmatrix(i, 2)
Next i
Debug.Print "minval: "; minval; "
maxval:
"; maxval
119
drawpoints(i) = runlen
drawpoints(i + 2) = runlen
Next i
runnum = 0
For i = 1 To drawnodes Step 4
drawpoints(i) = -(minval + ptmatrix(runnum, 1)) * scalefac + beamdepthd
+ (maxval + minval) * scalefac
drawpoints(i + 2) = -(minval + ptmatrix(runnum, 2)) * scalefac +
beamdepthd + (maxval + minval) * scalefac
runnum = runnum + 1
Next i
drawpoints(drawnodes + 2) = drawpoints(drawnodes)
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
ThisDrawing.Application.ZoomExtents
'make deflection beam and soil pressure diagram
drawnodes = (nm + 1) * 2 - 1
ReDim drawpoints(drawnodes) As Double
For i = 0 To nm
ptmatrix(i, 1) = -Val(ListBox8.List(i, 1))
ptmatrix(i, 2) = Val(ListBox1.List(i, 2))
Next i
drawpoints(0) = beamlengthd + beamdepthd
runlen = 0
runnum = 0
maxval = 0
minval = 0
For i = 0 To nm
If ptmatrix(i, 2) < minval Then minval = ptmatrix(i, 2)
If ptmatrix(i, 2) > maxval Then maxval = ptmatrix(i, 2)
Next i
scaledepth = maxval - minval
If scaledepth = 0 Then scaledepth = 1
scalefac = (beamdepthd * 2) / scaledepth
Debug.Print "scalefactor", scalefac
For i = 2 To drawnodes Step 2
runlen = runlen + Val(ListBox10.List(runnum, 1))
runnum = runnum + 1
120
drawpoints(i) = runlen + beamlengthd + beamdepthd
Next i
'draw top face
runnum = 0
For i = 1 To drawnodes Step 2
drawpoints(i) = -(ptmatrix(runnum, 2)) * scalefac + beamdepthd * 11 +
beamdepthorg
runnum = runnum + 1
Next i
topfacex1 = drawpoints(0)
topfacey1 = drawpoints(1)
topfacex2 = drawpoints(drawnodes - 1)
topfacey2 = drawpoints(drawnodes)
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
'draw center line
runnum = 0
For i = 1 To drawnodes Step 2
drawpoints(i) = drawpoints(i) - beamdepthorg / 2
runnum = runnum + 1
Next i
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
plineObj.Color = acRed
plineObj.Update
'draw bottom face
runnum = 0
For i = 1 To drawnodes Step 2
drawpoints(i) = drawpoints(i) - beamdepthorg / 2
runnum = runnum + 1
Next i
botfacex1 = drawpoints(0)
botfacey1 = drawpoints(1)
botfacex2 = drawpoints(drawnodes - 1)
botfacey2 = drawpoints(drawnodes)
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
Dim startPoint(0 To 2) As Double
121
Dim endPoint(0 To 2) As Double
startPoint(0) = topfacex1: startPoint(1) = topfacey1: startPoint(2) = 0#
endPoint(0) = botfacex1: endPoint(1) = botfacey1: endPoint(2) = 0#
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
startPoint(0) = topfacex2: startPoint(1) = topfacey2: startPoint(2) = 0#
endPoint(0) = botfacex2: endPoint(1) = botfacey2: endPoint(2) = 0#
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
'draw original center line
runnum = 0
For i = 1 To drawnodes Step 2
drawpoints(i) = beamdepthd * 11 + beamdepthorg / 2
runnum = runnum + 1
Next i
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
plineObj.Color = acRed
plineObj.Update
'draw soil pressure diagram
maxval = ptmatrix(0, 1)
minval = ptmatrix(0, 1)
For i = 0 To nm
If ptmatrix(i, 1) < minval Then minval = ptmatrix(i, 1)
If ptmatrix(i, 1) > maxval Then maxval = ptmatrix(i, 1)
Next i
scaledepth = maxval - minval
If scaledepth = 0 Then scaledepth = 1
scalefac = (beamdepthd * 2) / scaledepth
runnum = 0
For i = 1 To drawnodes Step 2
drawpoints(i) = -(minval + ptmatrix(runnum, 1)) * scalefac + beamdepthd
* 6 + (maxval + minval) * scalefac
runnum = runnum + 1
Next i
Set plineObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(drawpoints)
'draw loads and moments
ReDim lpoints(0 To 11) As Double
beamtop = beamdepthd * 11 + Beamdepth
122
lpoints(0) = 0#: lpoints(1) = 1.8 * beamdepthd + beamtop
lpoints(2) = 0#: lpoints(3) = 0.3 * beamdepthd + beamtop
lpoints(4) = -0.08 * beamdepthd: lpoints(5) = 0.3 * beamdepthd + beamtop
lpoints(6) = 0#: lpoints(7) = 0 * beamdepthd + beamtop
lpoints(8) = 0.08 * beamdepthd: lpoints(9) = 0.3 * beamdepthd + beamtop
lpoints(10) = 0#: lpoints(11) = 0.3 * beamdepthd + beamtop
Dim arcObj As AcadArc
Dim centerPoint(0 To 2) As Double
Dim radius As Double
Dim startAngleInDegree As Double
Dim endAngleInDegree As Double
centerPoint(0) = 0#: centerPoint(1) = beamtop + beamdepthd: centerPoint(2)
= 0#
radius = 0.4 * beamdepthd
startAngleInDegree = 0#
endAngleInDegree = 210#
' Convert the angles in degrees to angles in radians
Dim startAngleInRadian As Double
Dim endAngleInRadian As Double
startAngleInRadian = startAngleInDegree * 3.141592 / 180#
endAngleInRadian = endAngleInDegree * 3.141592 / 180#
ReDim mpoints(0 To 7) As Double
mpoints(0) = 0.35 * beamdepthd: mpoints(1) = beamdepthd + beamtop
mpoints(2) = 0.45 * beamdepthd: mpoints(3) = 0.98 * beamdepthd + beamtop
mpoints(4) = 0.36 * beamdepthd: mpoints(5) = 0.8 * beamdepthd + beamtop
mpoints(6) = 0.35 * beamdepthd: mpoints(7) = beamdepthd + beamtop
'loop for all nodes
runnum = 0
runlen = 0
For i = 0 To nm
lpoints(0) = lpoints(0) + runlen
lpoints(2) = lpoints(2) + runlen
lpoints(4) = lpoints(4) + runlen
lpoints(6) = lpoints(6) + runlen
lpoints(8) = lpoints(8) + runlen
lpoints(10) = lpoints(10) + runlen
centerPoint(0) = centerPoint(0) + runlen
mpoints(0) = mpoints(0) + runlen
123
mpoints(2) = mpoints(2) + runlen
mpoints(4) = mpoints(4) + runlen
mpoints(6) = mpoints(6) + runlen
If Val(loadmom.ListBox1.List(runnum, 1)) <> 0 Then
'draw downward arrow if load is applied on current node
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(lpoints)
End If
If Val(loadmom.ListBox1.List(runnum, 2)) <> 0 Then
'draw arc with arrow if moment is applied on current node
Set arcObj = ThisDrawing.ModelSpace.AddArc(centerPoint, radius,
startAngleInRadian, endAngleInRadian)
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(mpoints)
End If
If runnum <> nm Then
runlen = Val(ListBox10.List(runnum, 1))
runnum = runnum + 1
End If
Next i
'zoom to show all diagrams
ZoomExtents
'WRITE CAPTIONS
Dim MTextObj As AcadMText
Dim corner(0 To 2) As Double
Dim width As Double
Dim text As String
width = beamlengthd
'write bending moment caption
corner(0) = 0#: corner(1) = beamdepthd * 0.7: corner(2) = 0#
text = "BENDING MOMENT DIAGRAM"
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
MTextObj.Height = beamdepthd / 4
MTextObj.AttachmentPoint = acAttachmentPointBottomCenter
MTextObj.Update
'write shear force caption
corner(0) = 0#: corner(1) = beamdepthd * 6.7: corner(2) = 0#
text = "SHEAR FORCE DIAGRAM"
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
MTextObj.Height = beamdepthd / 4
124
MTextObj.AttachmentPoint = acAttachmentPointBottomCenter
MTextObj.Update
'write beam elements caption
corner(0) = 0#: corner(1) = beamdepthd * 10.7: corner(2) = 0#
text = "BEAM ELEMENTS AND LOADING"
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
MTextObj.Height = beamdepthd / 4
MTextObj.AttachmentPoint = acAttachmentPointBottomCenter
MTextObj.Update
'write deflected beam caption
corner(0) = beamlengthd + beamdepthd: corner(1) = beamdepthd * 8.7:
corner(2) = 0#
text = "DEFLECTION DIAGRAM"
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
MTextObj.Height = beamdepthd / 4
MTextObj.AttachmentPoint = acAttachmentPointBottomCenter
MTextObj.Update
'write soil pressure caption
corner(0) = beamlengthd + beamdepthd: corner(1) = beamdepthd * 5.7:
corner(2) = 0#
text = "SOIL PRESSURE DIAGRAM"
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
MTextObj.Height = beamdepthd / 4
MTextObj.AttachmentPoint = acAttachmentPointBottomCenter
MTextObj.Update
'write note
corner(0) = beamlengthd + beamdepthd: corner(1) = beamdepthd * 1.7:
corner(2) = 0#
text = "These diagrams have been plotted by the Finite Element Program
BEAMDEZ"
Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text)
MTextObj.Height = beamdepthd / 4
MTextObj.AttachmentPoint = acAttachmentPointBottomCenter
MTextObj.Update
ThisDrawing.Application.ZoomExtents
End Sub
Private Sub CommandButton7_Click()
125
'if user "Show Boundary Conditions"
'change caption of the form-boundary
boundary.Caption = "Boundary Conditions"
'hide controls that were used for data entry
boundary.Label1.Visible = False
boundary.Label2.Visible = False
boundary.Label3.Visible = False
boundary.curdef.Visible = False
boundary.curnode.Visible = False
boundary.currot.Visible = False
boundary.CommandButton2.Visible = False
boundary.CommandButton3.Visible = False
boundary.CommandButton4.Visible = False
'change positions of remaining controls
boundary.ListBox1.Left = 78
boundary.ListBox1.Height = 180
boundary.CommandButton1.Left = 294
boundary.Label5.Left = 144
boundary.numrot.Left = 204
boundary.Label4.top = 222
boundary.Label5.top = 222
boundary.numrot.top = 222
boundary.numdef.top = 222
boundary.Label4.Left = 20
boundary.numdef.Left = 78
boundary.Label6.Left = 83.95
boundary.Label7.Left = 132
boundary.Label8.Left = 209.95
boundary.Label9.Left = 227.95
boundary.Label10.Left = 155.95
'give control to form-boundary for showing boundary conditions
boundary.Show
End Sub
Private Sub OptionButton1_AfterUpdate()
'if user selects "mm" or "inch" depending on
'current system of units
'read number of elements for form-elements
126
nm = Elements.numelem
If BeamDimensions.siunits.Value = True Then
'if units are SI
'loop through all nodes
For i = 0 To nm
'convert all deflections to "mm"
ListBox1.List(i, 2) = ListBox1.List(i, 2) * 1000
Next i
Else
'if system of units is fps
'loop through all nodes
For i = 0 To nm
'convert all deflections to "inch"
ListBox1.List(i, 2) = ListBox1.List(i, 2) * 12
Next i
End If
End Sub
Private Sub OptionButton2_AfterUpdate()
'if user selects "m" or "ft" depending on
'current system of units
'read number of elements for form-elements
nm = Elements.numelem
If BeamDimensions.siunits.Value = True Then
'if units are SI
'loop through all nodes
For i = 0 To nm
'convert all deflections to "m"
ListBox1.List(i, 2) = ListBox1.List(i, 2) / 1000
Next i
Else
'if units are fps
'loop for all nodes
For i = 0 To nm
'convert all deflections to "ft"
ListBox1.List(i, 2) = ListBox1.List(i, 2) / 12
Next i
End If
127
End Sub
Private Sub ToggleButton1_AfterUpdate()
If ToggleButton1.Value = True Then
'hide multipage containing results
MultiPage1.Visible = False
'show bandmatrix
ListBox9.Visible = True
Else
If ToggleButton1.Value = False Then
'show multipage containing results
MultiPage1.Visible = True
'hide bandmatrix
ListBox9.Visible = False
End If
End If
End Sub
Private Sub UserForm_Initialize()
'VARIABLES:
'alomaxdef=value of maximum deflection for elastic range
'asat()= global stiffness matrix ASAT
'asatdim=dimension of ASAT
128
'easat()=element EASAT matrix
'elcount=loop counter
'es()=element S matrix ES
'esat()=element ESAT matrix
'esats()=array to save ESAT matrices for all elements
'forc=constant soil pressure beyond elastic range
'fourei=4EI
'i=loop variable
'inertia=moment of inertia of the beam x-section
'j=loop counter
'k=loop counter
'lasat=variable used in construction of ASAT matrix
'locdef=location or known deflection
'locrot=location of known rotation
'maxiter=maximum iterations
'memlen(nm)=array to hold the length of each member
'momentmatrix=moment matrix
'mominertia=moment of inertia
'momnt()=moment array
'msr=modulus of subgrade reaction
'multiplier=variable used in matrix multiplication
'negflag=negative deflection flag
'nm= number of members (elements)
'nnload()=array to hold the values of vertical loads
'nnmom()= array to hold the values of moments
'np()= column vector to hold the values of loads and moments
'numbounddef=number of known deflections
'numboundrot=number of known rotations
'numelem= number of elements
'nummaxdef1=variable for checking maximum deflection
'nummom=numnber of concentrated moments acting on the beam
'numnegdef1=variable for checking negative deflections
'numnegdef2=variable for checking negative deflections
'numpload=number of vertical point loads acting on the beam
'Pmatrix()=array to hold the loads and moments acting on the beam
'row=loop counter
'Shearmatrix()=matrix for shear values
'Showmatrix1()=matrix for rotations and deflections
129
'Soilqmatrix()=soil pressure matrix
'spring()=array to hold the spring constants at all nodes
'temper=temporary variable used in calculation of X matrix
'testoler=variable used in matrix inversion
'toler=tolerance value for zero: values less than this will be considered
zero
'twoei=2EI
'unitflag= tells the current system of units, SI or fps
'valdef=value of deflection read from file
'valrot=value of rotation read from file
'Xmatrix()= X matrix
'youngs=young's modulus E for concrete
'read number of elements from textbox "numelem"
'located on userfrom "Beamdimensions"
nm = BeamDimensions.numelem
'read width of beam from textbox "Beamwidth"
'located on userfrom "Beamdimensions"
Beamwidth = BeamDimensions.Beamwidth
'read depth of beam from textbox "Beamdepth"
'located on userfrom "Beamdimensions"
Beamdepth = BeamDimensions.Beamdepth
'check if OptoinButton "siunits"
'located on userform "Beamdimensions" is selected
If BeamDimensions.siunits = True Then
'in case "siunits" OptionButton is selected,
'put "si" in unitflag variable and set the
'labels to SI units
unitflag = "si"
Label24.Caption = "m"
Label25.Caption = "m"
Label27.Caption = "m"
Label29.Caption = "m"
Label30.Caption = "mm"
Label34.Caption = "kPa"
Label37.Caption = "kN/m"
Label33.Caption = "kN/m"
Label39.Caption = "mm"
130
Else
'in case "siunits" OptionButton is not selected,
'i.e. "fpsunits" OptionButton is selected,
'put "fps" in unitflag variable and set the
'labels to fps units
unitflag = "fps"
Label24.Caption = "ft"
Label25.Caption = "ft"
Label27.Caption = "ft"
Label29.Caption = "ft"
Label42.Caption = "ft"
Label30.Caption = "inch"
Label34.Caption = "ksf"
Label37.Caption = "kip/ft"
Label33.Caption = "kip/ft"
Label39.Caption = "inch"
Label4.Caption = "1st Node
kip-ft"
kip-ft"
kip"
kip"
kip-ft"
kip-ft"
kip-ft"
kip"
Label20.Caption = "Spring Ks
kip/ft"
ksf"
Label46.Caption = "Length
ft"
kip"
End If
'dimension the memlen array to number of elements
ReDim memlen(nm)
'give control to form-memberlen for input of length of all elements
memberlen.Show
'loop for all elements
For i = 1 To nm
'read values of element-lengths from "memberlen"
memlen(i) = Val(memberlen.ListBox1.List(i - 1, 1))
Next i
131
'assign the number of members to numelem
numelem = nm
'reset the beamlength to zero
Beamlength = 0
'now calculate the beamlength by adding the length
'of all the members
For i = 1 To nm
'generates: 1,2,3,...,nm
with rows=number of
'generates 2,3,4,...,nm
132
ReDim Pmatrix((nm + 1), 2) '(x,0)=node number, (x,1)=mom,(x,2)=load
(row,col)
'give control to form-loadmom for getting loads and
'moments from user
loadmom.Show
'loop through all nodes
For counter = 1 To (nm + 1)
'generates: 1,2,3...,(nm+1)
133
'first node
Pmatrix(1, 2) = Pmatrix(1, 2) + Beamdepth * Beamwidth * memlen(1) *
BeamDimensions.BeamWeight / 2
'last node
Pmatrix((nm + 1), 2) = Pmatrix((nm + 1), 2) + Beamdepth * Beamwidth *
memlen(nm) * BeamDimensions.BeamWeight / 2
'remaining nodes
For i = 2 To nm
Pmatrix(i, 2) = Pmatrix(i, 2) + Beamdepth * Beamwidth * (memlen(i) +
memlen(i - 1)) * BeamDimensions.BeamWeight / 2
Next i
End If
'initialize np
'dimension np() column vector to double of node numbers
ReDim np(nm * 2 + 2)
For counter = 1 To (nm + 1)
'generates: 1,2,3,...,(nm+1)
'generates 1,2,...,asatdim
'generates 1,2,...,asatdim
Next counter2
Next counter
'develop the element A matrix ea
'dimension the ea matrix
Dim ea(4, 2)
'(row, col)
134
'put the values common to all finite elements in ea()
ea(1, 1) = 1
ea(1, 2) = 0
ea(3, 1) = 0
ea(3, 2) = 1
'put value of 2EI in twoei for later use
twoei = 2 * youngs * inertia
'put value of 4EI in fourei for later use
fourei = 4 * youngs * inertia
'dimension the ES matrix
Dim es(2, 2)
'row,col
'row,col
'row,col
'dimension the array esats to save ESAT matrices for all elements
ReDim esats(nm, 2, 4) 'element,row,col
'build the global stiffness matrix ASAT
'loop to make element matrices for all members
For elcount = 1 To nm
'generates 1,2,3,...,nm
'generates: 1,2
For counter2 = 1 To 4
135
For counter = 1 To 2
'generates: 1,2
For counter2 = 1 To 4
For counter2 = 1 To 4
'generates: 0,2,4,...
For count2 = 1 To 4
'generates: 2,4,6,...,asatdim
136
If boundary.numrot.Value > 0 Then boundflag = True
End If
If boundflag Then
'if user gave values for boundary conditions
'get number of boundary conditions
numbounddef = boundary.numdef
numboundrot = boundary.numrot
'dimension arrays for holding boundary conditions
ReDim bounddef(numbounddef, 3)
ReDim boundrot(numboundrot, 3)
'get location and value of boundary deflection condition
j = 0
k = 0
'loop through all nodes
For i = 0 To nm
If boundary.ListBox1.List(i, 1) <> "none" Then
'if current node has any known deflection
j = j + 1
'read node number for known deflection
bounddef(j, 0) = Val(boundary.ListBox1.List(i, 0))
'read value of known deflection
bounddef(j, 1) = Val(boundary.ListBox1.List(i, 1))
End If
If boundary.ListBox1.List(i, 2) <> "none" Then
'if current node has any known rotation
k = k + 1
'read node number for known rotation
boundrot(j, 0) = Val(boundary.ListBox1.List(i, 0))
'read value of known rotation
boundrot(j, 1) = Val(boundary.ListBox1.List(i, 2))
End If
Next i
'set asat and np for boundary deflections
If j > 0 Then
For i = 1 To j
locdef = bounddef(i, 0) * 2
valdef = bounddef(i, 1)
'augment np()
137
For l = 1 To asatdim
np(l) = np(l) - valdef * asat(locdef, l)
Next l
'put valdef at np(locdef)
np(locdef) = valdef
'zero out elements in asat
For l = 1 To asatdim
'zero out the row
asat(locdef, l) = 0
'zero out the column
asat(l, locdef) = 0
Next l
'put 1 at crossing
asat(locdef, locdef) = 1
Next i
End If
'set asat and np for boundary rotations
If k > 0 Then
For i = 1 To k
locrot = boundrot(i, 0) * 2 - 1
valrot = boundrot(i, 1)
'augment np()
For l = 1 To asatdim
np(l) = np(l) - valrot * asat(locrot, l)
Next l
'put valrot at np(locrot)
np(locrot) = valrot
'zero out elements in asat
For l = 1 To asatdim
'zero out the row
asat(locrot, l) = 0
'zero out the column
asat(l, locrot) = 0
Next l
'put 1 at crossing
asat(locrot, locrot) = 1
Next i
End If
138
End If
'make band matrix
'currently the solution is obtained by
'inverse matrix (obtained by Gauss-Jordan method)
'but if Cholsky or other band matrix solution is
'to be used then the band matrix is available
'also, band matrix is used to show the contents of
'ASAT matrix along with results
ReDim bandm(asatdim, 4)
For i = 1 To (asatdim - 3)
bandm(i, 0) = Fix2(asat(i, i))
bandm(i, 1) = Fix2(asat(i, i + 1))
bandm(i, 2) = Fix2(asat(i, i + 2))
bandm(i, 3) = Fix2(asat(i, i + 3))
Next i
For i = 1 To 3
bandm((2 * nm), (i - 1)) = Fix2(asat((2 * nm), (asatdim - 3) + i))
Next i
bandm((2 * nm), 3) = 0
For i = 1 To 2
bandm((asatdim - 1), (i - 1)) = Fix2(asat((asatdim - 1), (2 * nm) + i))
Next i
bandm((asatdim - 1), 2) = 0
bandm((asatdim - 1), 3) = 0
bandm(asatdim, 0) = Fix2(asat(asatdim, asatdim))
bandm(asatdim, 1) = 0
bandm(asatdim, 2) = 0
bandm(asatdim, 3) = 0
ListBox9.List() = bandm
'dimension the asatinv matrix
ReDim asatinv(asatdim, asatdim)
'make an identity matrix and save in asatinv()
For i = 1 To asatdim
For j = 1 To asatdim
asatinv(i, j) = 0
Next j
asatinv(i, i) = 1
Next i
139
'dimension dupasat matrix
ReDim dupasat(asatdim, asatdim)
'save asat in dupasat
For i = 1 To asatdim
'generats 1,2,3,...,asatdim
For j = 1 To asatdim
'generats 1,2,3,...,asatdim
dupasat(i, j) = asat(i, j)
Next j
Next i
'set tolerance value to check for zero matrix-elements
toler = 0.000001
'loop through all rows
For row = 1 To asatdim
'generates 1,2,3,...,asatdim
'generates 1,2,3,...,asatdim
'generates 1,2,3,...,asatdim
140
skip1:
Next i
Next row
'dimension the Xmatrix
ReDim Xmatrix(asatdim)
'Pmatrix=np()
'multiply asatinv by np() and put result in Xmatrix
For i = 1 To asatdim
temper = 0
For j = 1 To asatdim
temper = temper + asatinv(i, j) * np(j)
Next j
Xmatrix(i) = temper
Next i
'if maximum deflection and soil separation are to be checked
If BeamDimensions.SoilSeparation = True Then
'check for -ve and max deflections
Debug.Print "entered at soil separation"
'make relevant controls visible
maxdef.Visible = True
Label14.Visible = True
Label39.Visible = True
'read value of allowable maximum deflection
maxdef.Value = BeamDimensions.maxdef
If BeamDimensions.siunits Then
'if current units are SI then convert max. deflection to "m"
alomaxdef = Val(BeamDimensions.maxdef) / 1000
Else
'if current units are fps then convert max. deflection to "ft"
alomaxdef = Val(BeamDimensions.maxdef) / 12
End If
'loop for all nodes
For i = 0 To nm
negflag = False
checkdef = Val(Xmatrix(i * 2 + 2)) 'deflection
'check for -ve deflection:
If checkdef < 0 Then
negflag = True
141
numnegdef1 = numnegdef + 1
spring(i + 1, 1) = 0
End If
'check for max deflection
If checkdef > alomaxdef Then
nummaxdef1 = nummaxdef1 + 1
forc = alomaxdef * spring(i + 1, 1)
Pmatrix(i + 1, 2) = Pmatrix(i + 1, 2) - forc
spring(i + 1, 1) = 0
End If
Next i
If maxiter > 0 Then
'if maximum iterations limit is not reached
maxiter = maxiter - 1
'check if number of negative deflections has increased or
'if maximum deflection is exceeded at any node
If numnegdef1 > numnegdef2 Or nummaxdef1 > 0 Then
'go to label "defloop:" for another iteration
GoTo defloop
End If
End If
End If
Elements.Caption = "Results"
'dimension arrays for showing results
ReDim showmatrix1((nm + 1), 3)
ReDim shearmatrix((nm + 1), 3)
ReDim momentmatrix((nm + 1), 3)
ReDim soilqmatrix((nm + 1), 2)
'loop for all nodes
For i = 0 To nm
'put node numbers in all arrays
showmatrix1(i, 0) = i + 1
shearmatrix(i, 0) = i + 1
momentmatrix(i, 0) = i + 1
soilqmatrix(i, 0) = i + 1
Next i
'loop for all nodes
For i = 0 To nm
142
'read values of rotations
showmatrix1(i, 1) = Xmatrix(i * 2 + 1)
'read values of deflections
showmatrix1(i, 2) = Xmatrix(i * 2 + 2)
'calculate spring forces
spring(i + 1, 2) = showmatrix1(i, 2) * spring(i + 1, 1)
If spring(i + 1, 2) <> 0 Then
'if no negative deflection has occurred
'calculate soil pressure
soilqmatrix(i, 1) = Xmatrix(i * 2 + 2) * msr
Else
'if negative deflection has occurred then
'zero the soil pressure
soilqmatrix(i, 1) = 0
End If
Next i
shearmatrix(0, 2) = 0
shearmatrix(0, 1) = 0
For i = 0 To (nm - 1)
shearmatrix(i, 2) = shearmatrix(i, 1) + Pmatrix(i + 1, 2) - spring(i +
1, 2)
shearmatrix(i + 1, 1) = shearmatrix(i, 2)
Next i
shearmatrix(i, 2) = shearmatrix(nm, 1) - spring(i + 1, 2)
'put values of arrays to ListBoxes for showing results
ListBox1.List() = showmatrix1
ListBox3.List() = shearmatrix
ListBox7.List() = spring
ListBox8.List() = soilqmatrix
'dimension the moment array
ReDim momnt(nm, 3)
first = 0
second1 = 0
For i = 1 To nm
momnt((i - 1), 0) = i
'multiply esat matrices with Xmatrix entries
'to get internal moments at nodes
For j = 1 To 2
143
For k = 1 To 4
m = (i - 1) * 2 + k
momnt((i - 1), j) = momnt((i - 1), j) + esats(i, j, k) *
Xmatrix(m)
Next k
Next j
second1 = momnt(i, 2)
first = momnt(i, 1)
Next i
'show moments on elements in ListBox2
ListBox2.List() = momnt
momentmatrix(0, 1) = 0
momentmatrix(nm, 2) = 0
For i = 0 To (nm - 1)
momentmatrix(i, 2) = -momnt(i, 1)
momentmatrix((i + 1), 1) = momnt(i, 2)
Next i
'show moments on nodes and element lengths
ListBox4.List() = momentmatrix
ListBox10.List() = memberlen.ListBox1.List()
ender:
End Sub
Figure-5.13 Form-Exporter
Code: Exporter
Private Sub CommandButton1_Click()
'read name of file from "filenamer"
filefinder = filenamer.text
'if there any name is given then
If filefinder <> "" Then
144
'concatenate ".txt" to name of file
filefinder = filefinder & ".txt"
If Dir(filefinder) = "" Then
'if a file with same name does not exist then return control to
'calling routine
Exporter.Hide
Else
'if file exists, ask for replacing
response = MsgBox("File already exists.
Replace?", 36)
145
End If
'valid characters are A~Z,a~z,0~9,-, and _; other characters
'are not allowed in file name, therefore check if the input
'character is valid or not
'check if A to Z
If charnum > 64 And charnum < 91 Then charflag = True
'check if a to z
If charnum > 96 And charnum < 123 Then charflag = True
'check if 0 to 9
If charnum > 47 And charnum < 58 Then charflag = True
'check if - or _ and not first char
If Len(filenamer.text) > 1 Then
If charnum = 45 Or charnum = 95 Then charflag = True
End If
'check that 8 character filename limit is not crossed
If Len(filenamer.text) > 8 Then charflag = False
If charflag Then
'if all validity requirements are met then update "checker"
checker.text = filenamer.text
Else
'otherwise give warning beep (for invalid characters
'or exceeding 8 char limit)
beep
'delete the newly entered character from "filenamer"
filenamer.text = checker.text
End If
End Sub
Figure-5.14 Form-Filer
Code: Filer
Private Sub CommandButton1_Click()
'put name of selected file to "FileLoaded" on "BeamDimensions"
146
BeamDimensions.FileLoaded = filelister.Value
'return control to calling routine
Unload Filer
End Sub
Private Sub CommandButton2_Click()
'if user clicks "Cancel" then reset
'the filename on "BeamDimensions"
BeamDimensions.FileLoaded = ""
'return control to calling routine
Unload Filer
End Sub
Private Sub UserForm_Initialize()
If Dir("init.bdt") <> "" Then
'if file "init.bdt" exists, put it as
'default choice
filelister.Value = "init.bdt"
End If
'get name of first file with ".bdt" extension
'in the default directory
file1 = Dir("*.bdt")
loop1:
'add last read filename from directory to choice list
filelister.AddItem (file1)
'read next filename
file1 = Dir
'if any new file was found, go back to "loop1:"
If file1 <> "" Then GoTo loop1
End Sub
147
Figure-5.15 Form-loadmom
Code: loadmom
'Declare user-defined type for file I/O
Private Type Record
units55 As Boolean
conbmwt55 As Boolean
consoilsep As Boolean
numel55 As Integer
numpl55 As Integer
nummom55 As Integer
maxiter55 As Integer
numknowdef55 As Integer
numknowrot55 As Integer
beamlen55 As Double
beamwid55 As Double
beamdep55 As Double
beamwt55 As Double
youngs55 As Double
msr55 As Double
maxdef55 As Double
End Type
148
'Declare user-defined type for file I/O
Private Type doubler
doub As Double
End Type
Private Sub CommandButton1_Click()
'return control back to the calling routine
loadmom.Hide
End Sub
Private Sub CommandButton2_Click()
'exit program
End
End Sub
Private Sub ListBox1_AfterUpdate()
'if ListBox1 is clicked, set the values of clicked
'entry in "nodecur", "loadcur", and "momcur"
nodecur = ListBox1.Value
loadcur = ListBox1.List(Val(nodecur) - 1, 1)
momcur = ListBox1.List(Val(nodecur) - 1, 2)
End Sub
Private Sub loadcur_AfterUpdate()
If nodecur <> "" Then
'if there is any number placed in "nodecur" then put
'current value of "loadcur" in ListBox1
ListBox1.List(Val(nodecur) - 1, 1) = loadcur
'reset numload and nummom to zero
numload = 0
nummom = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'add 1 to "numload" for each nonzero load in ListBox1 (i.e. count the
number of loads)
If ListBox1.List(i - 1, 1) <> 0 Then numload = numload + 1
'add 1 to "nummom" for each nonzero moment in ListBox1 (i.e. count the
number of moments)
149
If ListBox1.List(i - 1, 2) <> 0 Then nummom = nummom + 1
Next i
'put value of "numload" in textbox "loadnum"
loadnum = numload
'put value of "nummom" in textbox "momnum"
momnum = nummom
Else
'if "nodecur" is empty then give error message
beep
loadcur = ""
feedback = MsgBox("Input node number first", 48, "Error!")
End If
End Sub
Private Sub momcur_AfterUpdate()
If nodecur <> "" Then
'if there is any number placed in "nodecur" then put
'current value of "momcur" in ListBox1
ListBox1.List(Val(nodecur) - 1, 2) = momcur
'reset numload and nummom to zero
numload = 0
nummom = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'add 1 to "numload" for each nonzero load in ListBox1 (i.e. count the
number of loads)
If ListBox1.List(i - 1, 1) <> 0 Then numload = numload + 1
'add 1 to "nummom" for each nonzero moment in ListBox1 (i.e. count the
number of moments)
If ListBox1.List(i - 1, 2) <> 0 Then nummom = nummom + 1
Next i
'put value of "numload" in textbox "loadnum"
loadnum = numload
'put value of "nummom" in textbox "momnum"
momnum = nummom
Else
'if "nodecur" is empty then give error message
beep
150
momcur = ""
feedback = MsgBox("Input node number first", 48, "Error!")
End If
End Sub
Private Sub nodecur_AfterUpdate()
If Val(nodecur) < (BeamDimensions.numelem + 2) And Val(nodecur) > 0 And
Val(nodecur) = Int(Val(nodecur)) Then
'if current node number is less or equal to total number of nodes,
positive, and integer then
'select corresponding entry in ListBox1 and
'put value of selected load and moment from ListBox1 in "loadcur" and
"momcur"
ListBox1.ListIndex = Val(nodecur) - 1
loadcur = ListBox1.List(Val(nodecur) - 1, 1)
momcur = ListBox1.List(Val(nodecur) - 1, 2)
Else
'otherwise give error beep, and clear the text boxes for re-entry
beep
nodecur = ""
loadcur = ""
momcur = ""
'set flag ctrlbck for getting focus back
ctrlbck.Value = True
End If
End Sub
Private Sub loadcur_Enter()
If ctrlbck.Value = True Then
'give focus back to "nodecur" if it contained an invalid entry
ctrlbck.Value = False
nodecur.SetFocus
End If
End Sub
Private Sub UserForm_Initialize()
If BeamDimensions.fpsunits = True Then
'set units of "loadmom" to fps if set in BeamDimensions
151
Label2.Caption = "Load (kip):"
Label3.Caption = "Moment (kip-ft):"
Label7.Caption = "Load
kip"
Label8.Caption = "Moment
kip-ft"
End If
'read total number of nodes from form-"BeamDimensions"
numnode = 1 + BeamDimensions.numelem
'read total number of elements from form-"BeamDimensions"
numelem = BeamDimensions.numelem
loadflag = True
'dimension an array according to number of nodes
numnode = numnode - 1
ReDim nodedata(numnode, 3)
If BeamDimensions.filestatus = True Then
'if a file has been read in BeamDimensions then
'Declare filerec to be of user-defined type Record
Dim filerec As Record
'open same file for random I/O which was opened in "BeamDimensions"
Open BeamDimensions.FileLoaded For Random As #1 Len = Len(filerec)
' Read record from file
Get #1, 1, filerec
'Close the file
Close #1
numelemfile = filerec.numel55
'check if number of elements is same in file as
'on "BeamDimensions"
If Val(numelem) = Val(numelemfile) Then
'Declare "nod2" to be of user type "doubler"
Dim nod2 As doubler
'get name of "beam data (bdt) file" from "BeamDimensions"
file1 = BeamDimensions.FileLoaded
'truncate ".bdt" and concatenate ".ndt" (node data)
len1 = Len(file1) - 4
file1 = Left(file1, len1)
file1 = file1 & ".ndt"
'open the .ndt file
Open file1 For Random As #1 Len = Len(nod2)
currec = BeamDimensions.numelem
152
'loop for all nodes and read loads
For i = 0 To currec
recnum = i + currec + 1
Get #1, recnum, nod2
'put loads to array "nodedata"
nodedata(i, 1) = nod2.doub
Next i
'loop for all nodes and read node moments
For i = 0 To currec
recnum = recnum + 1
Get #1, recnum, nod2
'put moments to array "nodedata"
nodedata(i, 2) = nod2.doub
Next i
'close .ndt file
Close #1
loadflag = False
End If
End If
'loop through all nodes
For i = 0 To numnode
'put node numbers in array
nodedata(i, 0) = i + 1
'check if file is loaded, otherwise set all loads and moments to zero
If loadflag Then
nodedata(i, 1) = 0
nodedata(i, 2) = 0
End If
Next i
'put values of array "nodedata" in "ListBox1"
ListBox1.List() = nodedata
'reset numload and nummom to zero
numload = 0
nummom = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'count all loads and moments
If ListBox1.List(i - 1, 1) <> 0 Then numload = numload + 1
153
If ListBox1.List(i - 1, 2) <> 0 Then nummom = nummom + 1
Next i
'put number of loads in "loadnum"
loadnum = numload
'put number of moments in "momnum"
momnum = nummom
End Sub
Figure-5.16 Form-memberlen
Code: memberlen
'Declare user-defined type for file I/O
Private Type Record
units55 As Boolean
conbmwt55 As Boolean
consoilsep As Boolean
numel55 As Integer
numpl55 As Integer
nummom55 As Integer
maxiter55 As Integer
numknowdef55 As Integer
numknowrot55 As Integer
beamlen55 As Double
beamwid55 As Double
154
beamdep55 As Double
beamwt55 As Double
youngs55 As Double
msr55 As Double
maxdef55 As Double
End Type
'Declare user-defined type for file I/O
Private Type doubler
doub As Double
End Type
Private Sub CommandButton1_Click()
'exit program
End
End Sub
Private Sub CommandButton2_Click()
'set flag "noerror" to true
noerror = True
If sumlen <> totlen Then
'if summation of length of elements is not equal to total length of beam
then
'give warning beep
beep
'set flag "noerror" to false i.e. error has occured
noerror = False
'prepare error message string
prompter$ = "Summation of element lengths is not equal to total length
of the beam"
'show error message
feedback = MsgBox(prompter$, 48, "Error!")
End If
'set flag "zeroerror" to false
zeroerror = False
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'if any element length is set equal to zero then
'set flag "zeroerror" to true
155
If ListBox1.List(i - 1, 1) = 0 Then zeroerror = True
Next i
'proceed of no error has occured
If noerror Then
If zeroerror Then
'if any element has zero length then set "noerror" to false
noerror = False
'prepare error message string
prompter$ = "No element should have zero length."
'show erro message
feedback = MsgBox(prompter$, 48, "Error!")
End If
End If
If noerror Then
'if no error has occured then give control back to the calling routine
memberlen.Hide
End If
End Sub
Private Sub elemcur_AfterUpdate()
If Val(elemcur) < (BeamDimensions.numelem + 1) And Val(elemcur) > 0 And
Val(elemcur) = Int(Val(elemcur)) Then
'if current element number is less or equal to total number of elements,
not equal to zero, and integer then
'select corresponding entry in ListBox1 and
'put value of selected length from ListBox1 in "lengthcur"
ListBox1.ListIndex = Val(elemcur) - 1
lengthcur = ListBox1.List(Val(elemcur) - 1, 1)
Else
'otherwise give error beep, and clear the text boxes for re-entry
beep
elemcur = ""
lengthcur = ""
'set flag ctrlbck for getting focus back
ctrlbck.Value = True
End If
End Sub
156
Private Sub lengthcur_AfterUpdate()
If elemcur <> "" Then
'if there is any number placed in "elemcur" then put
'current value of "lengthcur" in ListBox1
ListBox1.List(Val(elemcur) - 1, 1) = lengthcur
'reset sumlen to zero
sumlen = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'add lengths of all elements to "sumlen"
sumlen = Val(sumlen) + ListBox1.List(i - 1, 1)
Next i
Else
'if there is no entry in "elemcur" then give warning
beep
feedback = MsgBox("Input element number first", 48, "Error!")
End If
End Sub
Private Sub lengthcur_Enter()
If ctrlbck.Value = True Then
'give focus back to "elemcur" if it contained an invalid entry
ctrlbck.Value = False
elemcur.SetFocus
End If
End Sub
Private Sub ListBox1_AfterUpdate()
'if ListBox1 is clicked, set the values of clicked
'entry in "elemcur" and "lengthcur"
elemcur = ListBox1.Value
lengthcur = ListBox1.List(Val(elemcur) - 1, 1)
End Sub
Private Sub UserForm_Initialize()
If BeamDimensions.fpsunits = True Then
'set units of "memberlen" to fps if set in BeamDimensions
Label6.Caption = "Length
ft"
157
Label2.Caption = "Element Length
(ft):"
End If
'read total length of beam from form-"BeamDimensions"
totlen = BeamDimensions.Beamlength
'read total number of elements from form-"BeamDimensions"
numelem = BeamDimensions.numelem
loadflag = True
'dimension an array according to number of elements
ReDim lengthList((numelem - 1), 2)
If BeamDimensions.filestatus = True Then
'if a file has been read in BeamDimensions then
'Declare filerec to be of user-defined type Record
Dim filerec As Record
'open same file for random I/O which was opened in "BeamDimensions"
Open BeamDimensions.FileLoaded For Random As #1 Len = Len(filerec)
'read data from file
Get #1, 1, filerec
'Close the file
Close #1
numelemfile = filerec.numel55
'check if number of elements is same in file as
'on "BeamDimensions"
If Val(numelem) = Val(numelemfile) Then
'Declare "nod2" to be of user type "doubler"
Dim nod2 As doubler
'get name of "beam data (bdt) file" from "BeamDimensions"
file1 = BeamDimensions.FileLoaded
'truncate ".bdt" and concatenate ".ndt" (node data)
len1 = Len(file1) - 4
file1 = Left(file1, len1)
file1 = file1 & ".ndt"
'open the .ndt file
Open file1 For Random As #1 Len = Len(nod2)
currec = BeamDimensions.numelem
'loop for all elements
For i = 1 To currec
'read length of elements
Get #1, i, nod2
158
'put lengths to array "lengthList"
lengthList(i - 1, 1) = nod2.doub
Next i
'close .ndt file
Close #1
loadflag = False
End If
End If
'loop through all elements
For i = 0 To (numelem - 1)
'put element numbers in array
lengthList(i, 0) = i + 1
'check if file is loaded, otherwise set all lengths to zero
If loadflag Then
lengthList(i, 1) = 0
End If
Next i
'put values of array "lengthList" in "ListBox1"
ListBox1.List() = lengthList
'reset sumlen to zero
sumlen = 0
'loop through all entries of ListBox1
For i = 1 To ListBox1.ListCount
'add lengths of all elements to "sumlen"
sumlen = sumlen + ListBox1.List(i - 1, 1)
Next i
End Sub
Figure-5.17 Form-saver
Code: saver
Private Sub CommandButton1_Click()
'read name of file from "filenamer"
159
filefinder = filenamer.text
'if there any name is given then
If filefinder <> "" Then
'concatenate ".bdt" to name of file
filefinder = filefinder & ".bdt"
If Dir(filefinder) = "" Then
'if a file with same name does not exist then return control to
'calling routine (file name is sent to it)
saver.Hide
Else
'if file exists, ask for replacing
response = MsgBox("File already exists.
Replace?", 36)
160
If newchar <> "" Then
'if there is any character, put its ASCII code in charnum
charnum = Asc(newchar)
End If
'valid characters are A~Z,a~z,0~9,-, and _; other characters
'are not allowed in file name, therefore check if the input
'character is valid or not
'check if A to Z
If charnum > 64 And charnum < 91 Then charflag = True
'check if a to z
If charnum > 96 And charnum < 123 Then charflag = True
'check if 0 to 9
If charnum > 47 And charnum < 58 Then charflag = True
'check if - or _ and not first char
If Len(filenamer.text) > 1 Then
If charnum = 45 Or charnum = 95 Then charflag = True
End If
'check that 8 character filename limit is not crossed
If Len(filenamer.text) > 8 Then charflag = False
If charflag Then
'if all validity requirements are met then update "checker"
checker.text = filenamer.text
Else
'otherwise give warning beep (for invalid characters
'or exceeding 8 char limit)
beep
'delete the newly entered character from "filenamer"
filenamer.text = checker.text
End If
End Sub
Code: starter
Private Sub Label1_Click()
'return control to calling routine
Unload starter
End Sub
Private Sub UserForm_Click()
161
'return control to calling routine
Unload starter
End Sub
CHAPTER SIX
USER GUIDE
6.1 Installation
The program BEAMDEZ is included with this thesis on a floppy put inside the back
cover. Run the INSTALL.EXE file. Its a WinZip SelfExtractor file with C:\Program
Files\ACAD2000\ as default directory. If AutoCAD 2000 directory is different on your
computer then provide its path. This file will install required files in your AutoCAD 2000
directory.
Figure-6.1
Figure-6.2
162
163
Figure-6.3
Figure-6.4
164
Figure-6.5
Figure-6.6
165
Either load data from a file or enter new data. To load a data file, click on button labeled
Load Data File, choose a file name and click OK. To enter new data, select units,
and fill the boxes with suitable data. Holding mouse cursor over anything for a while
shows a help tip, as shown for Concrete E in the figure. After filling the boxes, click
OK to continue, this will bring the form for element lengths.
6.5 Discretizing the Beam
Element lengths should be selected in such a way that nodes should be available at
column centers and edges. Also, the element aspect ratio of 2:1 is recommended, i.e., no
element should be more than double than its adjacent elements. The examples, which are
given in next chapter, may be referred for clarification of discretization.
6.6 Entering Element Lengths
Element lengths are then entered in the form shown below:
Figure-6.7
166
Figure-6.8
Figure-6.9
167
6.9 Results
After entering all the data, the results are shown on a multipage. Below are shown the
output results on different pages.
Figure-6.10
Figure-6.11
Figure-6.12
Figure-6.13
168
Figure-6.14
Figure-6.15
Figure-6.16
Figure-6.17
169
Figure-6.18
Figure-6.19
Figure-6.20
170
6.10 Cursor Icons
The program shows different cursor icons when mouse is over different objects; they are
described below.
The Pencil: Mouse cursor changes to pencil icon when it is over a box in which the
user can enter values.
The Mouse: Mouse cursor changes to mouse icon when it is over something that
can be clicked only for selection.
The Floppy: Mouse cursor changes to floppy icon when it is over a button that is
for loading or saving files.
The Green Signal: Mouse cursor changes to green signal icon when it is over OK
button, user gives the green signal to proceed to next step.
The Exit Door: Mouse cursor changes to exit door icon when it is over the exit
button.
The Graph: Mouse cursor changes to graph icon when it is over the plot button.
Printing: Mouse cursor changes to printing icon when it is over the print this
screen button.
Text: Mouse cursor changes to text icon when it is over the button for exporting
results in text format.
The Band Matrix: Mouse cursor changes to band matrix icon when it is over the
button for viewing the band matrix.
The MUET Monogram:
CHAPTER SEVEN
EXAMPLE PROBLEMS
Example problem 1:
Design a rectangular combined footing using the conventional method.
Given:
f y 414 MPa
f c 20.7 MPa
qa 110 kPa
'
Column
189
277
466
157
191
348
Applied loads
171
172
Column
Momentdead (kN-m)
Momentlive (kN-m)
Total moment
16
15
21
35
30
65
Applied Moments
Solution:
Step 1 convert loads to ultimate and find ultimate soil pressure:
pu1 1.4(189) 1.7(277) 735.5 kN
Pu 2 1.4(157) 1.7(191) 544.5 kN
Pu Pu1 Pu 2 735.5 544.5 1280 kN
Pw P1 P2 466 348 814 kN
Ultimate ratio UR
Pu 1280
Pw
814
UR 1.572
This is necessary so that eccentricity is not introduced in finding L using working loads
and then switching to ultimate values.
Step 2 Find footing dimensions L and B; first locate load resultant from center of
column 2.
.26
L 2.757
2 5.775 m
2
173
Step 3 Find B:
BLq Pu
1280
1.281 m
(5.775)(172.973)
174
Step 5 select depth based on analysis for both wide-beam and diagonal tension.
Obtain critical location for wide beam first (slope of shear diagram = constant) using V
diagram:
559.29
0.503 m
1112.648
Checking diagonal tension at column 2 using d just obtained for a three-side zone and
vc=1.29 MPa from table A-1
perimeter 2 w w d
2
A w w d
2
221.648
480.304 kN
1.35
175
Actual
480.304
534.647 kPa 1290 kPa
(1.786)(0.503)
O.K .
V 735.5 0.645
221.648
629.633 kN
1.35
629.633
389.712 kPa 1290 kPa O.K .
3.212 0.503
Mn
Mu
As f y (d a / 2)
As (d a / 2)
Mu
Mu
f y
C T
0.85 f c ab As f y
'
As f y
'
0.85 f c b
414000 As
17.429 As
0.85(20700)(1.35)
As (0.503 8.715 As )
646.655
0.9(414000)
176
As 4898 mm2
As
0.004898
1.38
0.0072 min
bd 1.35(0.503)
fy
O.K .
Ld C1 Ab f y /
fc
'
177
L'
B w 1.35 0.26
0.545 m
2
2
Pu 2
544.5
M q
L' 2
0.545 2
632.928
93.998 kN m
2
2
fy
'
0.85 f c B'
M
f y
As 36.938 As
As (0.478 18.469 As )
93.998
0.90(414000)
As 538 mm2
0.000538
1.38
0.00177 min
0.0033 use min
0.637(0.478)
fy
Ld 0.019 f y Ab /
178
Compute short direction steel at column 1; use d = 0.478 m
1.35 0.3
0.525 m
2
735.5
535.708 kPa
1.35(1.017)
M 535.708
0.5252
73.827 kN m
2
As (d a / 2)
f y As
'
0.85 f c B'
Mu
f y
23.138 As
As (0.478 11.568 As )
73.827
0.9(414000)
As 418.7 mm2
0.0004187
0.00086 min use min 0.0033
1.017(0.478)
179
Step 8 Check dowel requirements of column to footing. At column 2 the supporting area
is not on all sides; therefore, the bearing stress is limited to
f c 0.85 f c
where 0.7
'
OK
A2
2 use 2
A1
180
As=(1.38 / 414)3.9850.478=6349 mm2
Use 25- 18 mm bars
When zone a = 0.136 m, use one 18 mm bar
As steel in both a zones and b zones (w+0.75d and w+1.5d, from Step 7) is calculated
using min therefore they are considered as a single zone for computing bar-spacing.
Use 37- 18mm bars @ 15.7 cm c/c.
181
Example problem 2:
Redesign the footing in Example problem 1 by using the finite element method.
Determine rotations, deflections, shear, moment, and soil pressure at every node and draw
the shear force, bending moment, deflection, and soil pressure diagrams.
Solution:
Step 1 Input data to the finite element program: BEAMDEZ.
Beam Data:
beam length = 5.775 (m)
beam width = 1.35 (m)
beam depth = 0.6 (m)
ks is calculated as:
ks = 40(safety factor)qa
ks = 403110 =13200 kN/m3
Load factor, LF = Pu/Pw = 1280/814 = 1.572
Use ks = LFks = 1.57213200 = 20757 kN/m3
modulus of subgrade reaction, ks = 20757 (kN/m^3)
modulus of elasticity for concrete = 22500000 (kPa)
Step 2 Discretize the beam and input element data to the program
number of elements = 17
182
Element
Length (m)
0.295
0.2
0.15
0.15
0.226
0.3
0.4
0.5
0.5
10
0.597
11
0.597
12
0.55
13
0.45
14
0.35
15
0.25
16
0.13
17
0.13
183
Step 3 Input the applied loads to the program.
Applied Loads:
number of point loads = 2
number of moments = 2
node
moment (kN-m)
735.5
100
10
11
12
13
14
15
16
17
544.5
47.9
18
184
(a) Finite element nodes, (b) Shear force diagram (c) Bending
moment diagram.
185
Rotations and Deflections:
node
rotation (rads)
deflection (m)
-1.0377734519643E-03
8.8755662258179E-03
-1.04361249509537E-03
8.56884888491384E-03
-1.05638757642438E-03
8.35901080225222E-03
-1.07318810583341E-03
8.19938202401738E-03
-1.11015071144748E-03
8.03536039563571E-03
-1.12684593522424E-03
7.78172663389098E-03
-1.08375114556973E-03
7.4483775443608E-03
-9.27498528441175E-04
7.04266946511677E-03
-6.06595717569664E-04
6.65408366768268E-03
10
-1.85513876241704E-04
6.45277025262321E-03
11
3.88229918489995E-04
6.51090393322486E-03
12
9.74252507162242E-04
6.91876025529445E-03
13
1.46282862209597E-03
7.59268047671494E-03
14
1.78245567183365E-03
8.32638602463571E-03
15
1.95576683773571E-03
8.98283942851845E-03
16
2.02771044502576E-03
9.48177916983684E-03
17
2.04527493002787E-03
9.74668144612059E-03
18
2.04471122365116E-03
1.00125183324716E-02
Shear at Nodes:
node
1
shear on right(kN)
-73.3696485354595
-73.3696485354595
-132.798322650586
-132.798322650586
-173.789584631866
-173.789584631866
527.246014401947
527.246014401947
484.914718561112
484.914718561112
427.56516088854
427.56516088854
354.51383879332
354.51383879332
265.706639565207
265.706639565207
172.476439649397
10
172.476439649397
73.2971054981952
11
73.2971054981952
-35.6244845113681
12
-35.6244845113681
-146.813032293577
186
node
shear on right(kN)
13
-146.813032293577
-253.193888635818
14
-253.193888635818
-346.522517781034
15
-346.522517781034
-422.037520978226
16
-422.037520978226
-472.520129921786
17
-472.520129921786
36.4741374588287
18
36.4741374588287
7.570477578E-09
Moments at Nodes:
node
moment on left(kN-m)
moment on right(kN-m)
-1.2805685400E-09
-21.6440463167964
-21.6440463183681
-48.2037108479999
-48.2037108461373
-74.2721485455986
-174.272148543503
-95.18524638284
-95.18524638284
14.4054800115991
14.4054800113663
142.675028279366
142.675028278434
284.480563796737
284.480563796329
417.333883579675
417.33388357998
10
503.572103404265
503.572103404724
11
547.330475387753
547.330475387891
12
526.062658134899
526.062658134702
13
445.315490374443
445.315490374342
14
331.378240488208
331.378240488732
15
210.09535926531
210.095359265339
16
104.585979021329
104.585979020922
17
43.1583621315658
-4.74163786880672
18
Soil Pressure:
node
184.230128149302
177.863596304157
173.507987222349
170.194572672529
166.789975732211
187
node
161.525299739675
154.605972688297
146.184690087429
138.118814690089
10
133.9401521337
11
135.146832941948
12
143.612706619147
13
157.601268655172
14
172.830794713363
15
186.456798017757
16
196.813290228303
17
202.311866777125
18
207.829843027112
Step 5 select depth based on analysis for both wide-beam and diagonal tension.
Obtain critical location for wide beam first (slope of shear diagram = constant) using V
diagram:
188
Bv c d 527.25 221.648d
vc 0.66 MPa (allowable from table A 1)
527.25
0.474 m
1112.648
Checking diagonal tension at column 2 using d just obtained for a three-side zone and
vc=1.29 MPa from table A-1:
perimeter 2 w w d
2
A w w d
2
221.648
484.606 kN
1.35
484.606
591.653 kPa 1290 kPa
(1.728)(0.474)
O.K .
189
V 735.5 0.599
221.648
637.142 kN
1.35
637.142
434.167 kPa 1290 kPa O.K .
3.096 0.474
As f y
'
0.85 f c b
414000 As
17.429 As
0.85(20700)(1.35)
As (0.474 8.715 As )
547.33
0.9(414000)
As 3302 mm2
As
0.003302
1.38
0.0052 min
bd 1.35(0.474)
fy
O.K .
Ld C1 Ab f y /
fc
'
190
min Ld C2 d b f y
B w 1.35 0.26
0.545 m
2
2
Pu 2
544.5
M q
L' 2
0.545 2
654.762
97.24 kN m
2
2
fy
'
0.85 f c B'
M
f y
As 38.198 As
As (0.449 19.099 As )
97.24
0.90(414000)
191
Using quadratic formula:
As 594 mm2
0.000594
1.38
0.0022 min
0.0033 use min
0.616(0.449)
fy
Ld 0.019 f y Ab /
1.35 0.3
0.525 m
2
735.5
559.358 kPa
1.35(0.974)
M 559.358
0.525 2
77.087 kN m
2
As (d a / 2)
f y As
'
0.85 f c B'
Mu
f y
24.158 As
As (0.449 12.079 As )
77.087
0.9(414000)
192
As 473.7 mm2
0.0004737
0.0011 min use min 0.0033
0.974(0.449)
193
COMPARISON
Conventional
Finite Element
Method
Method
559.29 kN
527.25 kN
-5.73
486.87 kN
472.52 kN
-2.95
547.33 kN-m
-15.36
95.19 kN-m
59.39
col-1
59.72
kN-m
and 2)
4898
3302
-32.58
1620
1458
-10.00
1005
922
-8.26
1620
1620
column 1
Transverse steel under
column 2
Steel in cantilever
portion
194
Example problem 3:
Design a rectangular combined footing using the conventional method.
Given:
f y 40 ksi
Column
f c 4 ksi
qa 4 ksf
'
120
80
200
70
60
130
150
100
250
Momentdead (kip-ft)
Momentlive (kip-ft)
Total Moment
(kip-ft)
40.5
25.5
66
28
24
52
42
36
78
Applied loads
Column
Applied Moments
195
Solution:
Step 1 convert loads to ultimate and find ultimate soil pressure:
pu1 1.4(120) 1.7(80) 304 kip
Pu 2 1.4(70) 1.7(60) 200 kip
Pu 3 1.4(150) 1.7(100) 380 kip
Ultimate ratio UR
Pu 884
Pw 580
UR 1.524
Step 2 Find footing dimensions L and B; first locate load resultant from center of
column 2.
L 14.48 2 30.293 ft
12
196
Step 3 Find B:
BLq Pu
884
4.787 ft
(30.293)(6.097)
Use B = 4.84 ft
197
Step 4 Draw shear and moment diagrams
198
Step 5 select depth based on analysis for both wide-beam and diagonal tension.
Obtain critical location for wide beam first (slope of shear diagram = constant) using V
diagram:
281.483
2.7 ft
104.202
Checking diagonal tension at column 1 using d just obtained for a three-side zone and
vc=31.0 ksf from table A-1.
perimeter 2 w w d
2
A w w d
2
29.182
238.744 kip
4.84
238.744
9.407 ksf 31 ksf
(9.4)(2.7)
O.K .
199
At column 2 a four-side zone gives
A (w d ) 2 (1 2.7) 2 13.69 ft 2
V 200 13.69
29.182
117.458 kip
4.84
117.458
2.939 ksf 31 ksf O.K .
14.8 2.7
V 380 17.64
29.182
273.642 kip
4.84
273.642
6.033 ksf 31 ksf O.K .
16.8 2.7
Mn
Mu
As (d a / 2)
Mu
f y
C T
0.85 f c ab As f y
'
As f y
'
0.85 f c b
40 As
0.203 As
0.85(4)(4.84 12)
200
As (2.7 12 0.1015 As )
1596.267 12
0.9(40)
As 17.37 inch 2
As
17.37
200
0.0092 min
bd 4.84(2.7) 144
fy
O.K .
Ld C1 Ab f y /
fc
'
As (2.7 12 0.1015 As )
1286.95 12
0.9(40)
As 13.84 inch 2
As
13.84
200
0.0074 min
bd 4.84(2.7) 144
fy
O.K .
201
Use 14 #9 bars (As = 14 inch2)
Development length:
where As = 14 in2
a =4000014/(0.8540004.8412) = 2.836
Mn = 1440000(32.5-2.836/2) = 17405.92 kip-in = 1450.49 kip-ft
where As = 18 in2
a =4000018/(0.8540004.8412) = 3.65
Mn = 1440000(32.5-3.65/2) = 22087.409 kip-in = 1840.62 kip-ft
202
L'
B w 4.84 16 / 12
1.753 ft
2
2
Pu1
304
18.705 ksf
BB ' 4.84(3.358)
M q
L' 2
1.7532 12
18.705
344.884 kip in
2
2
203
fy
'
0.85 f c B'
As 0.98 As
344.884
0.90(40)
As (31.4 0.49 As )
As 0.307 inch 2 / ft
0.307
200
0.0008 min
0.005 use min
31.4(12)
fy
Ld 0.04 f y Ab /
L'
4.84 1
1.92 ft
2
200
8.183 ksf
5.05(4.84)
M 8.183
1.92 2 12
180.995 kip in
2
204
a 0.98 As
As (31.4 0.49 As )
180.995
0.9(40)
As 0.17 inch 2 / ft
0.17
0.00045 min use min 0.005
31.4(12)
4.84 1.5
1.67 ft
2
380
14.146 ksf
5.55(4.84)
M 14.146
a 0.98 As
1.67 2 12
236.711 kip in
2
205
As (31.4 0.49 As )
236.711
0.9(40)
As 0.21 inch 2 / ft
0.21
0.00056 min use min 0.005
31.4(12)
f c 0.85 f c
where 0.7
'
OK
206
Use 4#6 bars (As= 1.77 inch2). At column 2 with concrete all around
A2
(1 2.7) 2
3.7 2 use 2
A1
12
A2
(1.5 2.7) 2
2.8 2 use 2
A1
1.5 2
207
Step 11 Final sketch (and using approximate minimum steel = 200/fy for transverse zones
a of fig below):
When zone a = 6.757 ft
As=(.005)6.7571231.5=12.7 inch2
Use 11#10 bars @ 8 inch c/c.
When zone a = 9.7 ft,
As=(.005)9.71231.5=18.33 inch2
Use 12#11 bars @ 10 inch c/c.
As steel in a1, b1 and b2 zones (from Step 8) is calculated using min therefore
they are considered as a single zone for computing bar-spacing.
Use 23 #10 bars @ 7.8 inch c/c.
As steel in a2 and b3 zones (from Step 8) is calculated using min therefore they are
considered as a single zone for computing bar-spacing.
Use 19 #11 bars @ 10 inch c/c.
Final sketch
208
209
Example problem 4:
Redesign the footing in Example problem 1 by using the finite element method.
Determine rotations, deflections, shear, moment, and soil pressure at every node and draw
the shear force, bending moment, deflection, and soil pressure diagrams.
Solution:
Step 1 Input data to the finite element program: BEAMDEZ.
Beam Data:
beam length = 30.5 (ft)
beam width = 4.84 (ft)
beam depth = 3 (ft)
ks is calculated as:
ks = 12(safety factor)qa
ks = 1234 =144 kip/ft3
Load factor, LF = Pu/Pw = 884/580 = 1.524
Use ks = LFks = 1.524144 = 219.5 kip/ft3
modulus of subgrade reaction, ks = 219.5 (kcf)
modulus of elasticity for concrete = 524160 (ksf)
Step 2 Discretize the beam and input element data to the program
number of elements = 29
Element
Length (ft)
0.66635
0.66635
0.45
0.45
0.5
0.68
210
Element
Length (ft)
0.75
0.75
1.2
10
1.75
11
1.554
12
13
14
0.75
15
0.5
16
0.5
17
0.85
18
1.5
19
1.75
20
1.75
21
1.5
22
1.5
23
2.4
24
1.5
25
26
0.75
27
0.75
28
0.8833
29
1.2
moment (kip-ft)
304
100
211
node
moment (kip-ft)
10
11
12
13
14
15
16
200
17
18
19
20
21
22
23
24
25
26
27
380
120
28
29
30
-80
rotation (rads)
deflection (ft)
-1.90280274740935E-03
3.85903453911878E-02
-1.90386528427405E-03
3.73221767733048E-02
-0.001907930483173
3.60511007175639E-02
-1.90004257382928E-03
3.51940022873247E-02
-1.88433331180187E-03
3.43422356040202E-02
212
node
rotation (rads)
deflection (ft)
-1.85843492036462E-03
3.34061881907532E-02
-1.8103746457302E-03
3.21579951775808E-02
-1.74224402077236E-03
3.08248432658327E-02
-1.66060496688549E-03
2.95480062536544E-02
10
-1.50826266906429E-03
2.76443094327891E-02
11
-1.25512259582533E-03
2.52223668117729E-02
12
-1.01681749887895E-03
2.34567073404221E-02
13
-8.64777269652738E-04
2.25162780742085E-02
14
-7.19249798187343E-04
2.17249818818629E-02
15
-6.16748316896474E-04
2.12244095993594E-02
16
-5.52518258973158E-04
0.020932245194791
17
-4.80798116221413E-04
2.06737236530881E-02
18
-3.49212092742148E-04
2.03201567364419E-02
19
-9.40161559056004E-05
1.99845197423788E-02
20
2.26972720573229E-04
2.00984495585325E-02
21
5.54444103582402E-04
2.07827057265278E-02
22
8.25243986408098E-04
2.18195648321851E-02
23
1.07244660707287E-03
2.32466390546716E-02
24
1.38033607187552E-03
2.62152880906319E-02
25
1.49780016873123E-03
2.83827453268335E-02
26
1.53345217781748E-03
0.029901545484579
27
1.53382649286268E-03
3.10532852062903E-02
28
1.51177448010676E-03
3.21947077592701E-02
29
1.49780169389108E-03
0.033523060844898
30
1.49212269345947E-03
0.035315879677222
Shear at Nodes:
node
1
shear on left(kip)
0
shear on right(kip)
-27.3187581809334
-27.3187581809334
250.260241651268
250.260241651268
228.88215680058
228.88215680058
212.056924933077
212.056924933077
194.726785409102
194.726785409102
173.787646345148
173.787646345148
149.360378539665
149.360378539665
124.799605798099
213
node
shear on left(kip)
shear on right(kip)
124.799605798099
94.1931751864354
10
94.1931751864354
50.8742520400059
11
50.8742520400059
6.60769277563831
12
6.60769277563831
-25.2150664468553
13
-25.2150664468553
-49.1359099473329
14
-49.1359099473329
-69.3310729175297
15
-69.3310729175297
-83.4238155863844
16
-83.4238155863844
105.457185088595
17
105.457185088595
90.6319234777614
18
90.6319234777614
65.2663429442096
19
65.2663429442096
30.7657175578585
20
30.7657175578585
-6.60061641563067
21
-6.60061641563067
-42.4792041439721
22
-42.4792041439721
-77.2502080735972
23
-77.2502080735972
-125.408898651456
24
-125.408898651456
-179.717564286821
25
-179.717564286821
-217.409140512223
26
-217.409140512223
-245.205093917641
27
-245.205093917641
110.052114229265
28
110.052114229265
82.1202231489021
29
82.1202231489021
45.0226611148056
30
45.0226611148056
1.3021065115E-08
Moments at Nodes:
node
1
moment on left(kip-ft)
0
moment on right(kip-ft)
-1.2107193470E-08
-18.2038545012474
-118.203854521271
48.5570575180463
48.5570575306192
151.554028050974
151.554028066806
246.979644292034
246.979644274339
344.34303700272
344.343037001789
462.51863648463
462.51863648952
574.538920404855
574.538920395542
668.138624738902
668.1386247396
10
781.170434951549
781.170434952306
11
870.200376009452
870.200376010733
214
node
moment on left(kip-ft)
moment on right(kip-ft)
12
880.468730568246
880.468730566208
13
855.253664119169
855.253664114513
14
806.117754160659
806.117754162988
15
754.11944946344
754.119449467864
16
712.407541668974
792.40754166944
17
845.136134209111
845.136134207831
18
922.173269153223
922.173269152583
19
1020.07278354996
1020.07278354969
20
1073.91278925267
1073.91278925224
21
1062.36171050317
1062.36171050341
22
998.642904265958
998.642904266599
23
882.767592137272
882.767592137301
24
581.786235341686
581.786235341802
25
312.209888892714
312.209888893529
26
94.8007483665133
94.8007483666297
27
-89.1030720786657
-209.103072080063
28
-126.563986418536
-126.56398641807
29
-54.0271933223121
-54.0271933221957
30
Soil Pressure:
node
8.47058081336571
8.1922178017404
7.91321660750528
7.72508350206777
7.53812071508244
7.33265830787032
7.058679941479
6.76605309685028
6.48578737267714
10
6.0679259204972
11
5.53630951518414
12
5.14874726122265
13
4.94232303728876
14
4.76863352306891
215
node
15
4.65875790705939
16
4.59462782025663
17
4.53788234185283
18
4.46027440364899
19
4.38660208345215
20
4.41160967809789
21
4.56180390697285
22
4.78939448066462
23
5.10263727250043
24
5.7542557358937
25
6.23001259923996
26
6.5633892338651
27
6.81619610278071
28
7.06673835315978
29
7.35831185545511
30
7.75183558915023
Step 5 select depth based on analysis for both wide-beam and diagonal tension.
Obtain critical location for wide beam first (slope of shear diagram = constant) using V
diagram:
216
250.26
2.4 ft
104.202
Checking diagonal tension at column 1 using d just obtained for a three-side zone and
vc=31.0 ksf from table A-1:
perimeter 2 w w d
2
A w w d
2
29.182
246.96 kip
4.84
246.96
11.69 ksf 31 ksf
(8.8)(2.4)
O.K .
217
A (w d ) 2 (1 2.4) 2 11.56 ft 2
V 200 11.56
v
29.182
130.3 kip
4.84
130.3
3.99 ksf 31 ksf O.K .
13.6 2.4
V 380 15.12
v
29.182
288.84 kip
4.84
288.84
7.715 ksf 31 ksf O.K .
15.6 2.4
Mn
Mu
As (d a / 2)
Mu
f y
C T
0.85 f c ab As f y
'
As f y
'
0.85 f c b
40 As
0.203 As
0.85(4)(4.84 12)
As (2.4 12 0.1015 As )
1073.913 12
0.9(40)
218
As 13.03 inch 2
As
13.03
200
0.007 min
bd 4.84(2.4) 144
fy
O.K .
Ld C1 Ab f y /
fc
'
As (2.4 12 0.1015 As )
880.469 12
0.9(40)
As 10.59 inch 2
As
10.59
200
0.0063 min
bd 4.84(2.4) 144
fy
O.K .
219
Use 7 #11 bars (As = 10.94 inch2)
Development length:
Step 7 Find steel in short direction at column 1 (refer to figure for width):
L'
B w 4.84 16 / 12
1.753 ft
2
2
Pu1
304
20.048 ksf
BB ' 4.84(3.133)
M q
L' 2
1.7532 12
20.048
369.64 kip in
2
2
fy
'
0.85 f c B'
As 0.98 As
As (27.8 0.49 As )
369.64
0.90(40)
As 0.372 inch 2 / ft
220
0.372
200
0.001 min
0.005 use min
27.8(12)
fy
Ld 0.04 f y Ab /
4.84 1
1.92 ft
2
200
8.983 ksf
4.6(4.84)
1.92 2 12
M 8.983
198.612 kip in
2
a 0.98 As
As (27.8 0.49 As )
198.692
0.9(40)
As 0.195 inch 2 / ft
221
0.195
0.0006 min use min 0.005
27.8(12)
4.84 1.5
1.67 ft
2
380
15.395 ksf
5.1(4.84)
M 15.395
1.67 2 12
257.6 kip in
2
a 0.98 As
As (27.8 0.49 As )
257.6
0.9(40)
As 0.26 inch 2 / ft
0.26
0.00078 min use min 0.005
27.8(12)
222
223
COMPARISON
Conventional
Finite Element
Method
Method
265.09 kip
250.26 kip
-5.59
119.77 kip
105.46 kip
-11.95
281.48 kip
245.21 kip
-12.89
1280.77 kN-m
880.47 kN-m
-31.26
1596.27 kN-m
1073.91 kN-m
-32.72
Max.
4
Moment
(span-1)
Max.
mid-span
mid-span
Moment
(span-2)
4898
3302
-32.58
1620
1458
-10.00
column 1
Transverse steel under
column 2
1005
922
-8.26
1620
1620
224
Example problem 5:
The following combined footing design is made by IntelliConsultants (pvt.) Ltd. for Isra
University Hospital using a program made in MS-Excel.
225
226
Their program uses the conventional method. A comparison of bending moment obtained
by the conventional method and the finite element method is given below:
It is quite obvious that the top bars, which are required according to the bending moment
obtained by conventional method, are not required according to the bending moment
obtained by the finite element method. Also the gap between the bottom bars, which has
been provided by calculations according to the conventional method, should not be left as
per finite element calculations. Due to these changes, about 30% steel will be saved.
APPENDICES
Table-A1
Allowable wide-beam and diagonal tension shear by ACI Code for several strengths of
concrete for < 2.0
where = col. length/col. width
fc, psi (MPa)
=0.85
3000 (21)
3500 (24)
4000 (28)
5000 (35)
Ks, kcf
30~100
60~500
400~800
200~500
150~300
Ks, kN/m3
4800~16000
9300~80000
64000~128000
32000~80000
24000~48000
75~150
150~300
>300
12000~24000
24000~48000
>48000
228
Table-A4
Typical range of values for the static stress strain modulus Es for selected soils
Field values depend on stress history, water content, density, etc.
Es
Soil
Clay:
Very soft
Soft
Medium
Hard
Sandy
Glacial till:
Loose
Dense
Very dense
Loess:
Sand:
Silty
Loose
Dense
Sand and gravel
Loose
Dense
Shale
Silt
Table-A5
Ksf
Mpa
50~250
100~500
300~1000
1000~2000
500~5000
2~15
5~25
15~50
50~100
25~250
200~3200
3000~15000
10000~30000
300~1200
10~150
150~720
500~1440
15~60
150~450
200~500
1000~1700
5~20
10~25
50~81
1000~3000
2000~4000
3000~300000
40~400
50~150
100~200
150~5000
2~20
Clay, saturated
0.4~0.5
Clay, unsaturated
0.1~0.3
Sandy clay
0.2~0.3
Silt
0.3~0.35
Sand, gravely sand
0.1~1.0
Commonly used
0.3~0.4
Rock
0.1~0.4 (depends somewhat on type of rock)
Loess
0.1~0.3
Ice
0.36
Concrete
0.15
229
Table-A6
Equations for stress strain modulus Es by several test methods
Es in kPa for SPT and units of qc for CPT; divide kPa by 50 to obtain ksf. The N values
should be estimated as N55 and not N70. Refer also to Tables A4 and A5.
Soil
SPT
CPT
Sand
(normally Es = 500(N+15)
Es = (2 to 4)qu
consolidated)
Es = 7000 N
Es = 8000 qc
Es = 6000 N
----Es = 1.2 (3Dr2+2)qc
Es = (15000 to 22000) Es = (1+ Dr2)qc
ln(N)
Sand (saturated)
Es = 250(N+15)
Es = F.qc
e = 1.0
F=3.5
e = 0.6
F=7.0
Sands,
all
(norm. Es = (2600 to 2900)N
consolidated)
Sand (overconsolidated)
Es = 40000+1050N
Es = (6 to 30)qc
Es(OCR) Es,nc OCR
Gravelly sand
Es = 1200(N+6)
Es = 600(N+6) N15
Es = 600(N+6)+2000
N>15
Clayey sand
Es = 320(N+15)
Es = (3 to 6)qc
Silts, sandy silt, or clayey Es = 300(N+6)
Es = (1 to 2)qc
silt
Es = 2.5 qc qc<2500 kPa
Es = 4qc + 5000
2500<qc<5000
Es = constrained modulus = Es(1-)/{(1+)(1-2)} =
1/m
Soft clay or clayey silt
Es = (3 to 8)qc
Use the undrained shear strength su in units of su
Clay and silt
IP >30 or organic
Es = (100 to 500)su
Silty or sandy clay
IP <30 or stiff
Es = (500 to 1500)su
Again Es,OCR Es,nc OCR
Use smaller su-coefficient for highly elastic clay
Of general application in clays is
Es = K.su (units of su)
Where K is defined as
K = 4200-142.54IP+1.73IP2-0.0071Ip3
And IP = plasticity index in percent. Use 20% IP 100% and round K to the nearest
multiple of 10
Another equation of general application is
Es =9400-8900 IP + 11600 Ic 8800S (kPa)
Where IP = plasticity index, Ic = relative consistency, S = degree of saturation.
REFERENCE
Argyris, G.H., and Kelsey, S. (1960), Energy Theorems and Structural Analysis,
Butterworth Scientific Publications, London.
AutoCAD 2000, Copyright 1999, Command Reference, AutoDesk Inc.
AutoCAD 2000, Copyright 1999, Users Guide, AutoDesk Inc.
AutoCAD 2000, Copyright 1999, VBA and ActiveX Automation, AutoDesk Inc.
Biot, M.A. (1937), Bending of an Infinite Beam on an Elastic Foundation, J. Appl.
Mech., 59, A1-A7.
Bourdeau, P.L. (1989) Modeling of membrane action in a two-layer reinforced soil
system. Comp. and Geotech. 7(1-2), pp. 19-36.
Bowles, J.E. (1982, 88, 96), Foundation Analysis and Design, 3rd, 4th, and 5th ed.
McGraw-Hill Companies, Inc.
Clough, R.W. (1960), The Finite Element Method in Plane Stress Analysis, J. Struct. Div,
ASCE, Proc. 2nd Conf. Electronic Computation, pp. 345-378.
Coats R.C., Coutie M.G., and Kong F.K. Structural Analysis, Nelson.
Coduto, D.C. (1994), Foundation Design, Prentice-Hall, Englewood Cliffs, N.J.
Cope, R.J., Sawko, F., and Tickell, R.G. (1982), Computer Methods for Civil Engineers,
McGraw-Hill Book Company (UK) Limited.
Courant, R. (1943), Variational Methods for the Solution of Problems of Equilibrium and
Vibration, Bull. Am. Math. Soc., vol. 49, pp. 1-43.
Daloglu, A.T., and Vallabhan, C.V.G. (2000), Nondimensional Parameters for Values of
k for Slab on Winkler Foundation, J. Geotech. and Geoenviron. Engrg, 126(5), pp.
463-471.
Ghosh, C., and Madhav, M.R. (1994), Reinforced Granular Fill-soft Soil System:
Confinement Effect, Geotextiles and Geomembranes, 13(5), pp. 727-741.
Hassoun, Nadim. Design of Reinforced Concrete Structures.
Hrenikoff, A. (1941), Solution of Problems in Elasticity by the Framework Method, J.
Appl. Mech., Trans. ASME, vol. 8, pp. 169-175.
Kikuchi, N. (1986), Finite Element Methods in Mechanics, 1st ed. Press Syndicate of the
University of Cambridge.
Koerner, R.M. (1990) Designing with Geosynthetics, 2nd ed., Prentice Hall, Englewood
Cliffs, N.J.
Madhav, M.R., and Poorooshasb, H.B. (1988), A New Model for Geosynhetic Reinforced
Soil, Comp. and Geotech. 6(4), pp. 277-290.
Mansfield, Richard (1994), The Visual Guide to Visual BASIC for Applications, 1st ed.,
Ventana Press.
Morgan, W., Elementary Reinforced Concrete Design, 2nd ed. Edward Arnold Publishers
Limited, London.
Nilson, A.H., and Winter, G. (1991), Design of Concrete Structures, 11th ed. McGraw-Hill Inc.
Pasternak, P.L. (1954) On a New Method of Analysis of an Elastic Foundation by Means
of two Foundation Constants. Gosudarstvennoe izdatelstro liberaturi po stroitelsvui
arkhitekture, Moscow.
PC Webopaedia Lite 1.6, Copyright 1996,1997, Sandy Bay Software, Inc.
230
231
Petroutsos, Evangelos (1998). Mastering Visual Basic 6, SYBEX Computer Books
Inc.
Punmia, B.C. (1986), Reinforced Concrete Structures, 3rd ed. Standard Publishers
Distributors, Delhi.
Punmia, B.C. (1992) Soil Mechanics and Foundations. 9th ed. Standard Book House
Delhi.
Pytel, A, Singer, F.L. (1987), Strength of Materials, 4th ed. Harper & Row, Publishers,
Inc.
Reddy, J.N. (1993), An Introduction to the Finite Element Method, 2nd ed. McGraw-Hill
Inc.
Rockey K.C., Evans H.R., Griffiths D.W., and Nethercot D.A. (1975) The finite Element
Method, A Basic Introduction, Willium Clowes & Sons, Limited.
Selvadurai, A.P.S. (1979), Elastic analysis of soil-foundation interaction: development in
geotechnical engineering, 17, Elsevier, Amsterdam.
Shukla, S.K., and Chandra, S. (1994), A Study of Settlement Response of a GeosyntheticReinforced Compressible Granular Fill-soft Soil System. Geotextiles and
Geomembranes, 13(9), pp. 627-639.
Straughan, W.T. (1990), Analysis of Plates on Elastic Foundation, PhD dissertation,
Dept. of Civ. Engrg., Texas Tech University, Lubbock, Tex.
Terzaghi, K. (1955), Evaluation of Coefficient of Subgrade Reaction. Geotechnique,
London.
Timoshenko, S.P. (1921), On the Correction for Shear of the Differential Equation for
Transverse Vibration of Prismatic Bars, Philosophical Magazine, 41, 744.
Turhan, A. (1992), A Consistent Vlasov Model for Analysis of Plates on Elastic
Foundations Using the Finite Element Method, Dept. of Civ. Engrg., Texas Tech
University, Lubbock, Tex.
Turner, M., Clough, R., Martin, H., and Topp, L. (1956), Stiffness and Deflection Analysis
of Complex Structures, J. Aero. Sci., vol. 23, pp. 805-823.
Utku, S., Norris, C.H., Wilbur, J.B. (1991), Elementary Structural Analysis, 4th ed.
McGraw-Hill Inc.
Vallabhan, C.V.G, and Daloglu, A.T. (1999), Consistent FEM-Vlasov Model for Plates
on Layered Soil, J. Struct. Engrg., ASCE, 125(1), pp. 108-113.
Vallabhan, C.V.G., and Daloglu, A.T. (1997), Consistent FEM-Vlasov Model for Slabs on
Elastic Foundations, Proc., 7th Int. Conf. on Computing in Civ. And Build. Engrg.,
vol. 1, pp. 57-92, Seoul.
Vallabhan, C.V.G., and Das, Y.C. (1988), Parametric Study of Beams on Elastic
Foundation, J. Engrg. Mech., ASCE, 114(12), pp. 2072-2082.
Vallabhan, C.V.G., and Das, Y.C. (1989), A Refined Model for Beams on Elastic
Foundation, Int. J. Solids and Struct., 27(5), pp. 629-637.
Vesic, A.S. (1961), Beams on Elastic Subgrade and Winklers Hypothesis. Proc., 5th
ICSMFE.
Wang, C.K. (1987), Intermediate Structural Analysis, McGraw-Hill Inc.
Wang, C.K., and Salmon, G. (1985) , Reinforced Concrete Design, 4th ed. Harper & Row
Publishers, New York.
232
Wang, C.M., Yang, T.Q., and Lam, K.Y. (1997), Viscoelastic Timoshenko Beam
Solutions from Euler-Bernoulli Solution, J. Engrg. Mech., ASCE, 123(7), pp. 746748.
Warnock, F.V., Benham, P.P., Crawford, R.J. (1996), Mechanics of Engineering
Materials, Longman Group UK Ltd.
White, R.E. (1985), An Introduction to the Finite Element Method with Applications to
Nonlinear Problems, John Wiley & Sons.
Yin, J.H. (1997a), Modeling Geosynthetic-Reinforced Granular Base Over Soft Soil.
Geosynthetics Int. (J.), 4(2), pp. 168-185.
Yin, J.H. (1997b), A Non-linear Model for Geosynthetic-Reinforced Granular Fill Over
Soft Soil, Geosynthetics Int. (J.), 4(5), 523-537.
Yin, J.H. (2000), Comparative Modeling Study of Reinforced Beam on Elastic
Foundation, J. Geotech. and Geoenviron. Engrg, 126(3), pp. 265-271.
Zienkiewicz, O.C. (1989), The Finite Element Method, McGraw-Hill Publishing
Company Limited.
INDEX
C
A
C++, 82, 83
CAD, 80
CAE, 80
Cholesky method, 21
class modules, 85
classical analysis of solids, 13
closure error, 32
Clough, 9
code modules, 85
Coduto, 42
columns
closely spaced, 27
eccentric loading, 26
near mechanical equipment, 26
near property line, 26
stiffening effect of, 33
combined footings, 26
design steps, 34
necessity of, 26
rectangular, 29
shape of, 28
compatibility of displacements, 11, 15
complex geometry, 14
composite materials, 24
compression modulus, 44
computer memory, 24
conformable matrices, 19
conjugate beam, 72
conjugate beam method, 43
conjugate beam theorem 1, 74
constitutive laws, 24
contact problems, 24
continuity of displacements, 17
continuum structures
analysis of, 13
Courant, 9
CP/M, 81
cracking behavior, 24
B
backward substitution, 21
band matrix, 20
base contact pressure, 42
BASIC, 82
basic differential equation, 43
beam on elastic foundation, 5, 37
beam on springs, 6
beam.dvb, 162
BEAMDEZ
default directory, 162
entering data, 164, 165
installation, 162
loading, 162
results, 167
running, 163
Beamdimensions, 88
Biot, 41
bond failures, 24
Bordeau, 38
boundary, 96
boundary conditions, 7, 22, 78, 166
boundary conditions of an unloaded member, 48
Boussinesq analysis, 42
D
Daloglu, 43
Das, 43
data files, 2
data input, 25
deep beams, 13
deflection equation, 43
deflections, 69
deformation characteristics, 69
233
234
degrees of freedom, 16
Delphi, 82
depth of footing, 32
diagonal tension, 34
difference equations, 7
differential equation
solution of, 45
differential equations of equilibrium, 13
differential settlement, 28
differential settlements, 26
digitizing tablet, 80
discrete mesh points, 7
discretizing the continuum, 25
displacement compatibility, 12
displacement field, 14
displacement method, 43
distribution of projects, 86
dowel requirements, 35
dynamic response of beams, 39
dynamic systems, 24
E
eccentric columns, 4
elastic curve, 44
elastic foundation, 37
elastic soil, 37
Element A matrix, 71
element aspect ratio, 165
Element B matrix, 72
element EASAT matrix, 75
element ESAT matrix, 75
element S matrix, 72
elements
beam, 16
brick, 16
line, 16
number of, 16
rectangular, 16
spring, 16
tetrahedral, 16
triangular, 16
type of, 16
Elements, 106
Embedded VBA Projects, 85
equilibrium, 16
equilibrium of forces, 11, 15
equivalent system of forces, 16
ETABS, 23
event-driven language, 83
Excel VBA, 81
Exporter, 143
external loads, 16
external nodal displacements, 68
external node forces, 68
F
fictitious external points, 22
fictitious springs, 37
Filer, 145
finite element analysis of solids, 14
G
Galerkin method, 7
Gauss Jordan elimination method, 21
geosynthetics, 38
Ghosh, 38
global ASAT
order of, 77
global matrix ASAT, 76
global stiffness matrix, 13
Global VBA Projects, 85
graphical programming environment, 82
grid foundation, 27, 31
GW-BASIC, 83
235
H
Hardy Cross Moment Distribution Method, 11
historical comments, 9
Hookes Law, 15
Hrenikoff, 9
I
identity matrix, 21
infinite series, 13
INSTALL.EXE, 162
internal member deformations, 68
internal member forces, 68
internal stresses, 14
interpolation theory, 8
inverse matrix, 21
iterative procedures for k, 43
J
Java, 83
joint equilibrium, 12
N
NASTRAN, 23
neighboring property, 26
nodal equilibrium, 12
node points, 10
node springs K, 77
non-centered difference equations, 22
non-dimensional parameters for k, 43
non-homogenous continua, 23
non-linear material behavior, 24
nonrectangular meshes, 7
non-straight boundaries, 7
non-uniform meshes, 7
numerical solutions, 6
O
K
Kelsey, 9
Koerner, 38
L
lHospitals rule, 62
laterally loaded piles, 38
laws of material behavior, 15
light pen, 80
linear elasticity, 15
linear simultaneous equations, 12
linear stress distribution, 31
loadmom, 147
local stiffness matrices, 12
M
Madhav, 38
main reinforcement, 33
Martin, 9
mat foundation, 4, 27, 31
material parameters, 24
material properties, 23
matrix
transpose of, 19
matrix methods, 9, 11
matrix multiplication, 19
matrix operations, 19
matrix properties, 19
maximum soil pressure, 40
member stiffness matrix, 37
memberlen, 153
MicroCAD, 81
mixed method, 12
modified moments, 33
object libraries, 83
object-oriented programming language, 82
one way slab, 33
open-architecture application, 84
P
P matrix, 78
Pascal, 83
Pasternak, 38
pavement, 38
plate flexure
classical theory of, 13
plate-load test, 40, 41
plates, 13
plotting of results, 17
poor soil, 27
program code, 88
programmatic control, 84
propagation problems, 24
punching shear, 34
Q
QuickBasic, 83
R
RAD, 82
raft foundation, 4
rectangular combined footings
design of, 31
reinforcement design, 33
restrained points
reactions at, 14
rigid design
236
assumptions of, 35
demerits of, 35
Ritz method, 7
rotations, 69
rounding of dimensions, 32
S
SAFE, 23
SAP, 23
saver, 158
secant modulus, 39
self-weight of beam, 78
Selvadurai, 38
settlement factors, 28
shear computations, 32
shear reinforcement, 34
shell structures, 13
Shukla, 38
simultaneous equations, 11
skeletal structures, 10
slabs, 13
slope-deflection method, 11
soil
elastic range of, 2
soil spring forces KX, 71
soil-structure interaction, 37
pure shearing model, 38
soil-structure separation, 2
spongy material, 37
spring constant, 38
springs
contributory node area, 77
elastic-plastic, 38
interaction between, 38
non-linear, 38
obeying Hooke's Law, 38
St. Venant torsion problem, 9
STARDYNE, 23
starter, 160
static response of beams, 39
statically determinate problems, 15
steel
minimum percentage of, 33
stiffness matrix [S], 61
stiffness matrix of a member on elastic foundation, 49
stiffness method, 12
stiffness modulus, 37, 39
Straughan, 43
stress field, 14
stress-strain relationships, 13
strip foundation, 31
STRUDL, 23
subgrade reaction, 5
supercomputers, 24
symmetric matrix, 20
T
tangent modulus, 39
Terzaghi, 38, 41
Timoshenko beam, 39
Topp, 9
transient problems, 24
transverse deflection, 37
transverse loads, 37
transverse reinforcement, 33
trial solutions, 22
truncation, 14
Turhan, 43
Turner, 9
two-way action, 5, 32
U
ultimate strength design method, 35
unconfined seepage, 24
uneven soils, 31
V
Vallabhan, 43
VBA, 81, 83
VBARUN, 163
Vesic, 38, 42
vibration of beams
modeling of, 39
virtual wind tunnels, 24
virtual work, 69
Visual Basic, 82, 83
visual checks, 17
W
Wang, 39
weak soils, 31
weather systems, 24
weighted-residual method, 8
wide-beam shear, 5, 32
Windows Interoperability, 85
Winkler, 1, 37
Winkler foundation model, 1, 2
limitations, 38
Winkler Foundation Model, 37
WinZip SelfExtractor, 162
Word VBA, 81
work softening, 24
Y
Yin, 38