Kulak & Grondin Example 8.2

This example is from "Limit States Design in Structural Steel", Ninth Edition, CISC, by Kulak and Grondin. This example is slightly modified in order to compare the results with that obtained using the method of slope-deflection. The modifications to the model are:

  • a pin is inserted at the top of columns JK and IG, with the result that column stacks JKL and IGH offer no lateral resistance (in the original K&G example, the columns are continuous and there is a very small horizontal reaction at the base of those two columns).
  • the cross-sectional areas of all members are made very large so as to make axial changes in length neglible.

In [1]:
from Frame2D import Frame2D
from IPython import display
display.Image('data/KG82.d/KG82a.jpg')


Out[1]:

The notional lateral loads of 6.9 kN at node H and 8.4 kN at node G are added as before.


In [2]:
frame = Frame2D('KG82sd')
frame.input_all()

In [3]:
RS = frame.solve('all')
frame.write_results(frame.dsname,RS)
frame.print_input()
frame.print_results(RS)


Frame KG82sd:
=============


              # of nodal degrees of freedom: 36
  # of constrained nodal degrees of freedom: 10
# of unconstrained nodal degrees of freedom: 26  (= degree of kinematic indeterminacy)

                               # of members: 14
                             # of reactions: 10
                                 # of nodes: 12
                            # of conditions: 10
           degree of statical indeterminacy: 6



Nodes:
======

Node          X         Y  Constraints  DOF #s
----      -----     -----  -----------  ------
A         10000         0  FX,FY,MZ     26,27,28
B         10000      6500               0,1,2
C         10000     12000               3,4,5
D         20500         0  FX,FY,MZ     29,30,31
E         20500      6500               6,7,8
F         20500     12000               9,10,11
G         30500      6500               12,13,14
H         30500     12000               15,16,17
I         30500         0  FX,FY        32,33,18
J             0         0  FX,FY        34,35,19
K             0      6500               20,21,22
L             0     12000               23,24,25



Members:
========

Member   Node-J  Node-K    Length       dcx       dcy  Size                Ix           A  Releases
------   ------  ------    ------   -------   -------  --------      --------       -----  --------
AB       A       B         6500.0   0.00000   1.00000  W310x97       2.22e+08       1e+10  
BC       B       C         5500.0   0.00000   1.00000                2.22e+08       1e+10  
DE       D       E         6500.0   0.00000   1.00000                2.22e+08       1e+10  
EF       E       F         5500.0   0.00000   1.00000                2.22e+08       1e+10  
IG       I       G         6500.0   0.00000   1.00000                2.22e+08       1e+10  MZK
GH       G       H         5500.0   0.00000   1.00000                2.22e+08       1e+10  
JK       J       K         6500.0   0.00000   1.00000                2.22e+08       1e+10  MZK
KL       K       L         5500.0   0.00000   1.00000                2.22e+08       1e+10  
CF       C       F        10500.0   1.00000   0.00000                4.88e+08       1e+10  
BE       B       E        10500.0   1.00000   0.00000  W460x106      4.88e+08       1e+10  
FH       F       H        10000.0   1.00000   0.00000                4.88e+08       1e+10  MZJ,MZK
EG       E       G        10000.0   1.00000   0.00000                4.88e+08       1e+10  MZJ,MZK
KB       K       B        10000.0   1.00000   0.00000                4.88e+08       1e+10  MZJ,MZK
LC       L       C        10000.0   1.00000   0.00000                4.88e+08       1e+10  MZJ,MZK



Node Loads:
===========

Type      Node      FX          FY          MZ
----      ----  ----------  ----------  ----------
wind      H          15000           0           0
wind      G          35000           0           0
notional  H           6900           0           0
notional  G           8400           0           0

Member Loads:
=============

Type      Member  Load
----      ------  ----------------
gravity   LC      UDL(L=10000.0,w=-45)
gravity   CF      UDL(L=10500.0,w=-45)
gravity   FH      UDL(L=10000.0,w=-45)
gravity   KB      UDL(L=10000.0,w=-55)
gravity   BE      UDL(L=10500.0,w=-55)
gravity   EG      UDL(L=10000.0,w=-55)

Support Displacements:
======================

 - - - none - - -

Load Combinations:
==================

Case   Type      Factor
-----  ----      ------
all    gravity     1.00
 "     notional    1.00
 "     wind        1.00

Results for load case: all
++++++++++++++++++++++++++


Node Displacements:
===================

Node        DX         DY      Rotation
----      ------     ------   ---------
A          0.000      0.000   0.0000000
B         23.363     -0.000  -0.0071297
C         34.307     -0.000  -0.0072270
D          0.000      0.000   0.0000000
E         23.363     -0.000   0.0031089
F         34.307     -0.000   0.0057752
G         23.363     -0.000  -0.0019898
H         34.307     -0.000  -0.0019898
I          0.000      0.000  -0.0035943
J          0.000      0.000  -0.0035943
K         23.363     -0.000  -0.0019898
L         34.307     -0.000  -0.0019898

Reactions:
==========

Node        FX         FY         MZ  
----     -------    -------    -------
A         -0.371    995.932     49.908
D        -64.929   1054.068    189.782
I          0.000    500.000      --   
J          0.000    500.000      --   

Member End Forces:
==================

          /----- Axial -----/   /----- Shear -----/   /----- Moment ----/
Member       FX J       FX K       FY J       FY K       MZ J       MZ K
------     -------    -------    -------    -------    -------    -------
AB         995.932   -995.932      0.371     -0.371     49.908    -47.494
BC         453.539   -453.539    -91.386     91.386   -250.526   -252.097
DE        1054.068  -1054.068     64.929    -64.929    189.782    232.254
EF         468.961   -468.961    113.286   -113.286    290.012    333.061
IG         500.000   -500.000     -0.000      0.000     -0.000      0.000
GH         225.000   -225.000      0.000     -0.000      0.000      0.000
JK         500.000   -500.000      0.000      0.000      0.000      0.000
KL         225.000   -225.000      0.000      0.000      0.000      0.000
CF          91.386    -91.386    228.539    243.961    252.097   -333.061
BE         -91.757     91.757    267.393    310.107    298.020   -522.266
FH         -21.900     21.900    225.000    225.000      0.000      0.000
EG         -43.400     43.400    275.000    275.000      0.000      0.000
KB           0.000     -0.000    275.000    275.000      0.000      0.000
LC           0.000      0.000    225.000    225.000      0.000      0.000

Compare with results from slope-deflection


In [4]:
import pandas as pd

BM = [('AB', -49.9080183705027, 47.4941396356060),   # results from method of slope deflection
     ('BC', 250.526060428376, 252.096857589821),
     ('DE', -189.782099213905, -232.254022051198),
     ('EF', -290.011616822927, -333.061301195269),
     ('BE', -298.020200063982, 522.265638874126),
     ('CF', -252.096857589821, 333.061301195269)]

SD = pd.DataFrame({m:{'MZJ':-a,'MZK':-b} for m,a,b in BM}).T
SD


Out[4]:
MZJ MZK
AB 49.908018 -47.494140
BC -250.526060 -252.096858
BE 298.020200 -522.265639
CF 252.096858 -333.061301
DE 189.782099 232.254022
EF 290.011617 333.061301

In [5]:
# get our member end forces for the same members
HERE = pd.DataFrame([(m.id,ef.m2/1e6,ef.m5/1e6) 
                     for m,ef in RS.member_efs.items()],columns=['ID','MZJ','MZK']).set_index(['ID'])
HERE = HERE.loc[SD.index]
HERE


Out[5]:
MZJ MZK
AB 49.908016 -47.494142
BC -250.526062 -252.096860
BE 298.020204 -522.265634
CF 252.096860 -333.061295
DE 189.782100 232.254024
EF 290.011610 333.061295

% Difference in End Moments


In [6]:
pd = (100*(SD-HERE)/HERE).round(6)
pd


Out[6]:
MZJ MZK
AB 0.000006 -0.000005
BC -0.000001 -0.000001
BE -0.000001 0.000001
CF -0.000001 0.000002
DE -0.000000 -0.000001
EF 0.000002 0.000002

Max. difference is 0.000006%, which is quite good.


In [7]:
pd.abs().max()


Out[7]:
MZJ    0.000006
MZK    0.000005
dtype: float64

In [ ]: