Contents
TWO STORY STEEL FRAME, PUSH-OVER ANALYSIS WITH CONSTANT GRAVITY LOADS AND LATERAL FORCES UNDER LOAD CONTROL for NONLINEAR
GEOMETRY
Initialization: clear memory and define global variables
CleanStart
Create output file
IOW = Create_File (mfilename);
Create Model
Model_TwoStoryFrm
Print_Model (Model,'Push-over analysis of two story steel frame');
Element properties
SimpleNLElemData
Structure ('data',Model,ElemData);
1. Loading (distributed loads and vertical forces on columns)
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)
State = Initialize_State(Model,ElemData);
SolStrat = Initialize_SolStrat;
SolStrat.IncrStrat.Dlam0 = 1;
[State SolStrat] = Initialize(Model,ElemData,GravLoading,State,SolStrat);
[State SolStrat] = Increment(Model,ElemData,GravLoading,State,SolStrat);
[State SolStrat] = Iterate (Model,ElemData,GravLoading,State,SolStrat);
State = Update_State(Model,ElemData,State);
State = Structure ('forc',Model,ElemData,State);
k = 1;
Post(k) = Structure ('post',Model,ElemData,State);
Iteration: 1 Relative work increment = 5.832748e-009
Iteration: 2 Relative work increment = 6.377350e-033
Number of iterations = 2
2. Loading in sequence: horizontal forces
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 switched on)
SolStrat.IncrStrat.Dlam0 = 0.40;
SolStrat.IncrStrat.LoadCtrl = 'yes';
SolStrat.IterStrat.LoadCtrl = 'yes';
nostep = 20;
[State SolStrat] = Initialize(Model,ElemData,LatLoading,State,SolStrat);
tic;
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.196065e-008
Iteration: 2 Relative work increment = 2.241850e-018
Number of iterations = 2
Iteration: 1 Relative work increment = 4.691924e-008
Iteration: 2 Relative work increment = 8.838178e-018
Number of iterations = 2
Iteration: 1 Relative work increment = 1.051838e-007
Iteration: 2 Relative work increment = 1.993086e-017
Number of iterations = 2
Iteration: 1 Relative work increment = 1.867544e-007
Iteration: 2 Relative work increment = 3.567576e-017
Number of iterations = 2
Iteration: 1 Relative work increment = 6.892077e-002
Iteration: 2 Relative work increment = 2.452292e-008
Iteration: 3 Relative work increment = 4.456754e-018
Number of iterations = 3
Iteration: 1 Relative work increment = 3.250944e-002
Iteration: 2 Relative work increment = 1.372842e-008
Iteration: 3 Relative work increment = 2.034212e-017
Number of iterations = 3
Iteration: 1 Relative work increment = 1.394003e-007
Iteration: 2 Relative work increment = 5.944331e-017
Number of iterations = 2
Iteration: 1 Relative work increment = 1.810720e-007
Iteration: 2 Relative work increment = 9.915722e-017
Number of iterations = 2
Iteration: 1 Relative work increment = 6.315634e-002
Iteration: 2 Relative work increment = 5.545414e-009
Iteration: 3 Relative work increment = 8.214241e-018
Number of iterations = 3
Iteration: 1 Relative work increment = 3.398183e-001
Iteration: 2 Relative work increment = 1.983728e-007
Iteration: 3 Relative work increment = 2.563714e-016
Iteration: 4 Relative work increment = 6.851871e-025
Number of iterations = 4
Iteration: 1 Relative work increment = 3.538129e-006
Iteration: 2 Relative work increment = 9.864370e-015
Iteration: 3 Relative work increment = 2.756329e-023
Number of iterations = 3
Iteration: 1 Relative work increment = 3.977749e-006
Iteration: 2 Relative work increment = 1.151785e-014
Iteration: 3 Relative work increment = 3.327520e-023
Number of iterations = 3
Iteration: 1 Relative work increment = 2.474425e+000
Iteration: 2 Relative work increment = 2.541561e-006
Iteration: 3 Relative work increment = 6.809939e-027
Number of iterations = 3
Iteration: 1 Relative work increment = 3.477990e-014
Iteration: 2 Relative work increment = 1.800988e-029
Number of iterations = 2
Iteration: 1 Relative work increment = 4.041558e-014
Iteration: 2 Relative work increment = 5.948243e-030
Number of iterations = 2
Iteration: 1 Relative work increment = 4.648730e-014
Iteration: 2 Relative work increment = 2.027529e-029
Number of iterations = 2
Iteration: 1 Relative work increment = 5.299504e-014
Iteration: 2 Relative work increment = 6.524311e-030
Number of iterations = 2
Iteration: 1 Relative work increment = 5.993882e-014
Iteration: 2 Relative work increment = 3.478578e-030
Number of iterations = 2
Iteration: 1 Relative work increment = 6.731864e-014
Iteration: 2 Relative work increment = 4.620881e-029
Number of iterations = 2
Iteration: 1 Relative work increment = 7.513448e-014
Iteration: 2 Relative work increment = 2.341973e-029
Number of iterations = 2
Elapsed time is 1.360000 seconds.
Post-processing
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
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');
Create_Window(0.70,0.70);
Plot_Model(Model);
Plot_ForcDistr (Model,ElemData,Post(end),'Mz');
title('Moment distribution and plastic hinge locations near incipient collapse');
Plot_PlasticHingeswPost(Model,Post(end));
Create_Window(0.70,0.70);
Plot_Model(Model);
Structure('defo',Model,ElemData,State);
Plot_PlasticHingeswPost(Model,Post(end),State.U);
Resize_Plot;
fclose(IOW);