Contents

TWO STORY STEEL FRAME, PUSH-OVER ANALYSIS WITH CONSTANT GRAVITY LOADS AND INCREMENTAL LATERAL LOADING: APPLICATION OF LOAD PATTERNS WITH DIFFERENT FORCE HISTORIES

%  =========================================================================================
%  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');

Element properties

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

Loading

Distributed element loads with load pattern number 1

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

Horizontal forces with laod pattern number 2

% specify nodal forces values in first two columns, pattern number in third
Pe(2,1,2) =  20;     % force at node 2 in dof 1 (force in global X) for load pattern 2
Pe(3,1,2) =  40;
Pe(5,1,2) =  20;
Pe(6,1,2) =  40;     % force at node 6 in dof 1 (force in global X) for load pattern 2
Loading = Create_Loading (Model,Pe);

Applied force time histories

Deltat = 0.10;
Tmax   = 2.00;

Loading.FrcHst(1).Time  = [0;Deltat;Tmax];
% force pattern 1 is applied over Deltat and then kept constant
Loading.FrcHst(1).Value = [0;1;1];
Loading.FrcHst(2).Time  = [0;Deltat;Tmax];
% force pattern 2 is linearly rising between Deltat and Tmax up to value of 2.8
Loading.FrcHst(2).Value = [0;0;2.8];

Incremental analysis by pseudo-time incrementation

% initialize State
State = Initialize_State(Model,ElemData);
% initialize default SolStrat parameters
SolStrat = Initialize_SolStrat;
% specify pseudo-time step increment (does not have to be the same as Deltat, smaller value
% results in more steps to reach end of analysis)
SolStrat.IncrStrat.Deltat = 0.10;
% initialize analysis parameters
[State SolStrat] = Initialize(Model,ElemData,Loading,State,SolStrat);
% determine resisting force vector
State = Structure ('forc',Model,ElemData,State);
% set up plot counter
pc = 1;
% store post-processing information for initial step
Post(pc) = Structure ('post',Model,ElemData,State);

tic;

Load incrementation until maximum specified time Tmax (pseudo-time stepping)

while (State.Time < Tmax-10^3*eps)
   [State SolStrat] = Increment(Model,ElemData,Loading,State,SolStrat);
   [State SolStrat] = Iterate  (Model,ElemData,Loading,State,SolStrat);
   if (SolStrat.ConvFlag)
      State = Update_State(Model, ElemData, State);
   else
      break
   end
   pc = pc+1;
   Post(pc) = Structure ('post',Model,ElemData,State);
end
toc;
 Number of iterations = 0

 Iteration: 1  Relative work increment = 2.224714e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.186455e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.232049e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.330406e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.335596e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.369158e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.600986e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 4.074318e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.665672e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.378075e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 2.775602e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 4.058246e-029
 Number of iterations = 1

 Iteration: 1  Relative work increment = 3.964693e-002
 Iteration: 2  Relative work increment = 1.163655e-029
 Number of iterations = 2

 Iteration: 1  Relative work increment = 3.214826e-028
 Number of iterations = 1

 Iteration: 1  Relative work increment = 1.574478e-002
 Iteration: 2  Relative work increment = 4.519833e-030
 Number of iterations = 2

 Iteration: 1  Relative work increment = 1.483136e-028
 Number of iterations = 1

 Iteration: 1  Relative work increment = 1.429663e-028
 Number of iterations = 1

 Iteration: 1  Relative work increment = 1.510594e-028
 Number of iterations = 1

 Iteration: 1  Relative work increment = 6.109885e-001
 Iteration: 2  Relative work increment = 4.286578e-001
 Iteration: 3  Relative work increment = 2.106121e-027
 Number of iterations = 3
Elapsed time is 1.250000 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);
title ('Load-displacement');
ph1 = plot(x,y,'s-');
set (ph1,'MarkerSize',4,'MarkerFaceColor','b');
grid('on');
xlabel ('Horizontal roof displacement');
ylabel ('Load factor {\lambda}');

% plot moment distribution at end of push-over
Create_Window(0.70,0.70);
title('Moment distribution and plastic hinge locations at end of push-over');
Plot_Model(Model);
Plot_ForcDistr (Model,ElemData,Post(end),'Mz');
% show plastic hinge locations
Plot_PlasticHingeswPost(Model,Post(end));

% plot deformed shape of structure and plastic hinge locations
Create_Window(0.70,0.70);
Plot_Model(Model);
Structure('defo',Model,ElemData,State);
Plot_PlasticHingeswPost(Model,Post(end),State.U);

% close output file
fclose(IOW);