concentrated plasticity

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
satyam
Posts: 5
Joined: Thu Jul 27, 2017 11:02 pm
Location: Indian institute of technology bombay

concentrated plasticity

Post by satyam » Wed Jun 13, 2018 8:15 pm

HI,
I am doing Pushover analysis by using lumped plasticity model (Ibraa model). when I am plotting a graph of base shear versus roof displacement i am getting an only linear curve, my curve is not going into nonlinear range.

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: concentrated plasticity

Post by selimgunay » Sun Jun 17, 2018 1:02 pm

Maybe you are not applying large displacements beyond yield? Could you increase your target displacement.

satyam
Posts: 5
Joined: Thu Jul 27, 2017 11:02 pm
Location: Indian institute of technology bombay

Re: concentrated plasticity

Post by satyam » Mon Jun 18, 2018 9:37 pm

yes, i applying large displacement. this is the following code
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder, ndm=#dimension, ndf=#dof

set LCol [expr 13.5*$ft]; # column Length (parallel to Y axis) 13.5 ft
puts "Length of column = $LCol"
set LBeam [expr 27*$ft]; # beam length (parallel to X axis) 27 ft
puts "Length of beam = $LBeam"
set LGird [expr 16*$ft]; # beam length (parallel to Z axis) 16ft
puts "Length of Grid = $LGird"
# Frame configuration
set NStory 3; # number of stories above ground level
set NBay 3; # number of bays in X direction
set NBayZ 2; # number of bays in Z direction
puts "Number of Stories in Y = $NStory";
puts "Number of bays in X = $NBay";
puts "Number of bays in Z = $NBayZ";

# Locations of beam-column intersections
set X1 0.;
set X2 [expr $X1 + $LBeam];
set X3 [expr $X2 + $LBeam];
set X4 [expr $X3 + $LBeam];

set Y1 0.;
set Y2 [expr $Y1 + $LCol];
set Y3 [expr $Y2 + $LCol];
set Y4 [expr $Y3 + $LCol]; # height of building
puts "Height of building is $Y4 "
set Z1 0.0;
set Z2 [expr $Z1 + $LGird];
set Z3 [expr $Z2 + $LGird];

# Co-ordinate
node 111 $X1 $Y1 $Z1; # frame 1 level 1
node 112 $X2 $Y1 $Z1;
node 113 $X3 $Y1 $Z1;
node 114 $X4 $Y1 $Z1;

node 121 $X1 $Y2 $Z1; # frame 1 level 2
node 122 $X2 $Y2 $Z1;
node 123 $X3 $Y2 $Z1;
node 124 $X4 $Y2 $Z1;

node 131 $X1 $Y3 $Z1; # frame 1 level 3
node 132 $X2 $Y3 $Z1;
node 133 $X3 $Y3 $Z1;
node 134 $X4 $Y3 $Z1;

node 141 $X1 $Y4 $Z1; # frame 1 level 4
node 142 $X2 $Y4 $Z1;
node 143 $X3 $Y4 $Z1;
node 144 $X4 $Y4 $Z1;

node 211 $X1 $Y1 $Z2; # frame 2 level 1
node 212 $X2 $Y1 $Z2;
node 213 $X3 $Y1 $Z2;
node 214 $X4 $Y1 $Z2;

node 221 $X1 $Y2 $Z2; # frame 2 level 2
node 222 $X2 $Y2 $Z2;
node 223 $X3 $Y2 $Z2;
node 224 $X4 $Y2 $Z2;

node 231 $X1 $Y3 $Z2; # frame 2 level 3
node 232 $X2 $Y3 $Z2;
node 233 $X3 $Y3 $Z2;
node 234 $X4 $Y3 $Z2;

node 241 $X1 $Y4 $Z2; # frame 2 level 4
node 242 $X2 $Y4 $Z2;
node 243 $X3 $Y4 $Z2;
node 244 $X4 $Y4 $Z2;

node 311 $X1 $Y1 $Z3; # frame 3 level 1
node 312 $X2 $Y1 $Z3;
node 313 $X3 $Y1 $Z3;
node 314 $X4 $Y1 $Z3;

node 321 $X1 $Y2 $Z3; # frame 3 level 2
node 322 $X2 $Y2 $Z3;
node 323 $X3 $Y2 $Z3;
node 324 $X4 $Y2 $Z3;

node 331 $X1 $Y3 $Z3; # frame 3 level 3
node 332 $X2 $Y3 $Z3;
node 333 $X3 $Y3 $Z3;
node 334 $X4 $Y3 $Z3;

node 341 $X1 $Y4 $Z3; # frame 3 level 4
node 342 $X2 $Y4 $Z3;
node 343 $X3 $Y4 $Z3;
node 344 $X4 $Y4 $Z3;

puts "Done till node"
#constraints for node
#4th floor
equalDOF 241 141 1;
equalDOF 241 142 1;
equalDOF 241 143 1;
equalDOF 241 144 1;

equalDOF 241 341 1;
equalDOF 241 342 1;
equalDOF 241 343 1;
equalDOF 241 344 1;

equalDOF 241 242 1;
equalDOF 241 243 1;
equalDOF 241 244 1;
#3rd floor
equalDOF 231 131 1;
equalDOF 231 132 1;
equalDOF 231 133 1;
equalDOF 231 134 1;

equalDOF 231 331 1;
equalDOF 231 332 1;
equalDOF 231 333 1;
equalDOF 231 334 1;

equalDOF 231 232 1;
equalDOF 231 233 1;
equalDOF 231 234 1;
# 2nd floor
equalDOF 221 121 1;
equalDOF 221 122 1;
equalDOF 221 123 1;
equalDOF 221 124 1;

equalDOF 221 321 1;
equalDOF 221 322 1;
equalDOF 221 323 1;
equalDOF 221 324 1;

equalDOF 221 222 1;
equalDOF 221 223 1;
equalDOF 221 224 1;


###################################################################################################
# Node for spring
###################################################################################################

# calculate joint offset distance for beam plastic hinges
set phlat23 [expr 0.0]; # lateral dist from beam-col joint to loc of hinge, where plastic hinge should form
puts "Node offset = $phlat23"



node 1117 $X1 $Y1 $Z1; # frame 1 level 1 above the intersection (base point)
node 1127 $X2 $Y1 $Z1;
node 1137 $X3 $Y1 $Z1;
node 1147 $X4 $Y1 $Z1;

node 1216 $X1 $Y2 $Z1; # frame 1 level 2 below the intersection
node 1217 $X1 $Y2 $Z1; # Above the intersection
node 1215 $X1 $Y2 $Z1; # right of the intersection; along X axis
node 1219 $X1 $Y2 $Z1; # right of the intersection; along Z axis

node 1226 $X2 $Y2 $Z1; # frame 1 level 2 below the intersection
node 1227 $X2 $Y2 $Z1; # Above the intersection
node 1220 $X2 $Y2 $Z1; # left of the intersection along X axis
node 1225 $X2 $Y2 $Z1; # right of the intersection along X axis
node 1229 $X2 $Y2 $Z1; # right of the intersection along Z axis

node 1236 $X3 $Y2 $Z1;
node 1237 $X3 $Y2 $Z1;
node 1230 $X3 $Y2 $Z1;
node 1235 $X3 $Y2 $Z1;
node 1239 $X3 $Y2 $Z1;

node 1246 $X4 $Y2 $Z1;
node 1247 $X4 $Y2 $Z1;
node 1240 $X4 $Y2 $Z1;
node 1249 $X4 $Y2 $Z1;

node 1316 $X1 $Y3 $Z1; # frame 1 level 3
node 1317 $X1 $Y3 $Z1;
node 1315 $X1 $Y3 $Z1;
node 1319 $X1 $Y3 $Z1;

node 1326 $X2 $Y3 $Z1;
node 1327 $X2 $Y3 $Z1;
node 1320 $X2 $Y3 $Z1;
node 1325 $X2 $Y3 $Z1;
node 1329 $X2 $Y3 $Z1;

node 1336 $X3 $Y3 $Z1;
node 1337 $X3 $Y3 $Z1;
node 1330 $X3 $Y3 $Z1;
node 1335 $X3 $Y3 $Z1;
node 1339 $X3 $Y3 $Z1;

node 1346 $X4 $Y3 $Z1;
node 1347 $X4 $Y3 $Z1;
node 1340 $X4 $Y3 $Z1;
node 1349 $X4 $Y3 $Z1;

node 1416 $X1 $Y4 $Z1; # frame 1 level 4
node 1415 $X1 $Y4 $Z1;
node 1419 $X1 $Y4 $Z1;

node 1426 $X2 $Y4 $Z1;
node 1420 $X2 $Y4 $Z1;
node 1425 $X2 $Y4 $Z1;
node 1429 $X2 $Y4 $Z1;

node 1436 $X3 $Y4 $Z1;
node 1430 $X3 $Y4 $Z1;
node 1435 $X3 $Y4 $Z1;
node 1439 $X3 $Y4 $Z1;

node 1446 $X4 $Y4 $Z1;
node 1440 $X4 $Y4 $Z1;
node 1449 $X4 $Y4 $Z1;

node 2117 $X1 $Y1 $Z2; # frame 2 level 1 above the intersection (base point)
node 2127 $X2 $Y1 $Z2;
node 2137 $X3 $Y1 $Z2;
node 2147 $X4 $Y1 $Z2;

node 2217 $X1 $Y2 $Z2; # frame 2 level 2
node 2216 $X1 $Y2 $Z2;
node 2215 $X1 $Y2 $Z2;
node 2218 $X1 $Y2 $Z2;
node 2219 $X1 $Y2 $Z2;

node 2227 $X2 $Y2 $Z2;
node 2226 $X2 $Y2 $Z2;
node 2220 $X2 $Y2 $Z2;
node 2225 $X2 $Y2 $Z2;
node 2228 $X2 $Y2 $Z2;
node 2229 $X2 $Y2 $Z2;

node 2237 $X3 $Y2 $Z2;
node 2236 $X3 $Y2 $Z2;
node 2230 $X3 $Y2 $Z2;
node 2235 $X3 $Y2 $Z2;
node 2238 $X3 $Y2 $Z2;
node 2239 $X3 $Y2 $Z2;

node 2247 $X4 $Y2 $Z2;
node 2246 $X4 $Y2 $Z2;
node 2240 $X4 $Y2 $Z2;
node 2248 $X4 $Y2 $Z2;
node 2249 $X4 $Y2 $Z2;


node 2317 $X1 $Y3 $Z2; # frame 2 level 3
node 2316 $X1 $Y3 $Z2;
node 2315 $X1 $Y3 $Z2;
node 2318 $X1 $Y3 $Z2;
node 2319 $X1 $Y3 $Z2;

node 2327 $X2 $Y3 $Z2;
node 2326 $X2 $Y3 $Z2;
node 2320 $X2 $Y3 $Z2;
node 2325 $X2 $Y3 $Z2;
node 2328 $X2 $Y3 $Z2;
node 2329 $X2 $Y3 $Z2;

node 2337 $X3 $Y3 $Z2;
node 2336 $X3 $Y3 $Z2;
node 2330 $X3 $Y3 $Z2;
node 2335 $X3 $Y3 $Z2;
node 2338 $X3 $Y3 $Z2;
node 2339 $X3 $Y3 $Z2;

node 2346 $X4 $Y3 $Z2;
node 2347 $X4 $Y3 $Z2;
node 2340 $X4 $Y3 $Z2;
node 2348 $X4 $Y3 $Z2;
node 2349 $X4 $Y3 $Z2;

node 2416 $X1 $Y4 $Z2;# frame 2 level 4
node 2415 $X1 $Y4 $Z2;
node 2418 $X1 $Y4 $Z2;
node 2419 $X1 $Y4 $Z2;

node 2426 $X2 $Y4 $Z2;
node 2420 $X2 $Y4 $Z2;
node 2425 $X2 $Y4 $Z2;
node 2428 $X2 $Y4 $Z2;
node 2429 $X2 $Y4 $Z2;

node 2436 $X3 $Y4 $Z2;
node 2430 $X3 $Y4 $Z2;
node 2435 $X3 $Y4 $Z2;
node 2438 $X3 $Y4 $Z2;
node 2439 $X3 $Y4 $Z2;


node 2446 $X4 $Y4 $Z2;
node 2440 $X4 $Y4 $Z2;
node 2448 $X4 $Y4 $Z2;
node 2449 $X4 $Y4 $Z2;

node 3117 $X1 $Y1 $Z3; # frame 3 level 1 above the intersection (base point)
node 3127 $X2 $Y1 $Z3;
node 3137 $X3 $Y1 $Z3;
node 3147 $X4 $Y1 $Z3;

node 3217 $X1 $Y2 $Z3; # frame 3 level 2
node 3216 $X1 $Y2 $Z3;
node 3215 $X1 $Y2 $Z3;
node 3218 $X1 $Y2 $Z3;

node 3227 $X2 $Y2 $Z3;
node 3226 $X2 $Y2 $Z3;
node 3220 $X2 $Y2 $Z3;
node 3225 $X2 $Y2 $Z3;
node 3228 $X2 $Y2 $Z3;

node 3237 $X3 $Y2 $Z3;
node 3236 $X3 $Y2 $Z3;
node 3230 $X3 $Y2 $Z3;
node 3235 $X3 $Y2 $Z3;
node 3238 $X3 $Y2 $Z3;

node 3247 $X4 $Y2 $Z3;
node 3246 $X4 $Y2 $Z3;
node 3240 $X4 $Y2 $Z3;
node 3248 $X4 $Y2 $Z3;

node 3317 $X1 $Y3 $Z3; # frame 3 level 3
node 3316 $X1 $Y3 $Z3;
node 3315 $X1 $Y3 $Z3;
node 3318 $X1 $Y3 $Z3;

node 3327 $X2 $Y3 $Z3;
node 3326 $X2 $Y3 $Z3;
node 3320 $X2 $Y3 $Z3;
node 3325 $X2 $Y3 $Z3;
node 3328 $X2 $Y3 $Z3;

node 3337 $X3 $Y3 $Z3;
node 3336 $X3 $Y3 $Z3;
node 3330 $X3 $Y3 $Z3;
node 3335 $X3 $Y3 $Z3;
node 3338 $X3 $Y3 $Z3;

node 3347 $X4 $Y3 $Z3;
node 3346 $X4 $Y3 $Z3;
node 3340 $X4 $Y3 $Z3;
node 3348 $X4 $Y3 $Z3;


node 3416 $X1 $Y4 $Z3; # frame 3 level 4
node 3415 $X1 $Y4 $Z3;
node 3418 $X1 $Y4 $Z3;

node 3426 $X2 $Y4 $Z3;
node 3425 $X2 $Y4 $Z3;
node 3420 $X2 $Y4 $Z3;
node 3428 $X2 $Y4 $Z3;

node 3436 $X3 $Y4 $Z3;
node 3435 $X3 $Y4 $Z3;
node 3430 $X3 $Y4 $Z3;
node 3438 $X3 $Y4 $Z3;

node 3446 $X4 $Y4 $Z3;
node 3440 $X4 $Y4 $Z3;
node 3448 $X4 $Y4 $Z3;
puts "Node for spring "

###################################################################################################
# BOUNDARY CONDITIONS
###################################################################################################

fix 111 1 1 1 1 1 1;
fix 112 1 1 1 1 1 1;
fix 113 1 1 1 1 1 1;
fix 114 1 1 1 1 1 1;
fix 211 1 1 1 1 1 1;
fix 212 1 1 1 1 1 1;
fix 213 1 1 1 1 1 1;
fix 214 1 1 1 1 1 1;
fix 311 1 1 1 1 1 1;
fix 312 1 1 1 1 1 1;
fix 313 1 1 1 1 1 1;
fix 314 1 1 1 1 1 1;

puts "Boundary Condition"


###################################################################################################
# Define Section Properties and Elements
###################################################################################################

#elastic section
set ColSecTag 1
set BeamSecTag 2
set GirdSecTag 3
#material properties
set Es [expr 29000*$ksi]; # Steel Young's Modulus
set nu 0.3; # Poisson's ratio
set Gs [expr $Es/2./[expr 1+$nu]]; # Shear Modulus
set J $Ubig; # set large torsional stiffness
set Fy [expr 1.1*50*$ksi]; #1.1 is the factor to increase the monent to capture haredening see ibraa model
# column sections: W10X100
set DCol 10; # depth of column
set AgCol [expr 29.4*pow($in,2)]; # cross-sectional area
set IzCol [expr 623.*pow($in,4)]; # moment of Inertia
set IzCOLMod [expr $IzCol/[expr 0.5*$DCol]]; # Section modulus
set IyCol [expr 207.*pow($in,4)]; # moment of Inertia
set MyCol [expr $Fy*$IzCOLMod]; # Yield Moment 6853
# beam sections: W24x84
set DBeam 24; # depth of column
set AgBeam [expr 24.7*pow($in,2)]; # cross-sectional area
set IzBeam [expr 2370.*pow($in,4)]; # moment of Inertia
set IzBeamMod [expr $IzBeam/[expr 0.5*$DBeam]]; # Section Modulus
set IyBeam [expr 94.4*pow($in,4)]; # moment of Inertia
set MyBem [expr $Fy*$IzBeamMod]; # Yield Moment 10862
# girder sections: W24x55
set DGird 24;
set AgGird [expr 16.2*pow($in,2)]; # cross-sectional area
set IzGird [expr 1350.*pow($in,4)]; # moment of Inertia
set IzGirdMod [expr $IzGird/[expr 0.5*$DGird]]; # Section modulus
set IyGird [expr 29.1*pow($in,4)]; # moment of Inertia
set Mygird [expr $Fy*$IzGirdMod]; # Yield Moment 6187.5
# -----------------------------------------------------------------------------------------------------------


############################################################################
# define ELEMENTS, Set up geometric transformations of element, separate columns and beams for P-Delta analysis for columns
############################################################################

set IDColTransf 1; # columns
set IDBeamTransf 2; # BEam
set IDGirdTransf 3; # Grid beam

# Transfer type: Linear,PDelta, Co-rotational
set ColTransfType PDelta ;
set BeamTransfType PDelta;
set GridTransfType PDelta;

geomTransf $ColTransfType $IDColTransf 1 0 0 ; # Column
geomTransf $BeamTransfType $IDBeamTransf 0 0 1 ; # Beam transfer tag along X direction
geomTransf $GridTransfType $IDGirdTransf 1 0 0 ; # Girder

puts " Defnition of geometric transfer tag"
#define elastic column elements using "element" command
#$G Shear Modulus
#$J torsional moment of inertia of cross section

# Frame 1
# columns
element elasticBeamColumn 1111 1117 1216 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1112 1127 1226 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1113 1137 1236 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1114 1147 1246 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;

element elasticBeamColumn 1121 1217 1316 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1122 1227 1326 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1123 1237 1336 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1124 1247 1346 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;

element elasticBeamColumn 1131 1317 1416 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1132 1327 1426 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1133 1337 1436 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 1134 1347 1446 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
# beams
element elasticBeamColumn 1221 1215 1220 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 1222 1225 1230 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 1223 1235 1240 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

element elasticBeamColumn 1231 1315 1320 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 1232 1325 1330 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 1233 1335 1340 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

element elasticBeamColumn 1241 1415 1420 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 1242 1425 1430 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 1243 1435 1440 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
# columns
element elasticBeamColumn 2111 2117 2216 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2112 2127 2226 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2113 2137 2236 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2114 2147 2246 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;

element elasticBeamColumn 2121 2217 2316 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2122 2227 2326 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2123 2237 2336 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2124 2247 2346 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;

element elasticBeamColumn 2131 2317 2416 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2132 2327 2426 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2133 2337 2436 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 2134 2347 2446 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
# beams
element elasticBeamColumn 2221 2215 2220 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 2222 2225 2230 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 2223 2235 2240 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

element elasticBeamColumn 2231 2315 2320 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 2232 2325 2330 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 2233 2335 2340 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

element elasticBeamColumn 2241 2415 2420 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 2242 2425 2430 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 2243 2435 2440 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

# columns
element elasticBeamColumn 3111 3117 3216 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3112 3127 3226 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3113 3137 3236 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3114 3147 3246 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;

element elasticBeamColumn 3121 3217 3316 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3122 3227 3326 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3123 3237 3336 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3124 3247 3346 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;

element elasticBeamColumn 3131 3317 3416 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3132 3327 3426 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3133 3337 3436 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
element elasticBeamColumn 3134 3347 3446 $AgCol $Es $Gs $J $IyCol $IzCol $IDColTransf;
#Beam

element elasticBeamColumn 3221 3215 3220 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 3222 3225 3230 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 3223 3235 3240 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

element elasticBeamColumn 3231 3315 3320 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 3232 3325 3330 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 3233 3335 3340 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

element elasticBeamColumn 3241 3415 3420 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 3242 3425 3430 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;
element elasticBeamColumn 3243 3435 3440 $AgBeam $Es $Gs $J $IyBeam $IzBeam $IDBeamTransf;

# Grid beam connecting frames 1 and 2
element elasticBeamColumn 1321 1219 2218 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1322 1229 2228 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1323 1239 2238 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1324 1249 2248 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;

element elasticBeamColumn 1325 2219 3218 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1326 2229 3228 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1327 2239 3238 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1328 2249 3248 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;

element elasticBeamColumn 1331 1319 2318 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1332 1329 2328 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1333 1339 2338 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1334 1349 2348 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;

element elasticBeamColumn 1335 2319 3318 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1336 2329 3328 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1337 2339 3338 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1338 2349 3348 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;

element elasticBeamColumn 1341 1419 2418 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1342 1429 2428 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1343 1439 2438 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1344 1449 2448 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;

element elasticBeamColumn 1345 2419 3418 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1346 2429 3428 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1347 2439 3438 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;
element elasticBeamColumn 1348 2449 3448 $AgGird $Es $Gs $J $IyGird $IzGird $IDGirdTransf;

puts "definition of elastic element"

###################################################################################################
# Define rotational spring properties and create spring elements using "rotSpring2DModIKModel" procedure
###################################################################################################
# note: In this example the hinges form right at the beam-column joint, so using an RBS doesn't make sense
# however, it is done here simply for illustrative purposes.

# determine stiffness modifications to equate the stiffness of the spring-elastic element-spring subassembly to the stiffness of the actual frame member
# Reference: Ibarra, L. F., and Krawinkler, H. (2005). "Global collapse of frame structures under seismic excitations," Technical Report 152,
# The John A. Blume Earthquake Engineering Research Center, Department of Civil Engineering, Stanford University, Stanford, CA.

# calculate modified section properties to account for spring stiffness being in series with the elastic element stiffness
set n 10.0; # stiffness multiplier for rotational spring

# calculate modified moment of inertia for elastic elements
set IzColModi [expr $IzCol*($n+1.0)/$n]; # modified moment of inertia for columns
set IzBeamModi [expr $IzBeam*($n+1.0)/$n]; # modified moment of inertia for beams
set IzGirdModi [expr $IzGird*($n+1.0)/$n]; # modified moment of inertia for Girder

# calculate modified rotational stiffness for plastic hinge springs
set Ks_col [expr $n*6.0*$Es*$IzColModi/$LCol]; # rotational stiffness of Column (How 6 is used in expression)
set Ks_beam [expr $n*6.0*$Es*$IzBeamModi/$LBeam]; # rotational stiffness of Beam
set Ks_girder [expr $n*6.0*$Es*$IzGirdModi/$LGird]; # rotational stiffness of Girder

# input values for column springs

set McMy 1.05; # ratio of capping moment to yield moment, Mc / My
set LS 1000.0; # basic strength deterioration (a very large # = no cyclic deterioration)
set LK 1000.0; # unloading stiffness deterioration (a very large # = no cyclic deterioration)
set LA 1000.0; # accelerated reloading stiffness deterioration (a very large # = no cyclic deterioration)
set LD 1000.0; # post-capping strength deterioration (a very large # = no deterioration)

set cS 1.0; # exponent for basic strength deterioration (c = 1.0 for no deterioration)
set cK 1.0; # exponent for unloading stiffness deterioration (c = 1.0 for no deterioration)
set cA 1.0; # exponent for accelerated reloading stiffness deterioration (c = 1.0 for no deterioration)
set cD 1.0; # exponent for post-capping strength deterioration (c = 1.0 for no deterioration)

set th_pP 0.025; # plastic rot capacity for pos loading
set th_pN 0.025; # plastic rot capacity for neg loading

set th_pcP 0.3; # post-capping rot capacity for pos loading
set th_pcN 0.3; # post-capping rot capacity for neg loading

set ResP 0.4; # residual strength ratio for pos loading
set ResN 0.4; # residual strength ratio for neg loading

set th_uP 0.4; # ultimate rot capacity for pos loading
set th_uN 0.4; # ultimate rot capacity for neg loading

set DP 1.0; # rate of cyclic deterioration for pos loading
set DN 1.0; # rate of cyclic deterioration for neg loading

set a_mem [expr ($n+1.0)*($MyCol*($McMy-1.0)) / ($Ks_col*$th_pP)]; # strain hardening ratio of spring
set b_col [expr ($a_mem)/(1.0+$n*(1.0-$a_mem))]; # modified strain hardening ratio of spring (Ibarra & Krawinkler 2005, note: Eqn B.5 is incorrect)
set asPos $b_col;
set asNeg $b_col;

# define column springs
# Spring ID: "3....a", where 3 = col spring,
# "a" convention: 1 = bottom of story, 2 = top of story
set EX 127.374169;
set EY 50696.2963;
uniaxialMaterial Elastic 1 $EX; # material model for torsion Mx
uniaxialMaterial Elastic 2 $EY; # material model for My
uniaxialMaterial Bilin 3 $Ks_col $asPos $asNeg $MyCol [expr -$MyCol] $LS $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP $ResN $th_uP $th_uN $DP $DN; # material model for Mz
#Element zeroLength
element zeroLength 311111 111 1117 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311121 112 1127 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311131 113 1137 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311141 114 1147 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 311112 121 1216 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311122 122 1226 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311132 123 1236 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311142 124 1246 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;

element zeroLength 321111 211 2117 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321121 212 2127 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321131 213 2137 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321141 214 2147 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 321112 221 2216 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321122 222 2226 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321132 223 2236 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321142 224 2246 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;

element zeroLength 331111 311 3117 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331121 312 3127 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331131 313 3137 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331141 314 3147 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 331112 321 3216 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331122 322 3226 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331132 323 3236 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331142 324 3246 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
#First story column
element zeroLength 311211 121 1217 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311221 122 1227 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311231 123 1237 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311241 124 1247 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 311212 131 1316 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311222 132 1326 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311232 133 1336 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311242 134 1346 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;

element zeroLength 321211 221 2217 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321221 222 2227 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321231 223 2237 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321241 224 2247 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 321212 231 2316 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321222 232 2326 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321232 233 2336 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321242 234 2346 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;

element zeroLength 331211 321 3217 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331221 322 3227 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331231 323 3237 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331241 324 3247 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 331212 331 3316 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331222 332 3326 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331232 333 3336 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331242 334 3346 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
#second stiry coulmn
element zeroLength 311311 131 1317 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311321 132 1327 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311331 133 1337 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 311341 134 1347 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 311312 141 1416 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311322 142 1426 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311332 143 1436 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 311342 144 1446 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;

element zeroLength 321311 231 2317 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321321 232 2327 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321331 233 2337 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 321341 234 2347 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 321312 241 2416 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321322 242 2426 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321332 243 2436 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 321342 244 2446 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;

element zeroLength 331311 331 3317 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331321 332 3327 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331331 333 3337 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;
element zeroLength 331341 334 3347 -mat 1 2 3 -dir 4 5 6 -orient 0 1 0 0 0 1;

element zeroLength 331312 341 3416 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331322 342 3426 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331332 343 3436 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;
element zeroLength 331342 344 3446 -mat 1 2 3 -dir 4 5 6 -orient 0 -1 0 0 0 1;


# Constrain the translational DOF with a multi-point constraint
equalDOF 111 1117 1 2 3;
equalDOF 112 1127 1 2 3;
equalDOF 113 1137 1 2 3;
equalDOF 114 1147 1 2 3;
equalDOF 121 1216 1 2 3;
equalDOF 122 1226 1 2 3;
equalDOF 123 1236 1 2 3;
equalDOF 124 1246 1 2 3;
equalDOF 211 2117 1 2 3;
equalDOF 212 2127 1 2 3;
equalDOF 213 2137 1 2 3;
equalDOF 214 2147 1 2 3;
equalDOF 221 2216 1 2 3;
equalDOF 222 2226 1 2 3;
equalDOF 223 2236 1 2 3;
equalDOF 224 2246 1 2 3;
equalDOF 311 3117 1 2 3;
equalDOF 312 3127 1 2 3;
equalDOF 313 3137 1 2 3;
equalDOF 314 3147 1 2 3;
equalDOF 321 3216 1 2 3;
equalDOF 322 3226 1 2 3;
equalDOF 323 3236 1 2 3;
equalDOF 324 3246 1 2 3;
equalDOF 121 1217 1 2 3;
equalDOF 122 1227 1 2 3;
equalDOF 123 1237 1 2 3;
equalDOF 124 1247 1 2 3;
equalDOF 131 1316 1 2 3;
equalDOF 132 1326 1 2 3;
equalDOF 133 1336 1 2 3;
equalDOF 134 1346 1 2 3;
equalDOF 221 2217 1 2 3;
equalDOF 222 2227 1 2 3;
equalDOF 223 2237 1 2 3;
equalDOF 224 2247 1 2 3;
equalDOF 231 2316 1 2 3;
equalDOF 232 2326 1 2 3;
equalDOF 233 2336 1 2 3;
equalDOF 234 2346 1 2 3;
equalDOF 321 3217 1 2 3;
equalDOF 322 3227 1 2 3;
equalDOF 323 3237 1 2 3;
equalDOF 324 3247 1 2 3;
equalDOF 331 3316 1 2 3;
equalDOF 332 3326 1 2 3;
equalDOF 333 3336 1 2 3;
equalDOF 334 3346 1 2 3;
equalDOF 131 1317 1 2 3;
equalDOF 132 1327 1 2 3;
equalDOF 133 1337 1 2 3;
equalDOF 134 1347 1 2 3;
equalDOF 141 1416 1 2 3;
equalDOF 142 1426 1 2 3;
equalDOF 143 1436 1 2 3;
equalDOF 144 1446 1 2 3;
equalDOF 231 2317 1 2 3;
equalDOF 232 2327 1 2 3;
equalDOF 233 2337 1 2 3;
equalDOF 234 2347 1 2 3;
equalDOF 241 2416 1 2 3;
equalDOF 242 2426 1 2 3;
equalDOF 243 2436 1 2 3;
equalDOF 244 2446 1 2 3;
equalDOF 331 3317 1 2 3;
equalDOF 332 3327 1 2 3;
equalDOF 333 3337 1 2 3;
equalDOF 334 3347 1 2 3;
equalDOF 341 3416 1 2 3;
equalDOF 342 3426 1 2 3;
equalDOF 343 3436 1 2 3;
equalDOF 344 3446 1 2 3;

# define beam springs
# Spring ID: "2....a", a = location in bay
# "a" convention: 1 = left end, 2 = right end
# redefine the rotations since they are not the same
set th_pP 0.025;
set th_pN 0.025;
set th_pcP 0.3;
set th_pcN 0.3;
set a_mem [expr ($n+1.0)*($MyBem*($McMy-1.0)) / ($Ks_beam*$th_pP)]; # strain hardening ratio of spring
set b_beam [expr ($a_mem)/(1.0+$n*(1.0-$a_mem))]; # modified strain hardening ratio of spring (Ibarra & Krawinkler 2005, note: there is mistake in Eqn B.5)
set asPos $b_beam;
set asNeg $b_beam;

uniaxialMaterial Bilin 4 $Ks_beam $asPos $asNeg $MyBem [expr -$MyBem] $LS $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP $ResN $th_uP $th_uN $DP $DN;

element zeroLength 212211 121 1215 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 212221 122 1225 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 212231 123 1235 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 212212 122 1220 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 212222 123 1230 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 212232 124 1240 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;

element zeroLength 222211 221 2215 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 222221 222 2225 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 222231 223 2235 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 222212 222 2220 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 222222 223 2230 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 222232 224 2240 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;

element zeroLength 232211 321 3215 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 232221 322 3225 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 232231 323 3235 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 232212 322 3220 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 232222 323 3230 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 232232 324 3240 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
# 2nd floor
element zeroLength 212311 131 1315 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 212321 132 1325 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 212331 133 1335 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 212312 132 1320 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 212322 133 1330 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 212332 134 1340 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;

element zeroLength 222311 231 2315 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 222321 232 2325 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 222331 233 2335 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 222312 232 2320 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 222322 233 2330 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 222332 234 2340 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;

element zeroLength 232311 331 3315 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 232321 332 3325 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 232331 333 3335 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 232312 332 3320 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 232322 333 3330 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 232332 334 3340 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
#3rd Floor
element zeroLength 212411 141 1415 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 212421 142 1425 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 212431 143 1435 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 212412 142 1420 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 212422 143 1430 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 212432 144 1440 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;

element zeroLength 222411 241 2415 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 222421 242 2425 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 222431 243 2435 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 222412 242 2420 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 222422 243 2430 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 222432 244 2440 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;

element zeroLength 232411 341 3415 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 232421 342 3425 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;
element zeroLength 232431 343 3435 -mat 1 2 4 -dir 4 5 6 -orient 1 0 0 0 1 0 ;

element zeroLength 232412 342 3420 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 232422 343 3430 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
element zeroLength 232432 344 3440 -mat 1 2 4 -dir 4 5 6 -orient -1 0 0 0 1 0 ;
#
equalDOF 121 1215 1 2 3 ;
equalDOF 122 1225 1 2 3 ;
equalDOF 123 1235 1 2 3 ;
equalDOF 122 1220 1 2 3 ;
equalDOF 123 1230 1 2 3 ;
equalDOF 124 1240 1 2 3 ;
equalDOF 221 2215 1 2 3 ;
equalDOF 222 2225 1 2 3 ;
equalDOF 223 2235 1 2 3 ;
equalDOF 222 2220 1 2 3 ;
equalDOF 223 2230 1 2 3 ;
equalDOF 224 2240 1 2 3 ;
equalDOF 321 3215 1 2 3 ;
equalDOF 322 3225 1 2 3 ;
equalDOF 323 3235 1 2 3 ;
equalDOF 322 3220 1 2 3 ;
equalDOF 323 3230 1 2 3 ;
equalDOF 324 3240 1 2 3 ;
equalDOF 131 1315 1 2 3 ;
equalDOF 132 1325 1 2 3 ;
equalDOF 133 1335 1 2 3 ;
equalDOF 132 1320 1 2 3 ;
equalDOF 133 1330 1 2 3 ;
equalDOF 134 1340 1 2 3 ;
equalDOF 231 2315 1 2 3 ;
equalDOF 232 2325 1 2 3 ;
equalDOF 233 2335 1 2 3 ;
equalDOF 232 2320 1 2 3 ;
equalDOF 233 2330 1 2 3 ;
equalDOF 234 2340 1 2 3 ;
equalDOF 331 3315 1 2 3 ;
equalDOF 332 3325 1 2 3 ;
equalDOF 333 3335 1 2 3 ;
equalDOF 332 3320 1 2 3 ;
equalDOF 333 3330 1 2 3 ;
equalDOF 334 3340 1 2 3 ;
equalDOF 141 1415 1 2 3 ;
equalDOF 142 1425 1 2 3 ;
equalDOF 143 1435 1 2 3 ;
equalDOF 142 1420 1 2 3 ;
equalDOF 143 1430 1 2 3 ;
equalDOF 144 1440 1 2 3 ;
equalDOF 241 2415 1 2 3 ;
equalDOF 242 2425 1 2 3 ;
equalDOF 243 2435 1 2 3 ;
equalDOF 242 2420 1 2 3 ;
equalDOF 243 2430 1 2 3 ;
equalDOF 244 2440 1 2 3 ;
equalDOF 341 3415 1 2 3 ;
equalDOF 342 3425 1 2 3 ;
equalDOF 343 3435 1 2 3 ;
equalDOF 342 3420 1 2 3 ;
equalDOF 343 3430 1 2 3 ;
equalDOF 344 3440 1 2 3 ;


# define Grid beam springs
# Spring ID: "1xya", a = location in bay
# "a" convention: 1 = left end, 2 = right end
# redefine the rotations since they are not the same
set th_pP 0.025;
set th_pN 0.025;
set th_pcP 0.3;
set th_pcN 0.3;
set a_mem [expr ($n+1.0)*($Mygird*($McMy-1.0)) / ($Ks_girder*$th_pP)]; # strain hardening ratio of spring
set b_grid [expr ($a_mem)/(1.0+$n*(1.0-$a_mem))]; # modified strain hardening ratio of spring (Ibarra & Krawinkler 2005, note: there is mistake in Eqn B.5)
set asPos $b_grid;
set asNeg $b_grid;


uniaxialMaterial Bilin 5 $Ks_girder $asPos $asNeg $Mygird [expr -$Mygird] $LS $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP $ResN $th_uP $th_uN $DP $DN;

element zeroLength 113211 121 1219 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113221 122 1229 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113231 123 1239 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113241 124 1249 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;

element zeroLength 113212 221 2218 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113222 222 2228 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113232 223 2238 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113242 224 2248 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;

element zeroLength 113251 221 2219 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113261 222 2229 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113271 223 2239 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113281 224 2249 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;

element zeroLength 113252 321 3218 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113262 322 3228 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113272 323 3238 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113282 324 3248 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;

element zeroLength 113311 131 1319 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113321 132 1329 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113331 133 1339 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113341 134 1349 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;

element zeroLength 113312 231 2318 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113322 232 2328 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113332 233 2338 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113342 234 2348 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;

element zeroLength 113351 231 2319 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113361 232 2329 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113371 233 2339 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113381 234 2349 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;

element zeroLength 113352 331 3318 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113362 332 3328 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113372 333 3338 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113382 334 3348 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;

element zeroLength 113411 141 1419 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113421 142 1429 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113431 143 1439 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113441 144 1449 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;

element zeroLength 113412 241 2418 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113422 242 2428 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113432 243 2438 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113442 244 2448 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;

element zeroLength 113451 241 2419 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113461 242 2429 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113471 243 2439 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;
element zeroLength 113481 244 2449 -mat 1 2 4 -dir 4 5 6 -orient 0 0 1 0 1 0 ;

element zeroLength 113452 341 3418 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113462 342 3428 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113472 343 3438 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
element zeroLength 113482 344 3448 -mat 1 2 4 -dir 4 5 6 -orient 0 0 -1 0 1 0 ;
#
equalDOF 121 1219 1 2 3 ;
equalDOF 122 1229 1 2 3 ;
equalDOF 123 1239 1 2 3 ;
equalDOF 124 1249 1 2 3 ;
equalDOF 221 2218 1 2 3 ;
equalDOF 222 2228 1 2 3 ;
equalDOF 223 2238 1 2 3 ;
equalDOF 224 2248 1 2 3 ;
equalDOF 221 2219 1 2 3 ;
equalDOF 222 2229 1 2 3 ;
equalDOF 223 2239 1 2 3 ;
equalDOF 224 2249 1 2 3 ;
equalDOF 321 3218 1 2 3 ;
equalDOF 322 3228 1 2 3 ;
equalDOF 323 3238 1 2 3 ;
equalDOF 324 3248 1 2 3 ;
equalDOF 131 1319 1 2 3 ;
equalDOF 132 1329 1 2 3 ;
equalDOF 133 1339 1 2 3 ;
equalDOF 134 1349 1 2 3 ;
equalDOF 231 2318 1 2 3 ;
equalDOF 232 2328 1 2 3 ;
equalDOF 233 2338 1 2 3 ;
equalDOF 234 2348 1 2 3 ;
equalDOF 231 2319 1 2 3 ;
equalDOF 232 2329 1 2 3 ;
equalDOF 233 2339 1 2 3 ;
equalDOF 234 2349 1 2 3 ;
equalDOF 331 3318 1 2 3 ;
equalDOF 332 3328 1 2 3 ;
equalDOF 333 3338 1 2 3 ;
equalDOF 334 3348 1 2 3 ;
equalDOF 141 1419 1 2 3 ;
equalDOF 142 1429 1 2 3 ;
equalDOF 143 1439 1 2 3 ;
equalDOF 144 1449 1 2 3 ;
equalDOF 241 2418 1 2 3 ;
equalDOF 242 2428 1 2 3 ;
equalDOF 243 2438 1 2 3 ;
equalDOF 244 2448 1 2 3 ;
equalDOF 241 2419 1 2 3 ;
equalDOF 242 2429 1 2 3 ;
equalDOF 243 2439 1 2 3 ;
equalDOF 244 2449 1 2 3 ;
equalDOF 341 3418 1 2 3 ;
equalDOF 342 3428 1 2 3 ;
equalDOF 343 3438 1 2 3 ;
equalDOF 344 3448 1 2 3 ;

############################################################################
# Gravity Load
############################################################################
# Define GRAVITY LOADS, weight and mass
# Calculate dead load of frame, assume this to be an internal frame ( LL in a similar manner)
# Calculate distributed weight along the beam length

set QdlCol [expr 100*$lbf/$ft]; # W-section weight per length w27X114
puts "self weight of column $QdlCol"
set QBeam [expr 84*$lbf/$ft] ; # W-section weight per length
puts "self weight of beam $QBeam"
set QGird [expr 55*$lbf/$ft] ; # W-section weight per length
puts "self weight of girder $QGird"
#
set GammaConcrete [expr 0.000000001*$pcf]; # Reinforced-Concrete weight density (weight per volume) for checking i am putting gamma of concrete very less insteaf of 150
set Tslab [expr 6*$in]; # 6-inch thick slab
set Lslab [expr $LGird/2]; # slab extends a distance of $LGird/2 in/out of plane
set DLfactor 1.0; # Deal load factor
set Qslab [expr $GammaConcrete*$Tslab*$Lslab*$DLfactor]; # weight of slab per unit width
set SDEAD 0.09; #kips/in
set LIVE [expr 0.02]; #kips/in 0.25 for the partial live load
#set QdlBeam [expr $Qslab + $QBeam]; # For static checking
set QdlBeam [expr $Qslab + $QBeam + $SDEAD + $LIVE]; # udl of beam for mass calculation for eigen analysis
puts "UDL applied to beam $QdlBeam"
#
#set QdlGird $QGird; # Load distribution for static checking
set QdlGird [expr $QGird + $SDEAD + $LIVE]; # Mass calculation for eigen analysis
#
set WeightCol [expr $QdlCol*$LCol]; # Total Column weight
set WeightBeam [expr $QdlBeam*$LBeam]; # Total Beam weight
set WeightGird [expr $QdlGird*$LGird]; # Total girder weight
puts "defined weight of beam column and grid element"

# GRAVITY Load as uniformly distributed load

pattern Plain 101 Linear {
# Frame 1
# columns
eleLoad -ele 1111 -type -beamUniform 0. 0. -$QdlCol; # level 1-2
eleLoad -ele 1112 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 1113 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 1114 -type -beamUniform 0. 0. -$QdlCol;

eleLoad -ele 1121 -type -beamUniform 0. 0. -$QdlCol; # level 2-3
eleLoad -ele 1122 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 1123 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 1124 -type -beamUniform 0. 0. -$QdlCol;

eleLoad -ele 1131 -type -beamUniform 0. 0. -$QdlCol; # level 3-4
eleLoad -ele 1132 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 1133 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 1134 -type -beamUniform 0. 0. -$QdlCol;

# beams
eleLoad -ele 1221 -type -beamUniform -$QdlBeam 0.; # level 2
eleLoad -ele 1222 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 1223 -type -beamUniform -$QdlBeam 0.;

eleLoad -ele 1231 -type -beamUniform -$QdlBeam 0.; # level 3
eleLoad -ele 1232 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 1233 -type -beamUniform -$QdlBeam 0.;

eleLoad -ele 1241 -type -beamUniform -$QdlBeam 0.; # level 4
eleLoad -ele 1242 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 1243 -type -beamUniform -$QdlBeam 0.;
# Frame 2
# columns
eleLoad -ele 2111 -type -beamUniform 0. 0. -$QdlCol; # level 1-2
eleLoad -ele 2112 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 2113 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 2114 -type -beamUniform 0. 0. -$QdlCol;

eleLoad -ele 2121 -type -beamUniform 0. 0. -$QdlCol; # level 2-3
eleLoad -ele 2122 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 2123 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 2124 -type -beamUniform 0. 0. -$QdlCol;

eleLoad -ele 2131 -type -beamUniform 0. 0. -$QdlCol; # level 3-4
eleLoad -ele 2132 -type -beamUniform 0. 0. -$QdlCol
eleLoad -ele 2133 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 2134 -type -beamUniform 0. 0. -$QdlCol;
# beams
eleLoad -ele 2221 -type -beamUniform -$QdlBeam 0.; # level 2
eleLoad -ele 2222 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 2223 -type -beamUniform -$QdlBeam 0.;

eleLoad -ele 2231 -type -beamUniform -$QdlBeam 0.; # level 3
eleLoad -ele 2232 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 2233 -type -beamUniform -$QdlBeam 0.;

eleLoad -ele 2241 -type -beamUniform -$QdlBeam 0.; # level 4
eleLoad -ele 2242 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 2243 -type -beamUniform -$QdlBeam 0.;
# Frame 3
#Column
eleLoad -ele 3111 -type -beamUniform 0. 0. -$QdlCol; #level 1-2
eleLoad -ele 3112 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 3113 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 3114 -type -beamUniform 0. 0. -$QdlCol;

eleLoad -ele 3121 -type -beamUniform 0. 0. -$QdlCol; #level 2-3
eleLoad -ele 3122 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 3123 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 3124 -type -beamUniform 0. 0. -$QdlCol;

eleLoad -ele 3131 -type -beamUniform 0. 0. -$QdlCol; #level 3-4
eleLoad -ele 3132 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 3133 -type -beamUniform 0. 0. -$QdlCol;
eleLoad -ele 3134 -type -beamUniform 0. 0. -$QdlCol;
#Beam
eleLoad -ele 3221 -type -beamUniform -$QdlBeam 0.; # level 2
eleLoad -ele 3222 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 3223 -type -beamUniform -$QdlBeam 0.;

eleLoad -ele 3231 -type -beamUniform -$QdlBeam 0.; # level 3
eleLoad -ele 3232 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 3233 -type -beamUniform -$QdlBeam 0.;

eleLoad -ele 3241 -type -beamUniform -$QdlBeam 0.; #level 4
eleLoad -ele 3242 -type -beamUniform -$QdlBeam 0.;
eleLoad -ele 3243 -type -beamUniform -$QdlBeam 0.;
# girders connecting frames 1-2
eleLoad -ele 1321 -type -beamUniform $QdlGird 0.; # level 2 frame 1-2
eleLoad -ele 1322 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1323 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1324 -type -beamUniform $QdlGird 0.;

eleLoad -ele 1325 -type -beamUniform $QdlGird 0.; #frame 2-3
eleLoad -ele 1326 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1327 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1328 -type -beamUniform $QdlGird 0.;

eleLoad -ele 1331 -type -beamUniform $QdlGird 0.; # level 3 freame 1-2
eleLoad -ele 1332 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1333 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1334 -type -beamUniform $QdlGird 0.;

eleLoad -ele 1335 -type -beamUniform $QdlGird 0.; #frame 2-3
eleLoad -ele 1336 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1337 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1338 -type -beamUniform $QdlGird 0.;

eleLoad -ele 1341 -type -beamUniform $QdlGird 0.; # level 4 frame 1-2
eleLoad -ele 1342 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1343 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1344 -type -beamUniform $QdlGird 0.;

eleLoad -ele 1345 -type -beamUniform $QdlGird 0.; # frame 2-3
eleLoad -ele 1346 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1347 -type -beamUniform $QdlGird 0.;
eleLoad -ele 1348 -type -beamUniform $QdlGird 0.;
}




############################################################################
# Gravity-analysis: load-controlled static analysis
############################################################################
set Tol 1.0e-6; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization)
system BandGeneral; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol 6; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps0
set DGravity [expr 1.0/$NstepGravity]; # load increment
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity

# maintain constant gravity loads and reset time to zero
loadConst -time 0.0
puts "Model Built"
############################################################################
# Recorder Pushover analysis
##########################################################################
recorder Node -file $dataDir/DFree4th.out -time -node 141 142 143 144 241 242 243 244 341 342 243 344 -dof 1 disp; # displacements of free nodes
recorder Node -file $dataDir/DFree3rd.out -time -node 131 132 133 134 231 232 233 234 331 332 233 334 -dof 1 disp;
recorder Node -file $dataDir/DFree2nd.out -time -node 121 122 123 124 221 222 223 224 321 322 223 324 -dof 1 disp;

recorder Node -file $dataDir/RBase.out -time -node 1117 1127 1137 1147 2117 2127 2137 2147 3117 3127 3137 3147 -dof 1 reaction; # support reaction
recorder Element -file $dataDir/MRFbeam-Mom-Hist.out -ele 212211 localForce;
recorder Element -file $dataDir/MRFbeam-Rot-Hist.out -ele 212211 deformation;
############################################################################
# Pushover Analysis x direction
############################################################################
#Refrence Lateral load distribution for pushover analysis
#Deifne lateral load pattern
set FloorWeight2 [expr 12*$WeightCol + 8*$WeightGird + 9*$WeightBeam]
set FloorWeight3 [expr 12*$WeightCol + 8*$WeightGird + 9*$WeightBeam]
set FloorWeight4 [expr 6*$WeightCol + 8*$WeightGird + 9*$WeightBeam]
set WeightTotal [expr $FloorWeight2+$FloorWeight3+$FloorWeight4]; # total building weight
puts " total weight of structure is $WeightTotal"
# Fj = WjHj/sum(WiHi) # Weight at each floor j
# sum of storey weight times height, for lateral-load distribution
set sumWiHi [expr $FloorWeight2*$Y2+$FloorWeight3*$Y3+$FloorWeight4*$Y4];
set WiHi2 [expr $FloorWeight2*$Y2]; # level 2
set WiHi3 [expr $FloorWeight3*$Y3]; # level 3
set WiHi4 [expr $FloorWeight4*$Y4]; # level 4

set F2 [expr $WiHi2/$sumWiHi*$WeightTotal]; # lateral load at level 2
set F2_frame1_3 [expr $F2/4.0]; # lateral load at level 2 frame 1 and 3
puts "F2_frame1_3 is $F2_frame1_3"
set F2_frame2 [expr $F2/2.0]; # lateral load at level 2 frame 2
puts "F2_frame2 is $F2_frame2"

set F3 [expr $WiHi3/$sumWiHi*$WeightTotal]; # lateral load at level 3
set F3_frame1_3 [expr $F2/4.0]; # lateral load at level 3 frame 1 and 3
puts "F3_frame1_3 is $F3_frame1_3"
set F3_frame2 [expr $F2/2.0]; # lateral load at level 3 frame 2
puts "F3_frame2 is $F3_frame2"

set F4 [expr $WiHi4/$sumWiHi*$WeightTotal]; # lateral load at level 4
set F4_frame1_3 [expr $F4/4.0];
puts "F4_frame1_3 is $F4_frame1_3"
set F4_frame2 [expr $F4/2.0];
puts "F4_frame2 is $F4_frame2"

# Apply traingular load pattern
pattern Plain 2 Linear {
load 121 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0; # node#, FX FY MZ -- representative lateral load at top node
load 122 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 123 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 124 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;

load 321 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 322 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 323 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 324 $F2_frame1_3 0.0 0.0 0.0 0.0 0.0;

load 221 $F2_frame2 0.0 0.0 0.0 0.0 0.0;
load 222 $F2_frame2 0.0 0.0 0.0 0.0 0.0;
load 223 $F2_frame2 0.0 0.0 0.0 0.0 0.0;
load 224 $F2_frame2 0.0 0.0 0.0 0.0 0.0;

load 131 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 132 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 133 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 134 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;

load 331 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 332 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 333 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 334 $F3_frame1_3 0.0 0.0 0.0 0.0 0.0;

load 231 $F3_frame2 0.0 0.0 0.0 0.0 0.0;
load 232 $F3_frame2 0.0 0.0 0.0 0.0 0.0;
load 233 $F3_frame2 0.0 0.0 0.0 0.0 0.0;
load 234 $F3_frame2 0.0 0.0 0.0 0.0 0.0;

load 141 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 142 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 143 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 144 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;

load 341 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 342 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 343 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;
load 344 $F4_frame1_3 0.0 0.0 0.0 0.0 0.0;

load 241 $F4_frame2 0.0 0.0 0.0 0.0 0.0;
load 242 $F4_frame2 0.0 0.0 0.0 0.0 0.0;
load 243 $F4_frame2 0.0 0.0 0.0 0.0 0.0;
load 244 $F4_frame2 0.0 0.0 0.0 0.0 0.0;

}

# displacement parameters
set IDctrlNode 241; # node where disp is read for disp control
set IDctrlDOF 1; # degree of freedom read for disp control (1 = x displacement)
set Dmax [expr 0.04*$Y4]; # maximum displacement of pushover: 10% roof drift
set Dincr [expr 0.01]; # displacement increment

# analysis commands
constraints Plain; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization)
#system BandGeneral; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
system UmfPack
test NormUnbalance 1.0e-6 500; # tolerance, max iterations
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # use displacement-controlled analysis
analysis Static; # define type of analysis: static for pushover
set Nsteps [expr int($Dmax/$Dincr)];# number of pushover analysis steps
analyze $Nsteps
#set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered

puts "Pushover complete"; # display this message in the command window

wipe all;

Post Reply