Dear All,
I have modeled a 2D SCBF based on Vesna Terzic model. When running the 1 story frame it runs correctly, but when I modify it to a 3-story frame, then the pushover analysis does not converge after lateral displacement of about 2cm.
If I change the brace material to elastic, there is no convergence problem but as soon as I define nonlinear material (steel01, steel02 or fatigue) for the brace, there is a convergence issue.
Can you please guide me on how to solve this issue?
Thank you in advance,
# Units: kN, m, s
wipe all; # clear memory of past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm = #dimension, ndf = #dofs
source DisplayModel2D.tcl;
source DisplayPlane.tcl;
set dataDir 3St_SCBF;
file mkdir $dataDir;
file mkdir $dataDir/modes;
# define structure-geometry parameters
set pi [expr 2.0*asin(1.0)]; # Definition of pi
set numMode 5;
set g 9.81;
set Lbeam 9.15;
set Lbeam1 2.0;
set Lbeam2 3.575;
set Negligible 1e-8; # a very small number to avoid problems with zero
# calculate locations of beam/column joints:
# NODAL COORDINATES
set floor1 0.00;
set floor2 4.00;
set floor3 8.00;
set floor4 12.0;
set pier1 0.00;
set pier2 9.15;
set pier3 4.575;
set pier7 14.0;
#
# CALCULATE NODAL MASSES
set mass4 478.0; #typical story mass
set massr 517.0; #roof mass
#
# Define Section Properties and Elements
###########################################
# define column section
set A_W14x257 0.04880;
set A_W14x370 0.070322;
set I_W14x257 0.001415;
set I_W14x370 0.002264;
set Z_W14x257 0.007981;
set Z_W14x370 0.01206;
set Avy_W14x257 0.0124;
set Avy_W14x370 0.0191;
set d_W14x257 0.4161;
set d_W14x370 0.455;
set bf_W14x257 0.4063;
set bf_W14x370 0.418;
set tf_W14x257 0.048;
set tf_W14x370 0.068;
set tw_W14x257 0.0298;
set tw_W14x370 0.042;
set hw_W14x257 [expr $d_W14x257-2*$tf_W14x257];
set hw_W14x370 [expr $d_W14x370-2*$tf_W14x370];
#
# define beam and link sections
set A_W27x217 0.041161;
set A_W27x281 0.05329 ;
#
set I_W27x217 0.003692;
set I_W27x281 0.004953;
#
set Z_W27x217 0.011602;
set Z_W27x281 0.015289;
#
set Avy_W27x217 0.015224;
set Avy_W27x281 0.02003 ;
#
set d_W27x217 0.722122;
set d_W27x281 0.743966;
set bf_W27x217 0.358521;
set bf_W27x281 0.36449 ;
set tf_W27x217 0.0381 ;
set tf_W27x281 0.049022;
set tw_W27x217 0.021082;
set tw_W27x281 0.026924;
set hw_W27x217 [expr $d_W27x217-2*$tf_W27x217];
set hw_W27x281 [expr $d_W27x281-2*$tf_W27x281];
#
set A_BOX250 0.013216;
set A_BOX200 0.0076 ;
set I_BOX250 0.000123;
set I_BOX200 0.000046;
set Z_BOX250 0.001171;
set Z_BOX200 0.000542;
set Avy_BOX250 0.007;
set Avy_BOX200 0.004;
set d_BOX250 0.25;
set d_BOX200 0.2 ;
set bf_BOX250 0.25;
set bf_BOX200 0.2 ;
set tf_BOX250 0.014;
set tf_BOX200 0.01 ;
set tw_BOX250 0.014;
set tw_BOX200 0.01 ;
set hw_BOX250 [expr $d_BOX250-2*$tf_BOX250];
set hw_BOX200 [expr $d_BOX200-2*$tf_BOX200];
set bw_BOX250 [expr $bf_BOX250-2*$tw_BOX250];
set bw_BOX200 [expr $bf_BOX200-2*$tw_BOX200];
#
set Lbr1 [expr ($pier3**2+($floor2-$floor1)**2)**0.5];
set Lbr2 [expr ($pier3**2+($floor3-$floor2)**2)**0.5];
set Lbr3 [expr ($pier3**2+($floor4-$floor3)**2)**0.5];
set alpha1 [expr $pier3/$Lbr1];
set alpha2 [expr $pier3/$Lbr2];
set alpha3 [expr $pier3/$Lbr3];
#
# end offsets - assumed values not exact
set pzver11 [expr $d_W27x281/2];
set pzlat11 [expr $pzver11*$pier3/($floor2-$floor1)];
set pzver12 [expr $d_W27x281/2];
set pzlat12 [expr $pzver12*$pier3/($floor3-$floor2)];
set pzver13 [expr $d_W27x281/2];
set pzlat13 [expr $pzver13*$pier3/($floor4-$floor3)];
set pzver14 [expr $d_W27x217/2];
set pzlat14 [expr $d_W14x257/2];
set guver32 [expr $d_W27x281/2];
set gulat32 [expr $guver32*$pier3/($floor2-$floor1)];
set guver33 [expr $d_W27x281/2];
set gulat33 [expr $guver33*$pier3/($floor3-$floor2)];
set guver34 [expr $d_W27x217/2];
set gulat34 [expr $guver34*$pier3/($floor4-$floor3)];
#
#
set Leff1 [expr $Lbr1-$pzlat11*$Lbr1/$pier3-$gulat32*$Lbr1/$pier3]; #effective brace lenght
set Leff2 [expr $Lbr2-$pzlat12*$Lbr2/$pier3-$gulat33*$Lbr1/$pier3]; #effective brace lenght
set Leff3 [expr $Lbr3-$pzlat13*$Lbr3/$pier3-$gulat34*$Lbr1/$pier3]; #effective brace lenght
set noEle 20; # number of elements per brace
set p_ratio 500.; #coresponds to 0.05% of the effective lenght
set p1 [expr 1./$p_ratio*$Leff1]; #imperfection of the brace
set p2 [expr 1./$p_ratio*$Leff2];
set p3 [expr 1./$p_ratio*$Leff3];
#
# Define Nodes
node 11 $pier1 $floor1;
node 21 $pier2 $floor1;
node 12 $pier1 $floor2 -mass [expr $mass4/3] $Negligible $Negligible;
node 22 $pier2 $floor2 -mass [expr $mass4/3] $Negligible $Negligible;
node 32 $pier3 $floor2 -mass [expr $mass4/3] $Negligible $Negligible;
node 13 $pier1 $floor3 -mass [expr $mass4/3] $Negligible $Negligible;
node 23 $pier2 $floor3 -mass [expr $mass4/3] $Negligible $Negligible;
node 33 $pier3 $floor3 -mass [expr $mass4/3] $Negligible $Negligible;
node 14 $pier1 $floor4 -mass [expr $massr/3] $Negligible $Negligible;
node 24 $pier2 $floor4 -mass [expr $massr/3] $Negligible $Negligible;
node 34 $pier3 $floor4 -mass [expr $massr/3] $Negligible $Negligible;
#
# leaning column nodes
node 71 $pier7 $floor1;
node 72 $pier7 $floor2;
node 73 $pier7 $floor3;
node 74 $pier7 $floor4;
#
# column additional nodes
node 125 $pier1 [expr $floor2-$pzver12];
node 225 $pier2 [expr $floor2-$pzver12];
node 135 $pier1 [expr $floor3-$pzver13];
node 235 $pier2 [expr $floor3-$pzver13];
node 145 $pier1 [expr $floor4-$pzver14];
node 245 $pier2 [expr $floor4-$pzver14];
#
node 117 $pier1 [expr $floor1+$pzver11] ;
node 217 $pier2 [expr $floor1+$pzver11] ;
node 127 $pier1 [expr $floor2+$pzver12] ;
node 227 $pier2 [expr $floor2+$pzver12] ;
node 137 $pier1 [expr $floor3+$pzver13] ;
node 237 $pier2 [expr $floor3+$pzver13] ;
#
#
node 725 $pier7 $floor2;
node 735 $pier7 $floor3;
node 745 $pier7 $floor4;
node 727 $pier7 $floor2;
node 737 $pier7 $floor3;
#
# beam additional nodes
node 121 [expr $pier1+$pzlat12] $floor2;
node 131 [expr $pier1+$pzlat13] $floor3;
node 141 [expr $pier1+$pzlat14] $floor4;
node 122 [expr $pier1+$pzlat12] $floor2;
node 132 [expr $pier1+$pzlat13] $floor3;
node 142 [expr $pier1+$pzlat14] $floor4;
#
node 223 [expr $pier2-$pzlat12] $floor2;
node 233 [expr $pier2-$pzlat13] $floor3;
node 243 [expr $pier2-$pzlat14] $floor4;
node 224 [expr $pier2-$pzlat12] $floor2;
node 234 [expr $pier2-$pzlat13] $floor3;
node 244 [expr $pier2-$pzlat14] $floor4;
#
node 321 [expr $pier3+$gulat32] $floor2;
node 331 [expr $pier3+$gulat33] $floor3;
node 341 [expr $pier3+$gulat34] $floor4;
node 323 [expr $pier3-$gulat32] $floor2;
node 333 [expr $pier3-$gulat33] $floor3;
node 343 [expr $pier3-$gulat34] $floor4;
#
# Brace NODES
node 118 [expr $pier1+$pzlat11] [expr $floor1+$pzver11];
node 219 [expr $pier2-$pzlat11] [expr $floor1+$pzver11];
node 128 [expr $pier1+$pzlat12] [expr $floor2+$pzver12];
node 229 [expr $pier2-$pzlat12] [expr $floor2+$pzver12];
node 138 [expr $pier1+$pzlat13] [expr $floor3+$pzver13];
node 239 [expr $pier2-$pzlat13] [expr $floor3+$pzver13];
#
node 328 [expr $pier3+$gulat32] [expr $floor2-$guver32];
node 329 [expr $pier3-$gulat32] [expr $floor2-$guver32];
node 338 [expr $pier3+$gulat33] [expr $floor3-$guver33];
node 339 [expr $pier3-$gulat33] [expr $floor3-$guver33];
node 348 [expr $pier3+$gulat34] [expr $floor4-$guver34];
node 349 [expr $pier3-$gulat34] [expr $floor4-$guver34];
#
#
# define extra nodes along the braces:
#----------------------------------------------
# nodeID convention: "5abcd" where and a = left or right
# "a": story; "b" convention: 1 = left; 2 = right;
# cd = node numbering for the brace (can be between 1 and 99)
set X1i [expr $pier1 +$pzlat11]; # x coordinate of node 51101
set Y1i [expr $floor1+$pzver11]; # y coordinate of node 51101
set X2i [expr $pier1 +$pzlat12]; # x coordinate of node 51101
set Y2i [expr $floor2+$pzver12]; # y coordinate of node 51101
set X3i [expr $pier1 +$pzlat13]; # x coordinate of node 51101
set Y3i [expr $floor3+$pzver13]; # y coordinate of node 51101
set X1j [expr $pier2 -$pzlat11]; # x coordinate of node 51201
set Y1j [expr $floor1+$pzver11]; # y coordinate of node 51201
set X2j [expr $pier2 -$pzlat12];
set Y2j [expr $floor2+$pzver12];
set X3j [expr $pier2 -$pzlat13];
set Y3j [expr $floor3+$pzver13];
set eleL1 [expr $Leff1/$noEle];
set eleL2 [expr $Leff2/$noEle];
set eleL3 [expr $Leff3/$noEle];
for { set i 1 } { $i <= [expr $noEle+1] } { incr i} {
#local coordinates
set x1m [expr $eleL1*($i-1)];
set y1m [expr 4.*$p1/$Leff1*$x1m*(1.-$x1m/$Leff1)];
set x2m [expr $eleL2*($i-1)];
set y2m [expr 4.*$p2/$Leff2*$x2m*(1.-$x2m/$Leff2)];
set x3m [expr $eleL3*($i-1)];
set y3m [expr 4.*$p3/$Leff3*$x3m*(1.-$x3m/$Leff3)];
#global coordinates
set X1m [expr $X1i+$pier3/$Lbr1*$x1m-($floor2-$floor1)/$Lbr1*$y1m];
set Y1m [expr $Y1i+($floor2-$floor1)/$Lbr1*$x1m+$pier3/$Lbr1*$y1m];
set X2m [expr $X2i+$pier3/$Lbr2*$x2m-($floor3-$floor2)/$Lbr2*$y2m];
set Y2m [expr $Y2i+($floor3-$floor2)/$Lbr2*$x2m+$pier3/$Lbr2*$y2m];
set X3m [expr $X3i+$pier3/$Lbr3*$x3m-($floor4-$floor3)/$Lbr3*$y3m];
set Y3m [expr $Y3i+($floor4-$floor3)/$Lbr3*$x3m+$pier3/$Lbr3*$y3m];
#
set X1n [expr $X1j-$pier3/$Lbr1*$x1m-($floor2-$floor1)/$Lbr1*$y1m];
set Y1n [expr $Y1j+($floor2-$floor1)/$Lbr1*$x1m-$pier3/$Lbr1*$y1m];
set X2n [expr $X2j-$pier3/$Lbr2*$x2m-($floor3-$floor2)/$Lbr2*$y2m];
set Y2n [expr $Y2j+($floor3-$floor2)/$Lbr2*$x2m-$pier3/$Lbr2*$y2m];
set X3n [expr $X3j-$pier3/$Lbr3*$x3m-($floor4-$floor3)/$Lbr3*$y3m];
set Y3n [expr $Y3j+($floor4-$floor3)/$Lbr3*$x3m-$pier3/$Lbr3*$y3m];
#
#define nodes
node [expr 51100+$i] $X1m $Y1m
node [expr 52100+$i] $X2m $Y2m
node [expr 53100+$i] $X3m $Y3m
#
node [expr 51200+$i] $X1n $Y1n
node [expr 52200+$i] $X2n $Y2n
node [expr 53200+$i] $X3n $Y3n
}
#
#
# BOUNDARY CONDITION
fix 11 1 1 1;
fix 21 1 1 1;
fix 71 1 1 0;
## pined beam-to-column connection
equalDOF 121 122 1 2;
equalDOF 131 132 1 2;
equalDOF 141 142 1 2;
equalDOF 223 224 1 2;
equalDOF 233 234 1 2;
equalDOF 243 244 1 2;
# pined brace connection
equalDOF 118 51101 1 2;
equalDOF 128 52101 1 2;
equalDOF 138 53101 1 2;
equalDOF 219 51201 1 2;
equalDOF 229 52201 1 2;
equalDOF 239 53201 1 2;
#
equalDOF 329 [expr 51101+$noEle] 1 2;
equalDOF 328 [expr 51201+$noEle] 1 2;
equalDOF 339 [expr 52101+$noEle] 1 2;
equalDOF 338 [expr 52201+$noEle] 1 2;
equalDOF 349 [expr 53101+$noEle] 1 2;
equalDOF 348 [expr 53201+$noEle] 1 2;
#
# Leaning Column Constraints
equalDOF 72 725 1 2;
equalDOF 72 727 1 2;
equalDOF 73 735 1 2;
equalDOF 73 737 1 2;
equalDOF 74 745 1 2;
#
# Define Section Properties and Elements
###########################################
# define material properties
set Es 200000000.0; # steel Young's modulus
set Nus 0.3;
set Gs [expr $Es/2/(1+$Nus)/100];
set Ry 1.20;
set Fyb [expr 250000*$Ry];
set Fub 400000.0;
set Fyc [expr 345000*$Ry];
set MyMp 1.00;
set eyb [expr $Fyb/$Es];
set E0 0.095
set m -0.5
# define material properties for axial force-bending moment interaction;
uniaxialMaterial Elastic 1 $Es;
uniaxialMaterial Steel02 2 $Fyc $Es 0.02 18.5 0.925 0.15; # columns;
uniaxialMaterial Steel02 3 $Fyb $Es 0.02 18.5 0.925 0.15; # beams;
uniaxialMaterial Fatigue 4 3 -E0 $E0 -m $m -min -1.0 -max 0.04
#
##
set S_W14x257 1001;
set S_W14x370 1002;
set S_W27x281 1003;
set S_W27x217 1004;
set S_BOX250 1005;
set S_BOX200 1006;
#
set bfSubdiv 16;
set tfSubdiv 4;
set hwSubdiv 16;
set twSubdiv 4;
#
# define fiber section
section Fiber $S_W14x257 -GJ 0.0 {;
patch quad 2 $bfSubdiv $tfSubdiv [expr -$d_W14x257/2] [expr $bf_W14x257/2] [expr -$d_W14x257/2] [expr -$bf_W14x257/2] [expr -$hw_W14x257/2] [expr -$bf_W14x257/2] [expr -$hw_W14x257/2] [expr $bf_W14x257/2];
patch quad 2 $twSubdiv $hwSubdiv [expr -$hw_W14x257/2] [expr $tw_W14x257/2] [expr -$hw_W14x257/2] [expr -$tw_W14x257/2] [expr $hw_W14x257/2] [expr -$tw_W14x257/2] [expr $hw_W14x257/2] [expr $tw_W14x257/2];
patch quad 2 $bfSubdiv $tfSubdiv [expr $hw_W14x257/2] [expr $bf_W14x257/2] [expr $hw_W14x257/2] [expr -$bf_W14x257/2] [expr $d_W14x257/2] [expr -$bf_W14x257/2] [expr $d_W14x257/2] [expr $bf_W14x257/2];
};
section Fiber $S_W14x370 -GJ 0.0 {;
patch quad 2 $bfSubdiv $tfSubdiv [expr -$d_W14x370/2] [expr $bf_W14x370/2] [expr -$d_W14x370/2] [expr -$bf_W14x370/2] [expr -$hw_W14x370/2] [expr -$bf_W14x370/2] [expr -$hw_W14x370/2] [expr $bf_W14x370/2];
patch quad 2 $twSubdiv $hwSubdiv [expr -$hw_W14x370/2] [expr $tw_W14x370/2] [expr -$hw_W14x370/2] [expr -$tw_W14x370/2] [expr $hw_W14x370/2] [expr -$tw_W14x370/2] [expr $hw_W14x370/2] [expr $tw_W14x370/2];
patch quad 2 $bfSubdiv $tfSubdiv [expr $hw_W14x370/2] [expr $bf_W14x370/2] [expr $hw_W14x370/2] [expr -$bf_W14x370/2] [expr $d_W14x370/2] [expr -$bf_W14x370/2] [expr $d_W14x370/2] [expr $bf_W14x370/2];
};
#
section Fiber $S_W27x281 -GJ 0.0 {;
patch quad 3 $bfSubdiv $tfSubdiv [expr -$d_W27x281/2] [expr $bf_W27x281/2] [expr -$d_W27x281/2] [expr -$bf_W27x281/2] [expr -$hw_W27x281/2] [expr -$bf_W27x281/2] [expr -$hw_W27x281/2] [expr $bf_W27x281/2];
patch quad 3 $twSubdiv $hwSubdiv [expr -$hw_W27x281/2] [expr $tw_W27x281/2] [expr -$hw_W27x281/2] [expr -$tw_W27x281/2] [expr $hw_W27x281/2] [expr -$tw_W27x281/2] [expr $hw_W27x281/2] [expr $tw_W27x281/2];
patch quad 3 $bfSubdiv $tfSubdiv [expr $hw_W27x281/2] [expr $bf_W27x281/2] [expr $hw_W27x281/2] [expr -$bf_W27x281/2] [expr $d_W27x281/2] [expr -$bf_W27x281/2] [expr $d_W27x281/2] [expr $bf_W27x281/2];
};
section Fiber $S_W27x217 -GJ 0.0 {;
patch quad 3 $bfSubdiv $tfSubdiv [expr -$d_W27x217/2] [expr $bf_W27x217/2] [expr -$d_W27x217/2] [expr -$bf_W27x217/2] [expr -$hw_W27x217/2] [expr -$bf_W27x217/2] [expr -$hw_W27x217/2] [expr $bf_W27x217/2];
patch quad 3 $twSubdiv $hwSubdiv [expr -$hw_W27x217/2] [expr $tw_W27x217/2] [expr -$hw_W27x217/2] [expr -$tw_W27x217/2] [expr $hw_W27x217/2] [expr -$tw_W27x217/2] [expr $hw_W27x217/2] [expr $tw_W27x217/2];
patch quad 3 $bfSubdiv $tfSubdiv [expr $hw_W27x217/2] [expr $bf_W27x217/2] [expr $hw_W27x217/2] [expr -$bf_W27x217/2] [expr $d_W27x217/2] [expr -$bf_W27x217/2] [expr $d_W27x217/2] [expr $bf_W27x217/2];
};
#
section Fiber $S_BOX250 -GJ 0.0 {;
patch quad 3 12 4 [expr -$d_BOX250/2] [expr $bf_BOX250/2] [expr -$d_BOX250/2] [expr -$bf_BOX250/2] [expr -$hw_BOX250/2] [expr -$bf_BOX250/2] [expr -$hw_BOX250/2] [expr $bf_BOX250/2];
patch quad 3 4 12 [expr -$hw_BOX250/2] [expr -$bw_BOX250/2] [expr -$hw_BOX250/2] [expr -$bf_BOX250/2] [expr $hw_BOX250/2] [expr -$bf_BOX250/2] [expr $hw_BOX250/2] [expr -$bw_BOX250/2];
patch quad 3 4 12 [expr -$hw_BOX250/2] [expr $bf_BOX250/2] [expr -$hw_BOX250/2] [expr $bw_BOX250/2] [expr $hw_BOX250/2] [expr $bw_BOX250/2] [expr $hw_BOX250/2] [expr $bf_BOX250/2];
patch quad 3 12 4 [expr $hw_BOX250/2] [expr $bf_BOX250/2] [expr $hw_BOX250/2] [expr -$bf_BOX250/2] [expr $d_BOX250/2] [expr -$bf_BOX250/2] [expr $d_BOX250/2] [expr $bf_BOX250/2];
};
section Fiber $S_BOX200 -GJ 0.0 {;
patch quad 3 12 4 [expr -$d_BOX200/2] [expr $bf_BOX200/2] [expr -$d_BOX200/2] [expr -$bf_BOX200/2] [expr -$hw_BOX200/2] [expr -$bf_BOX200/2] [expr -$hw_BOX200/2] [expr $bf_BOX200/2];
patch quad 3 4 12 [expr -$hw_BOX200/2] [expr -$bw_BOX200/2] [expr -$hw_BOX200/2] [expr -$bf_BOX200/2] [expr $hw_BOX200/2] [expr -$bf_BOX200/2] [expr $hw_BOX200/2] [expr -$bw_BOX200/2];
patch quad 3 4 12 [expr -$hw_BOX200/2] [expr $bf_BOX200/2] [expr -$hw_BOX200/2] [expr $bw_BOX200/2] [expr $hw_BOX200/2] [expr $bw_BOX200/2] [expr $hw_BOX200/2] [expr $bf_BOX200/2];
patch quad 3 12 4 [expr $hw_BOX200/2] [expr $bf_BOX200/2] [expr $hw_BOX200/2] [expr -$bf_BOX200/2] [expr $d_BOX200/2] [expr -$bf_BOX200/2] [expr $d_BOX200/2] [expr $bf_BOX200/2];
};
#
#
# Define Elements
set PDeltaTransf 1;
set CorotTransf 2;
geomTransf PDelta $PDeltaTransf; # PDelta transformation
geomTransf Corotational $CorotTransf;
#
set tol 1.e-8
set maxIter 10
# define columns:
#----------------------------------
element forceBeamColumn 111 117 125 4 $S_W14x370 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 112 127 135 4 $S_W14x257 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 113 137 145 4 $S_W14x257 $PDeltaTransf -iter $maxIter $tol;
#
element forceBeamColumn 121 217 225 4 $S_W14x370 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 122 227 235 4 $S_W14x257 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 123 237 245 4 $S_W14x257 $PDeltaTransf -iter $maxIter $tol;
#
# define beams:
#----------------------------------
element forceBeamColumn 221 122 323 7 $S_W27x281 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 222 321 224 7 $S_W27x281 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 231 132 333 7 $S_W27x281 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 232 331 234 7 $S_W27x281 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 241 142 343 7 $S_W27x217 $PDeltaTransf -iter $maxIter $tol;
element forceBeamColumn 242 341 244 7 $S_W27x217 $PDeltaTransf -iter $maxIter $tol;
#
# define braces:
#----------------
for { set i 1 } { $i <= [expr $noEle] } { incr i} {
element forceBeamColumn [expr 51100+$i] [expr 51100+$i] [expr 51100+$i+1] 3 $S_BOX250 $CorotTransf -iter $maxIter $tol
element forceBeamColumn [expr 52100+$i] [expr 52100+$i] [expr 52100+$i+1] 3 $S_BOX250 $CorotTransf -iter $maxIter $tol
element forceBeamColumn [expr 53100+$i] [expr 53100+$i] [expr 53100+$i+1] 3 $S_BOX200 $CorotTransf -iter $maxIter $tol
element forceBeamColumn [expr 51200+$i] [expr 51200+$i] [expr 51200+$i+1] 3 $S_BOX250 $CorotTransf -iter $maxIter $tol
element forceBeamColumn [expr 52200+$i] [expr 52200+$i] [expr 52200+$i+1] 3 $S_BOX250 $CorotTransf -iter $maxIter $tol
element forceBeamColumn [expr 53200+$i] [expr 53200+$i] [expr 53200+$i+1] 3 $S_BOX200 $CorotTransf -iter $maxIter $tol
}
#
# define gusset plates:
#----------------------
# define material for gusset plates
# GP_Model == RH
# rotational hinge (dir 6)
set matID_RHb 11
set matID_RHt 12
set My_b 6.0
set My_t 6.0
set Krot_b 60.0
set Krot_t 60.0
set b 0.003
uniaxialMaterial Steel02 $matID_RHb $My_b $Krot_b $b 18.5 0.925 0.15 0.0005 0.01 0.0005 0.01
uniaxialMaterial Steel02 $matID_RHt $My_t $Krot_t $b 18.5 0.925 0.15 0.0005 0.01 0.0005 0.01
#
# command arguemnts: $eleTag $iNode $jNode -mat $matTag1 $matTag2 ... -dir $dir1 $dir2
# left brace
element zeroLength 411001 118 51101 -mat $matID_RHb -dir 6
element zeroLength 412001 [expr 51101+$noEle] 329 -mat $matID_RHt -dir 6
element zeroLength 421001 128 52101 -mat $matID_RHb -dir 6
element zeroLength 422001 [expr 52101+$noEle] 339 -mat $matID_RHt -dir 6
element zeroLength 431001 138 53101 -mat $matID_RHb -dir 6
element zeroLength 432001 [expr 53101+$noEle] 349 -mat $matID_RHt -dir 6
# right brace
element zeroLength 411002 219 51201 -mat $matID_RHb -dir 6
element zeroLength 412002 [expr 51201+$noEle] 328 -mat $matID_RHt -dir 6
element zeroLength 421002 229 52201 -mat $matID_RHb -dir 6
element zeroLength 422002 [expr 52201+$noEle] 338 -mat $matID_RHt -dir 6
element zeroLength 431002 239 53201 -mat $matID_RHb -dir 6
element zeroLength 432002 [expr 53201+$noEle] 348 -mat $matID_RHt -dir 6
#
# define leaning columns and beams:
#-----------------------------------
set Arigid 2.0;
set Irigid 0.1;
uniaxialMaterial Elastic 600 $Es;
element truss 662 22 72 $Arigid 600;
element truss 663 23 73 $Arigid 600;
element truss 664 24 74 $Arigid 600;
element elasticBeamColumn 171 71 725 $Arigid $Es $Irigid $PDeltaTransf;
element elasticBeamColumn 172 727 735 $Arigid $Es $Irigid $PDeltaTransf;
element elasticBeamColumn 173 737 745 $Arigid $Es $Irigid $PDeltaTransf;
#
# define end offsets
set beta 10;
# beams end offset
element elasticBeamColumn 912 12 121 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 913 13 131 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 914 14 141 [expr $A_W27x217*$beta] $Es [expr $I_W27x217*$beta] $PDeltaTransf;
element elasticBeamColumn 922 22 223 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 923 23 233 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 924 24 243 [expr $A_W27x217*$beta] $Es [expr $I_W27x217*$beta] $PDeltaTransf;
#
element elasticBeamColumn 932 32 323 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 933 33 333 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 934 34 343 [expr $A_W27x217*$beta] $Es [expr $I_W27x217*$beta] $PDeltaTransf;
element elasticBeamColumn 942 32 321 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 943 33 331 [expr $A_W27x281*$beta] $Es [expr $I_W27x281*$beta] $PDeltaTransf;
element elasticBeamColumn 944 34 341 [expr $A_W27x217*$beta] $Es [expr $I_W27x217*$beta] $PDeltaTransf;
#
# columns end offset
element elasticBeamColumn 90111 11 117 [expr $A_W14x370*$beta] $Es [expr $I_W14x370*$beta] $PDeltaTransf;
element elasticBeamColumn 90121 12 127 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90131 13 137 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90211 21 217 [expr $A_W14x370*$beta] $Es [expr $I_W14x370*$beta] $PDeltaTransf;
element elasticBeamColumn 90221 22 227 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90231 23 237 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90122 12 125 [expr $A_W14x370*$beta] $Es [expr $I_W14x370*$beta] $PDeltaTransf;
element elasticBeamColumn 90132 13 135 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90142 14 145 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90222 22 225 [expr $A_W14x370*$beta] $Es [expr $I_W14x370*$beta] $PDeltaTransf;
element elasticBeamColumn 90232 23 235 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
element elasticBeamColumn 90242 24 245 [expr $A_W14x257*$beta] $Es [expr $I_W14x257*$beta] $PDeltaTransf;
#
# braces end offset
element elasticBeamColumn 90011 11 118 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90012 21 219 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90013 32 328 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90014 32 329 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90021 12 128 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90022 22 229 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90023 33 338 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90024 33 339 [expr $A_BOX250*$beta] $Es [expr $I_BOX250*$beta] $CorotTransf;
element elasticBeamColumn 90031 13 138 [expr $A_BOX200*$beta] $Es [expr $I_BOX200*$beta] $CorotTransf;
element elasticBeamColumn 90032 23 239 [expr $A_BOX200*$beta] $Es [expr $I_BOX200*$beta] $CorotTransf;
element elasticBeamColumn 90033 34 348 [expr $A_BOX200*$beta] $Es [expr $I_BOX200*$beta] $CorotTransf;
element elasticBeamColumn 90034 34 349 [expr $A_BOX200*$beta] $Es [expr $I_BOX200*$beta] $CorotTransf;
#
#
# ghost trusses to the braces (with very small stiffness) to diminish convergence problems
#------------------------------
# define material for ghost truss
set matID_GT 6
uniaxialMaterial Elastic $matID_GT [expr 0.001*$Es]
set Agt 0.0001; #truss area
# braces
element corotTruss 411 51101 [expr 51101+$noEle] $Agt $matID_GT
element corotTruss 421 52101 [expr 52101+$noEle] $Agt $matID_GT
element corotTruss 431 53101 [expr 53101+$noEle] $Agt $matID_GT
element corotTruss 412 51201 [expr 51201+$noEle] $Agt $matID_GT
element corotTruss 422 52201 [expr 52201+$noEle] $Agt $matID_GT
element corotTruss 432 53201 [expr 53201+$noEle] $Agt $matID_GT
##
#
# add rigid truss elemnts to assure that the beam nodes move horizontaly together
#--------------------------------------------------------------------------------
set ArigidT 3.0; # define area of truss section (make much larger than A of frame elements)
# command: element truss $eleID $iNode $jNode $A $materialID
element truss 90001 12 32 $ArigidT 600;
element truss 90002 32 22 $ArigidT 600;
element truss 90003 13 33 $ArigidT 600;
element truss 90004 33 23 $ArigidT 600;
element truss 90005 14 34 $ArigidT 600;
element truss 90006 34 24 $ArigidT 600;
#
#define P-Delta column springs
set Klean 1E-8;
uniaxialMaterial Elastic 10062 $Klean;
element zeroLength 4712 72 725 -mat 10062 -dir 6;
element zeroLength 4721 72 727 -mat 10062 -dir 6;
element zeroLength 4722 73 735 -mat 10062 -dir 6;
element zeroLength 4731 73 737 -mat 10062 -dir 6;
element zeroLength 4732 74 745 -mat 10062 -dir 6;
#
#
# display the model with the node numbers
DisplayModel2D NodeNumbers;
#
##
## R E C O R D E R
##
recorder Node -file $dataDir/node_disp.out -time -node 14 -dof 1 2 disp;
recorder Node -file $dataDir/Vbase.out -time -node 11 21 71 -dof 1 2 3 reaction;
#
# DEFINE GRAVITY LOADS "PATTERN 1: DEAD LOAD, PATTERN 2: LIVE LOAD"
#
# timeSeries Constant 1;
pattern Plain 1 Constant {;
load 72 0.0 -4780. 0.0;
load 73 0.0 -4780. 0.0;
load 74 0.0 -5175. 0.0;
}
#
# Analysis gravity load
#
system BandGeneral; #create the system of equations
# system BandSPD;
numberer RCM; #Create the DOF numberer, the reverse Cuthill-McKee algorithm
constraints Plain; #Create the constraint handler
test NormDispIncr 1.0e-6 10;
algorithm Newton; #Create the solution algorithm
set NstepGravity 10;
set DGravity [expr 1.0/$NstepGravity];
integrator LoadControl $DGravity; #Create the integration scheme, the load control scheme using steps of 1.0
analysis Static;
analyze $NstepGravity;
loadConst -time 0.0;
# #
puts "\nEnd of gravity analysis."
#
##
#############################################################################
## Eigenvalue Analysis
#############################################################################
set nEigenI 1; # mode i = 1
set nEigenJ 2; # mode j = 2
set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaI [lindex $lambdaN [expr 0]]; # eigenvalue mode i = 1
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j = 2
set w1 [expr sqrt($lambdaI)]; # w1 (1st mode circular frequency)
set w2 [expr sqrt($lambdaJ)]; # w2 (2nd mode circular frequency)
set T1 [expr 2.0*$pi/$w1]; # 1st mode period of the structure
set T2 [expr 2.0*$pi/$w2]; # 2nd mode period of the structure
puts "T1 = $T1 s"; # display the first mode period in the command window
puts "T2 = $T2 s"; # display the second mode period in the command window
#
#
##
# PUSHOVER ANALYSIS
#
pattern Plain 200 Linear {
load 12 0.3404 0.0 0.0;
load 22 0.3404 0.0 0.0;
load 13 0.6537 0.0 0.0;
load 23 0.6537 0.0 0.0;
load 14 1.0000 0.0 0.0;
load 24 1.0000 0.0 0.0;
}
set ViewScale 10;
DisplayModel2D DeformedShape $ViewScale;
set IDctrlNode 14;
set IDctrlDOF 1;
set Dmax 0.80;
set Dincr 0.00050;
#
constraints Plain; #Penalty 1.0e15 1.0e15;
numberer RCM;
system BandGeneral;
#test NormUnbalance 1.0e-6 400;
test NormDispIncr 1.0e-6 800 0;
algorithm Newton;
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr;
analysis Static;
set Nsteps [expr int($Dmax/$Dincr)];;
set ok [analyze $Nsteps];
puts "\nPushover Complete."
##[/size]
Braced Frame Analysis
Moderators: silvia, selimgunay, Moderators
Re: Braced Frame Analysis
I'am trying to solve that. It's pretty good content. Thank you.