Contents

TWO STORY STEEL FRAME, PUSH-OVER ANALYSIS WITH CONSTANT GRAVITY LOADS AND LATERAL FORCES UNDER LOAD CONTROL for NONLINEAR GEOMETRY (distributed inelasticity frame element)

%  =========================================================================================
%  FEDEASLab - Release 2.6, July 2004
%  Matlab Finite Elements for Design, Evaluation and Analysis of Structures
%  Copyright(c) 1998-2004. The Regents of the University of California. All Rights Reserved.
%  Created by Professor Filip C. Filippou (filippou@ce.berkeley.edu)
%  Department of Civil and Environmental Engineering, UC Berkeley
%  =========================================================================================

Initialization: clear memory and define global variables

% all units in kip and inches
CleanStart

Create output file

IOW = Create_File (mfilename);

Create Model

Model_TwoStoryFrm
% echo input data of structural model to output file (optional)
Print_Model (Model,'Push-over analysis of two story steel frame with distributed inelasticity elements');

Element properties

DistrInelElemData
% print element properties (optional)
Structure ('data',Model,ElemData);

1. Loading (distributed loads and vertical forces on columns)

define loading

for el=5:6 ElemData{el}.w = [0;-0.50]; end
for el=7:8 ElemData{el}.w = [0;-0.35]; end

Pe(2,2) =  -200;
Pe(3,2) =  -400;
Pe(5,2) =  -200;
Pe(6,2) =  -400;
GravLoading = Create_Loading (Model,Pe);

Nonlinear geometry option for columns

for el=1:4 ElemData{el}.Geom = 'PDelta'; end

Incremental analysis for distributed element loading (single load step)

% initialize state
State = Initialize_State(Model,ElemData);
% initialize solution strategy parameters
SolStrat = Initialize_SolStrat;
% specify initial load increment (even though it is the same as the default value and could be omitted)
SolStrat.IncrStrat.Dlam0 = 1;
% initialize analysis sequence
[State SolStrat] = Initialize(Model,ElemData,GravLoading,State,SolStrat);
% apply load in one increment
[State SolStrat] = Increment(Model,ElemData,GravLoading,State,SolStrat);
% perform equilibrium iterations (we assume that convergence will occur!)
[State SolStrat] = Iterate  (Model,ElemData,GravLoading,State,SolStrat);
% update State
State = Update_State(Model,ElemData,State);
% determine resisting force vector
State   = Structure ('forc',Model,ElemData,State);
% set plot counter and store results for post-processing
k = 1;
Post(k) = Structure ('post',Model,ElemData,State);
 Iteration: 1  Relative work increment = 6.030403e-009
 Iteration: 2  Relative work increment = 6.060154e-033
 Number of iterations = 2

2.Loading in sequence: horizontal forces

% specify nodal forces
% !!!! IMPORTANT!!!! CLEAR PREVIOUS PE
clear Pe;
Pe(2,1) =  20;
Pe(3,1) =  40;
Pe(5,1) =  20;
Pe(6,1) =  40;
LatLoading = Create_Loading (Model,Pe);

Incremental analysis for horizontal force pattern (load control is on)

%  (gravity forces are left on by not initializing State!)
% specify initial load increment and turn load control on (default value is 'no')
SolStrat.IncrStrat.Dlam0 = 0.40;
SolStrat.IncrStrat.LoadCtrl = 'yes';
SolStrat.IterStrat.LoadCtrl = 'yes';
% specify number of load steps
nostep = 20;
% initialize analysis sequence
[State SolStrat] = Initialize(Model,ElemData,LatLoading,State,SolStrat);

tic;
% for specified number of steps, Increment, Iterate and Update_State (we assume again convergence!)
for j=1:nostep
   [State SolStrat] = Increment(Model,ElemData,LatLoading,State,SolStrat);
   [State SolStrat] = Iterate  (Model,ElemData,LatLoading,State,SolStrat);
   State = Update_State(Model,ElemData,State);
   k = k+1;
   Post(k) = Structure ('post',Model,ElemData,State);
end
toc;
 Iteration: 1  Relative work increment = 1.223794e-008
 Iteration: 2  Relative work increment = 2.355087e-018
 Number of iterations = 2

 Iteration: 1  Relative work increment = 4.800499e-008
 Iteration: 2  Relative work increment = 9.285111e-018
 Number of iterations = 2

 Iteration: 1  Relative work increment = 1.076169e-007
 Iteration: 2  Relative work increment = 2.093900e-017
 Number of iterations = 2

 Iteration: 1  Relative work increment = 9.465167e-004
 Iteration: 2  Relative work increment = 1.048626e-010
 Iteration: 3  Relative work increment = 5.081558e-021
 Number of iterations = 3

 Iteration: 1  Relative work increment = 4.931294e-002
 Iteration: 2  Relative work increment = 1.598422e-004
 Iteration: 3  Relative work increment = 5.467641e-008
 Iteration: 4  Relative work increment = 7.597281e-015
 Iteration: 5  Relative work increment = 2.975094e-025
 Number of iterations = 5

 Iteration: 1  Relative work increment = 2.883063e-002
 Iteration: 2  Relative work increment = 4.025463e-005
 Iteration: 3  Relative work increment = 1.652295e-011
 Iteration: 4  Relative work increment = 3.191758e-021
 Number of iterations = 4

 Iteration: 1  Relative work increment = 3.321929e-002
 Iteration: 2  Relative work increment = 5.805325e-005
 Iteration: 3  Relative work increment = 9.777868e-009
 Iteration: 4  Relative work increment = 7.567114e-016
 Iteration: 5  Relative work increment = 1.782521e-024
 Number of iterations = 5

 Iteration: 1  Relative work increment = 4.368571e-003
 Iteration: 2  Relative work increment = 1.487965e-005
 Iteration: 3  Relative work increment = 3.812651e-009
 Iteration: 4  Relative work increment = 4.391047e-016
 Iteration: 5  Relative work increment = 1.353741e-024
 Number of iterations = 5

 Iteration: 1  Relative work increment = 2.001909e-002
 Iteration: 2  Relative work increment = 4.698691e-004
 Iteration: 3  Relative work increment = 2.105518e-010
 Iteration: 4  Relative work increment = 5.988119e-018
 Number of iterations = 4

 Iteration: 1  Relative work increment = 5.405125e-002
 Iteration: 2  Relative work increment = 2.623730e-007
 Iteration: 3  Relative work increment = 5.345918e-015
 Iteration: 4  Relative work increment = 1.262473e-022
 Number of iterations = 4

 Iteration: 1  Relative work increment = 3.754426e-002
 Iteration: 2  Relative work increment = 5.983535e-007
 Iteration: 3  Relative work increment = 1.145804e-013
 Iteration: 4  Relative work increment = 1.034219e-023
 Number of iterations = 4

 Iteration: 1  Relative work increment = 6.029937e-002
 Iteration: 2  Relative work increment = 5.877579e-006
 Iteration: 3  Relative work increment = 1.427978e-009
 Iteration: 4  Relative work increment = 2.019940e-016
 Iteration: 5  Relative work increment = 1.220912e-025
 Number of iterations = 5

 Iteration: 1  Relative work increment = 2.930206e-001
 Iteration: 2  Relative work increment = 6.889450e-005
 Iteration: 3  Relative work increment = 4.088843e-012
 Iteration: 4  Relative work increment = 1.081190e-020
 Number of iterations = 4

 Iteration: 1  Relative work increment = 9.365905e-003
 Iteration: 2  Relative work increment = 1.409463e-005
 Iteration: 3  Relative work increment = 3.303146e-013
 Iteration: 4  Relative work increment = 2.235413e-021
 Number of iterations = 4

 Iteration: 1  Relative work increment = 9.819145e-003
 Iteration: 2  Relative work increment = 1.267778e-006
 Iteration: 3  Relative work increment = 2.199579e-014
 Iteration: 4  Relative work increment = 1.964330e-022
 Number of iterations = 4

 Iteration: 1  Relative work increment = 2.842136e-002
 Iteration: 2  Relative work increment = 2.039340e+000
 Iteration: 3  Relative work increment = 1.940913e-002
 Iteration: 4  Relative work increment = 9.002608e-009
 Iteration: 5  Relative work increment = 2.126208e-016
 Iteration: 6  Relative work increment = 5.293086e-024
 Number of iterations = 6

 Iteration: 1  Relative work increment = 8.990665e-003
 Iteration: 2  Relative work increment = 1.025780e-008
 Iteration: 3  Relative work increment = 1.815512e-016
 Iteration: 4  Relative work increment = 3.317736e-024
 Number of iterations = 4

 Iteration: 1  Relative work increment = 1.148175e-006
 Iteration: 2  Relative work increment = 5.752347e-014
 Iteration: 3  Relative work increment = 1.511137e-021
 Number of iterations = 3

 Iteration: 1  Relative work increment = 8.285657e-004
 Iteration: 2  Relative work increment = 8.264656e-011
 Iteration: 3  Relative work increment = 1.829742e-018
 Number of iterations = 3

 Iteration: 1  Relative work increment = 4.849243e-009
 Iteration: 2  Relative work increment = 8.920281e-017
 Number of iterations = 2
Elapsed time is 21.422000 seconds.

Post-Processing

% extract displacements from Post
np = length(Post);
x = zeros(np,1);
y = zeros(np,1);
pltDOF = Model.DOF(1,6);
supDOF = [Model.DOF(1,1) Model.DOF(1,4)];
for k=1:np
   x(k) = Post(k).U(pltDOF);
   y(k) = -sum(Post(k).Pr(supDOF))/120;
end

% plot force displacement relation in new window
fig = Create_Window(0.70,0.70);
ph1 = plot(x,y,'s-');
set (ph1,'MarkerSize',4,'MarkerFaceColor','b');
grid('on');
xlabel ('Horizontal roof displacement');
ylabel ('Load factor {\lambda}');
axis([0 10 0 3]);
title ('Load factor-displacement');

% plot moment distribution at end of push-over
Create_Window(0.70,0.70);
Plot_Model(Model);
Plot_IPVarDistr (Model,ElemData,Post(end),'s(2)');
title('Moment distribution at end of analysis');

% plot curvature distribution at end of push-over
Create_Window(0.70,0.70);
Plot_Model(Model);
Plot_IPVarDistr (Model,ElemData,Post(end),'e(2)');
title('Curvature distribution at end of analysis');

% close output file
fclose(IOW);