% ========================================================================================= % 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 % =========================================================================================
% all units in kip and inches
CleanStart
IOW = Create_File (mfilename);
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');
DistrInelElemData % print element properties (optional) Structure ('data',Model,ElemData);
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);
for el=1:4 ElemData{el}.Geom = 'PDelta'; end
% 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
% 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);
% (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.
% 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);