Modal Push Over Analysis

If you have a script you think might be useful to others post it
here. Hopefully we will be able to get the most useful of these incorporated in the manuals.

Moderators: silvia, selimgunay, Moderators

sghanea
Posts: 1
Joined: Fri Nov 18, 2011 2:45 pm
Location: SRBIAU.Tehran
Contact:

Modal Push Over Analysis

Post by sghanea » Mon Dec 05, 2011 1:38 pm

hi guys
dose anybody has a model which is analysed by Modal Push Over method?
if yes,i`ll appreciate him/her for sharing it,

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Sun Jan 08, 2012 10:14 am

hi sghanea
here is an example for a 30 story shear wall for modal pushover analysis. wall is model by using non-linear beam column elements. you can see that the in pattern Plain 2 Linear lateral force (Sn1=m*phi_1) has been applied and then the wall is pushed upto 1% drift. For 2nd and 3rd mode repeat the same process by just changing the Sn2=m*phi_2 and Sn3=m*phi_3.
Hope so it will help you :D



# units: KN, m, sec
wipe; # clear memory of all past model definitions
set val1 [clock seconds];
file mkdir Data; # create data directory
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs

node 1 0 0 ;
node 2 0 3500 ;
node 3 0 7000 ;
node 4 0 10500 ;
node 5 0 14000 ;
node 6 0 17500 ;
node 7 0 21000 ;
node 8 0 24500 ;
node 9 0 28000 ;
node 10 0 31500 ;
node 11 0 35000 ;
node 12 0 38500 ;
node 13 0 42000 ;
node 14 0 45500 ;
node 15 0 49000 ;
node 16 0 52500 ;
node 17 0 56000 ;
node 18 0 59500 ;
node 19 0 63000 ;
node 20 0 66500 ;
node 21 0 70000 ;
node 22 0 73500 ;
node 23 0 77000 ;
node 24 0 80500 ;
node 25 0 84000 ;
node 26 0 87500 ;
node 27 0 91000 ;
node 28 0 94500 ;
node 29 0 98000 ;
node 30 0 101500 ;



puts "Generated - NODES"

fix 1 1 1 1

puts "Generated - RESTRAINTS"



# unconfined concrete
set fc1U -24; # UNCONFINED concrete (todeschini parabolic model), maximum stress
set eps1U -0.003; # strain at maximum strength of unconfined concrete
set fc2U [expr 0.2*$fc1U]; # ultimate stress
set eps2U -0.01; # strain at ultimate stress
set lambda 0.1; # ratio between unloading slope at $eps2 and initial slope $Ec
# tensile-strength properties
set ftU [expr -0.1*$fc1U]; # tensile strength +tension
set Ets [expr $ftU/0.002]; # tension softening stiffness
# -----------

uniaxialMaterial Concrete02 1 $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets; # build cover concrete (unconfined)


# -----------
set Fy 400; # STEEL yield stress
set Es 200000; # modulus of steel
set Bs 0.01; # strain-hardening ratio
set R0 18; # control the transition from elastic to plastic branches
set cR1 0.925; # control the transition from elastic to plastic branches
set cR2 0.15; # control the transition from elastic to plastic branches
uniaxialMaterial Steel02 2 $Fy $Es $Bs $R0 $cR1 $cR2; # build reinforcement material






# FIBER SECTION properties -------------------------------------------------------------
## set some paramaters


section fiberSec 1 {





#patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL


patch quad 1 4 50 0 0 4500 0 4500 310 0 310



# Create the reinforcing fibers
layer straight 2 2 314 80 80 80 230
layer straight 2 2 314 220 80 220 230
layer straight 2 2 314 345 80 345 230
layer straight 2 2 314 470 80 470 230
layer straight 2 2 314 595 80 595 230
layer straight 2 2 314 720 80 720 230
layer straight 2 2 113 845 80 845 230
layer straight 2 2 113 1045 80 1045 230
layer straight 2 2 113 1245 80 1245 230
layer straight 2 2 113 1445 80 1445 230
layer straight 2 2 113 1645 80 1645 230
layer straight 2 2 113 1845 80 1845 230
layer straight 2 2 113 2045 80 2045 230
layer straight 2 2 113 2245 80 2245 230
layer straight 2 2 113 2445 80 2445 230
layer straight 2 2 113 2645 80 2645 230
layer straight 2 2 113 2845 80 2845 230
layer straight 2 2 113 3045 80 3045 230
layer straight 2 2 113 3245 80 3245 230
layer straight 2 2 113 3445 80 3445 230
layer straight 2 2 113 3645 80 3645 230
layer straight 2 2 490 3770 80 3770 230
layer straight 2 2 490 3895 80 3895 230
layer straight 2 2 490 4020 80 4020 230
layer straight 2 2 490 4145 80 4145 230
layer straight 2 2 490 4270 80 4270 230
layer straight 2 2 490 4395 80 4395 230
layer straight 2 2 490 4475 80 4475 230

}



section fiberSec 2 {





#patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL


patch quad 1 4 50 0 0 4500 0 4500 250 0 250



# Create the reinforcing fibers
layer straight 2 2 314 50 50 50 200
layer straight 2 2 314 190 50 190 200
layer straight 2 2 314 315 50 315 200
layer straight 2 2 314 440 50 440 200
layer straight 2 2 200 565 50 565 200
layer straight 2 2 200 690 50 690 200
layer straight 2 2 113 815 50 815 200
layer straight 2 2 113 1035 50 1035 200
layer straight 2 2 113 1255 50 1255 200
layer straight 2 2 113 1475 50 1475 200
layer straight 2 2 113 1695 50 1695 200
layer straight 2 2 113 1915 50 1915 200
layer straight 2 2 113 2135 50 2135 200
layer straight 2 2 113 2355 50 2355 200
layer straight 2 2 113 2575 50 2575 200
layer straight 2 2 113 2795 50 2795 200
layer straight 2 2 113 3015 50 3015 200
layer straight 2 2 113 3235 50 3235 200
layer straight 2 2 113 3455 50 3455 200
layer straight 2 2 113 3675 50 3675 200
layer straight 2 2 314 3800 50 3800 200
layer straight 2 2 314 3925 50 3925 200
layer straight 2 2 314 4050 50 4050 200
layer straight 2 2 314 4175 50 4175 200
layer straight 2 2 490 4300 50 4300 200
layer straight 2 2 490 4445 50 4445 200




}





section fiberSec 3 {





#patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL


patch quad 1 4 50 0 0 4500 0 4500 250 0 250



# Create the reinforcing fibers
layer straight 2 2 314 50 50 50 200
layer straight 2 2 314 190 50 190 200
layer straight 2 2 200 315 50 315 200
layer straight 2 2 200 440 50 440 200
layer straight 2 2 200 565 50 565 200
layer straight 2 2 200 690 50 690 200
layer straight 2 2 113 815 50 815 200
layer straight 2 2 113 1065 50 1065 200
layer straight 2 2 113 1315 50 1315 200
layer straight 2 2 113 1565 50 1565 200
layer straight 2 2 113 1815 50 1815 200
layer straight 2 2 113 2065 50 2065 200
layer straight 2 2 113 2315 50 2315 200
layer straight 2 2 113 2565 50 2565 200
layer straight 2 2 113 2815 50 2815 200
layer straight 2 2 113 3065 50 3065 200
layer straight 2 2 113 3315 50 3315 200
layer straight 2 2 113 3565 50 3565 200
layer straight 2 2 314 3815 50 3815 200
layer straight 2 2 314 3940 50 3940 200
layer straight 2 2 314 4065 50 4065 200
layer straight 2 2 314 4190 50 4190 200
layer straight 2 2 490 4315 50 4315 200
layer straight 2 2 490 4440 50 4440 200



}


section fiberSec 4 {





#patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL


patch quad 1 4 50 0 0 4500 0 4500 250 0 250



# Create the reinforcing fibers
layer straight 2 2 314 50 50 50 200
layer straight 2 2 314 190 50 190 200
layer straight 2 2 200 315 50 315 200
layer straight 2 2 200 440 50 440 200
layer straight 2 2 200 565 50 565 200
layer straight 2 2 200 690 50 690 200
layer straight 2 2 63 815 50 815 200
layer straight 2 2 113 965 50 965 200
layer straight 2 2 113 1115 50 1115 200
layer straight 2 2 113 1265 50 1265 200
layer straight 2 2 113 1415 50 1415 200
layer straight 2 2 113 1565 50 1565 200
layer straight 2 2 113 1715 50 1715 200
layer straight 2 2 113 1865 50 1865 200
layer straight 2 2 113 2015 50 2015 200
layer straight 2 2 113 2165 50 2165 200
layer straight 2 2 113 2315 50 2315 200
layer straight 2 2 113 2465 50 2465 200
layer straight 2 2 113 2615 50 2615 200
layer straight 2 2 113 2765 50 2765 200
layer straight 2 2 113 2915 50 2915 200
layer straight 2 2 113 3065 50 3065 200
layer straight 2 2 113 3215 50 3215 200
layer straight 2 2 113 3365 50 3365 200
layer straight 2 2 113 3515 50 3515 200
layer straight 2 2 113 3665 50 3665 200
layer straight 2 2 314 3815 50 3815 200
layer straight 2 2 314 3940 50 3940 200
layer straight 2 2 314 4065 50 4065 200
layer straight 2 2 314 4190 50 4190 200
layer straight 2 2 490 4315 50 4315 200
layer straight 2 2 490 4440 50 4440 200




}

section fiberSec 5 {





#patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL


patch quad 1 4 50 0 0 4500 0 4500 250 0 250



# Create the reinforcing fibers
layer straight 2 2 200 50 50 50 200
layer straight 2 2 200 190 50 190 200
layer straight 2 2 200 315 50 315 200
layer straight 2 2 200 440 50 440 200
layer straight 2 2 200 565 50 565 200
layer straight 2 2 200 690 50 690 200
layer straight 2 2 63 815 50 815 200
layer straight 2 2 113 990 50 990 200
layer straight 2 2 113 1165 50 1165 200
layer straight 2 2 113 1340 50 1340 200
layer straight 2 2 113 1515 50 1515 200
layer straight 2 2 113 1690 50 1690 200
layer straight 2 2 113 1865 50 1865 200
layer straight 2 2 113 2040 50 2040 200
layer straight 2 2 113 2215 50 2215 200
layer straight 2 2 113 2390 50 2390 200
layer straight 2 2 113 2565 50 2565 200
layer straight 2 2 113 2740 50 2740 200
layer straight 2 2 113 2915 50 2915 200
layer straight 2 2 113 3090 50 3090 200
layer straight 2 2 113 3265 50 3265 200
layer straight 2 2 113 3440 50 3440 200
layer straight 2 2 113 3615 50 3615 200
layer straight 2 2 314 3790 50 3790 200
layer straight 2 2 314 3915 50 3915 200
layer straight 2 2 314 4040 50 4040 200
layer straight 2 2 314 4165 50 4165 200
layer straight 2 2 314 4290 50 4290 200
layer straight 2 2 314 4415 50 4415 200




}


section fiberSec 6 {





#patch quad $matTag $numSubdivIJ $numSubdivJK $yI $zI $yJ $zJ $yK $zK $yL $zL


patch quad 1 4 50 0 0 4500 0 4500 250 0 250



# Create the reinforcing fibers
layer straight 2 2 200 50 50 50 200
layer straight 2 2 200 190 50 190 200
layer straight 2 2 200 315 50 315 200
layer straight 2 2 200 440 50 440 200
layer straight 2 2 200 565 50 565 200
layer straight 2 2 200 690 50 690 200
layer straight 2 2 63 815 50 815 200
layer straight 2 2 113 1015 50 1015 200
layer straight 2 2 113 1215 50 1215 200
layer straight 2 2 113 1415 50 1415 200
layer straight 2 2 113 1615 50 1615 200
layer straight 2 2 113 1815 50 1815 200
layer straight 2 2 113 2015 50 2015 200
layer straight 2 2 113 2215 50 2215 200
layer straight 2 2 113 2415 50 2415 200
layer straight 2 2 113 2615 50 2615 200
layer straight 2 2 113 2815 50 2815 200
layer straight 2 2 113 3015 50 3015 200
layer straight 2 2 113 3215 50 3215 200
layer straight 2 2 113 3415 50 3415 200
layer straight 2 2 113 3615 50 3615 200
layer straight 2 2 314 3815 50 3815 200
layer straight 2 2 314 3940 50 3940 200
layer straight 2 2 314 4065 50 4065 200
layer straight 2 2 314 4190 50 4190 200
layer straight 2 2 314 4315 50 4315 200
layer straight 2 2 314 4440 50 4440 200





}




# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
set ColTransfTag 1; # associate a tag to column transformation
geomTransf Linear $ColTransfTag ;

# element connectivity:
set numIntgrPts 5; # number of integration points for force-based element
element dispBeamColumn 1 1 2 $numIntgrPts 1 $ColTransfTag;
element dispBeamColumn 2 2 3 $numIntgrPts 1 $ColTransfTag;
element dispBeamColumn 3 3 4 $numIntgrPts 2 $ColTransfTag;
element dispBeamColumn 4 4 5 $numIntgrPts 2 $ColTransfTag;
element dispBeamColumn 5 5 6 $numIntgrPts 3 $ColTransfTag;
element dispBeamColumn 6 6 7 $numIntgrPts 4 $ColTransfTag;
element dispBeamColumn 7 7 8 $numIntgrPts 4 $ColTransfTag;
element dispBeamColumn 8 8 9 $numIntgrPts 4 $ColTransfTag;
element dispBeamColumn 9 9 10 $numIntgrPts 5 $ColTransfTag;
element dispBeamColumn 10 10 11 $numIntgrPts 5 $ColTransfTag;
element dispBeamColumn 11 11 12 $numIntgrPts 5 $ColTransfTag;
element dispBeamColumn 12 12 13 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 13 13 14 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 14 14 15 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 15 15 16 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 16 16 17 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 17 17 18 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 18 18 19 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 19 19 20 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 20 20 21 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 21 21 22 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 22 22 23 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 23 23 24 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 24 24 25 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 25 25 26 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 26 26 27 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 27 27 28 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 28 28 29 $numIntgrPts 6 $ColTransfTag;
element dispBeamColumn 29 29 30 $numIntgrPts 6 $ColTransfTag;









puts "Generated - ELEMENTS"

pattern Plain 1 Linear {
load 2 0 -279310.3448 0
load 3 0 -279310.3448 0
load 4 0 -279310.3448 0
load 5 0 -279310.3448 0
load 6 0 -279310.3448 0
load 7 0 -279310.3448 0
load 8 0 -279310.3448 0
load 9 0 -279310.3448 0
load 10 0 -279310.3448 0
load 11 0 -279310.3448 0
load 12 0 -279310.3448 0
load 13 0 -279310.3448 0
load 14 0 -279310.3448 0
load 15 0 -279310.3448 0
load 16 0 -279310.3448 0
load 17 0 -279310.3448 0
load 18 0 -279310.3448 0
load 19 0 -279310.3448 0
load 20 0 -279310.3448 0
load 21 0 -279310.3448 0
load 22 0 -279310.3448 0
load 23 0 -279310.3448 0
load 24 0 -279310.3448 0
load 25 0 -279310.3448 0
load 26 0 -279310.3448 0
load 27 0 -279310.3448 0
load 28 0 -279310.3448 0
load 29 0 -279310.3448 0
load 30 0 -279310.3448 0



}
puts "Generated - LOADS"
#NOTE: unit system;
#force = N;
#length = mm;
#mass = Ton;
#ground motion = G;
#ground motion scale = 9810;

constraints Transformation;
numberer RCM;
system UmfPack;
test NormUnbalance 1.0e-1 200 5
algorithm NewtonLineSearch 0.5
integrator LoadControl 0.1
puts "START : Gravity Load Analysis"
analysis Static
for {set i 1} {$i <= 9} {incr i} {
puts "Step = $i/10"

analyze 1
}




recorder Node -file Data/DFree.out -time -node 30 -dof 1 2 3 disp;

recorder Node -file Data/RBase.out -time -node 1 -dof 1 2 3 reaction;

recorder Element -file Data/ForceColumn.txt -time -ele 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 localForce;

puts "Step = 10/10"
analyze 1
puts "COMPLETED : Gravity Load Analysis"

loadConst -time 0.0

pattern Plain 2 Linear {
load 1 0 0 0 0 0 ;
load 2 0.032627923 0 0 0 0 ;
load 3 0.266232882 0 0 0 0 ;
load 4 0.886711781 0 0 0 0 ;
load 5 2.070090893 0 0 0 0 ;
load 6 3.976356713 0 0 0 0 ;
load 7 6.754802549 0 0 0 0 ;
load 8 10.54169796 0 0 0 0 ;
load 9 15.45740983 0 0 0 0 ;
load 10 21.61421658 0 0 0 0 ;
load 11 29.10876817 0 0 0 0 ;
load 12 38.0260617 0 0 0 0 ;
load 13 48.4401269 0 0 0 0 ;
load 14 60.41114723 0 0 0 0 ;
load 15 73.9924515 0 0 0 0 ;
load 16 89.2243448 0 0 0 0 ;
load 17 106.133423 0 0 0 0 ;
load 18 124.7458707 0 0 0 0 ;
load 19 145.0686796 0 0 0 0 ;
load 20 167.1103494 0 0 0 0 ;
load 21 190.867864 0 0 0 0 ;
load 22 216.3317642 0 0 0 0 ;
load 23 243.4898487 0 0 0 0 ;
load 24 272.3253923 0 0 0 0 ;
load 25 302.8178312 0 0 0 0 ;
load 26 334.950303 0 0 0 0 ;
load 27 368.6974457 0 0 0 0 ;
load 28 404.046921 0 0 0 0 ;
load 29 440.9759716 0 0 0 0 ;
load 30 479.47788 0 0 0 0 ;



}

set BuildingHeight 101500;
set TargetRoofDispInPercent 1;
set dU [expr 0.01/100*$BuildingHeight];
set nStep [expr int($TargetRoofDispInPercent*$BuildingHeight/100/$dU)];
set controlNode 30;
set story1node 2;
set story2node 6;
set story1Height 3200;
set ddirection 1;
set iterno 4000;
constraints Transformation;
numberer RCM;
system UmfPack;
integrator DisplacementControl $controlNode $ddirection $dU;
puts "START : Push Over Analysis";
analysis Static;

proc callAlgo {x nstep step drift} {
if {$x == 1} {
puts "";
puts "Step = $step/$nstep, Target drift (%) = $drift -- Trying KrylovNewton ..";
puts "";
algorithm KrylovNewton;
set ok [analyze 1];
}
if {$x == 2} {
puts "";
puts "Step = $step/$nstep, Target drift (%) = $drift -- Trying NewtonLineSearch ..";
puts "";
algorithm NewtonLineSearch 0.8;
set ok [analyze 1];
}
if {$x == 3} {
puts "";
puts "Step = $step/$nstep, Target drift (%) = $drift -- Trying Newton with Initial Tangent..";
puts "";
algorithm Newton -initial;
set ok [analyze 1]
}
return $ok;
}

for {set i 1} {$i <= $nStep} {incr i} {
set drift [expr $dU*$i*100/$BuildingHeight]
test NormDispIncr 1.0e-5 $iterno 5;
#set ok -7;
#set j 0;
#while {$ok == -7} {
# set j [expr $j+1];
# set ok [callAlgo $j $nStep $i $drift];
# if {$j == 3 && $ok < 0} {
# set ok -8;
# };
#}
#if {$ok == -8} {
# test NormDispIncr 1.0e-5 [expr 2*$iterno] 5;
# puts "";
# puts "Divided into 2 small steps";
# puts "";
# callAlgo 1 $nStep "$i.1" [expr (($i-1)*$dU + $dU/2)*100/$BuildingHeight];
# callAlgo 1 $nStep "$i.2" [expr $drift];
#}
#if {$ok < 0} {
# test NormDispIncr 1.0e-5 [expr 2*$iterno] 5;
# puts "Number of iterations = [expr 2*$iterno]";
# callAlgo 1 $nStep $i $drift;
#}
callAlgo 1 $nStep $i $drift;
set val2 [clock seconds]
set elapsedTime [expr $val2-$val1]
set days [expr int($elapsedTime/86400)]
set hours [expr int(($elapsedTime-$days*86400)/3600)]
set minutes [expr int(($elapsedTime- $days*86400-$hours*3600)/60)]
set seconds [expr int($elapsedTime- $days*86400-$hours*3600-$minutes*60)]
set curDrift [expr $dU*$i*100/$BuildingHeight]
puts "";
puts "Step = $i/$nStep, To = [clock format $val1 -format "%I:%M:%S %P"] ,Tc = [clock format $val2 -format "%I:%M:%S %P"]"
puts "Current Roof Drift (%) = $curDrift, Target Rooft Drift(%) = $TargetRoofDispInPercent"
set Node1Disp [nodeDisp $story1node $ddirection]
set Node2Disp [nodeDisp $story2node $ddirection]
set Story1Drift [expr ($Node2Disp-$Node1Disp)*100/$story1Height]
puts "1st-Drift (%) = $Story1Drift";
puts "";
puts "==================================================";
if {$Story1Drift > 100} {
puts "";
return "Either the building fails or the program fails";
}
}

puts "COMPLETED :"
puts "Total Time Required --> $days days $hours hours $minutes minutes $seconds seconds"

nullroad22
Posts: 1
Joined: Sat Dec 31, 2011 7:37 am

Re: Modal Push Over Analysis

Post by nullroad22 » Tue Feb 28, 2012 1:35 pm

Thanks for your example...... :-)

stonerobbin
Posts: 1
Joined: Thu Jun 07, 2012 11:14 pm
Contact:

Re: Modal Push Over Analysis

Post by stonerobbin » Thu Jun 07, 2012 11:16 pm

Thanks for taking time for sharing this post...i found a lot of informative stuff in your post keep it up thank you.

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Thu Jun 07, 2012 11:23 pm

you are more than welcome :)

MDSmith526
Posts: 48
Joined: Sat Mar 13, 2010 4:13 pm
Location: USACE

Re: Modal Push Over Analysis

Post by MDSmith526 » Sun Feb 10, 2013 11:04 am

Am I incorrect or does this script require you to know the mode shapes beforehand? You can easily have opensees work in loops to find your mode shapes and generate load patterns for however many modes you want without having to do a pre-analysis. Search the site for modal time history analysis to see a script with similar concepts for a modal time history analysis. The parts at the top which solve for the eigenvectors and modal particpation factors will be the same, just use tcl commands to generate the loads and remove loadpattern each loop, remove recorders, redefine file names, and keep going until you are happy.
Matthew D Smith, PhD, PE
Research Civil Engineer
Information Technology Laboratory
Engineering Research and Development Center
US Army Corps of Engineers
Vicksburg, MS

civil
Posts: 54
Joined: Sat May 25, 2013 3:44 am

Re: Modal Push Over Analysis

Post by civil » Thu Jun 13, 2013 11:52 am

dear civilengr_tahir, thanks for helpful example
could you please explain how does you model the SDOF system (after idealized pushover curve as bilinear model)?

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Thu Jun 13, 2013 12:57 pm

You are welcome..Actually the choice of SDOF Idealized mode depends upon the hysterics behavior of your structure..U have to run Reversed cyclic Pushover analysis to get an idea of hysterics response of ur structure..By looking at hysterics response if u thinks that bilinear model is suitable for that specific building go for that..If u thinks its flage shaped then go flage shaped model. Accuracy of your results will greatly depends upon the choice of SDOF model..I hope this will help you,Dont hesitate to ask more questions :)

civil
Posts: 54
Joined: Sat May 25, 2013 3:44 am

Re: Modal Push Over Analysis

Post by civil » Thu Jun 13, 2013 10:57 pm

Thanks dear civilengr_tahir
i want to know how did you model the SDOF system. what element did you use? zeroLength element or ...?
could you please write the code here?
Regards

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Thu Jun 13, 2013 11:55 pm

I have use uni-axial hysteresis material for SDOF. Then I have assigned the Fsn/Ln - Dn relationship to a zerolength element with unit mass..here is the code,let me if it is not working..

# units: N, m, sec
wipe; # clear memory of all past model definitions
set val1 [clock seconds];
file mkdir Data; # create data directory
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs

# nodal coordinates:
node 1 0 0 ;
node 2 0 0 ;

puts "Generated - NODES"
fix 1 1 1 1


equalDOF 1 2 2 3;

mass 2 1 1.00E-09 1.00E-09

# Define Fsn/Ln - Dn relationship

#uniaxialMaterial Hysteretic $matTag $s1p $e1p $s2p $e2p <$s3p $e3p> $s1n $e1n $s2n $e2n <$s3n $e3n> $pinchX $pinchY $damage1 $damage2 <$beta>

set matTag 1;

set y1 1283.03;
set x1 193.72;

set y2 1464.5;
set x2 1243.9;


set ny1 -1283.03;
set nx1 -193.72;

set ny2 -1464.5;
set nx2 -1243.9;



set pinchX 0;
set pinchY 0;

set damage1 0.0;

set damage2 0.0;

set beta 0.5;

uniaxialMaterial Hysteretic $matTag $y1 $x1 $y2 $x2 $ny1 $nx1 $ny2 $nx2 $pinchX $pinchY $damage1 $damage2 $beta




element zeroLength 1 1 2 -mat 1 -dir 1

pattern Plain 1 Linear {

load 2 0 0 0











}
#NOTE: unit system;
#force = N;
#length = mm;
#mass = Ton;
#ground motion = G;
#ground motion scale = 9810;


constraints Transformation;
numberer RCM;
system BandGeneral;
test NormUnbalance 1.0e-3 200 5
algorithm KrylovNewton
integrator LoadControl 0.1
puts "START : Gravity Load Analysis"
analysis Static
for {set i 1} {$i <= 9} {incr i} {
puts "Step = $i/10"

analyze 1
}


recorder Element -file Data/SpringForce1D.txt -time -ele 1 force;
recorder Element -file Data/SpringDispm1D.txt -time -ele 1 deformation;

puts "Step = 10/10"
analyze 1
puts "COMPLETED : Gravity Load Analysis"

loadConst -time 0.0

set GMdirectionX 1;

set GMfileX "ELL.txt"

set DtAnalysis [expr 0.005];
set TmaxAnalysis [expr 40];
set dt 0.005;
set GMfatt 34335;
set AccelSeriesX "Series -dt $dt -filePath $GMfileX -factor $GMfatt";

set xDamp 0.02
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 0.0;
set KinitSwitch 1.0;
set omegaI 4.18;
set omegaJ 5.18;
set alphaM [expr $MpropSwitch*$xDamp*(2.0*$omegaI*$omegaJ)/($omegaI+$omegaJ)];
set betaKcurr [expr $KcurrSwitch*2.0*$xDamp/($omegaI+$omegaJ)];
set betaKcomm [expr $KcommSwitch*2.0*$xDamp/($omegaI+$omegaJ)];
set betaKinit [expr $KinitSwitch*2.0*$xDamp/($omegaI+$omegaJ)];
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;

constraints Transformation;
numberer RCM;
system BandGeneral;
test NormDispIncr 1.0e-3 50 5
algorithm NewtonLineSearch 0.5
integrator Newmark 0.5 0.25
analysis Transient

pattern UniformExcitation 2 $GMdirectionX -accel $AccelSeriesX;



puts "START : Dynamic Ground Motion Analysis (NDA)"
for {set i 1} { $i <= $Nsteps } { incr i } {
analyze 1 $DtAnalysis
set val2 [clock seconds]
puts "t= [format %6.3f [expr $DtAnalysis*$i]] Secs, Start Time=[clock format $val1 -format "%D %X %P"] ,Current Time= [clock format $val2 -format "%D %X %P"] "
}
set elapsedTime [expr $val2-$val1]
set days [ expr int($elapsedTime/86400)]
set hours [expr int(($elapsedTime-$days*86400)/3600)]
set minutes [expr int(($elapsedTime- $days*86400-$hours*3600)/60)]
set seconds [expr int($elapsedTime- $days*86400-$hours*3600-$minutes*60)]
puts "COMPLETED : Dynamic Ground Motion Analysis (White Noise)"
puts "Total Time Required --> $days days $hours hours $minutes minutes $seconds seconds"

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Thu Jun 13, 2013 11:59 pm

you can easily modify this code, if you want to use bi-linear relationship,just replace the uni-axial hysteretic material with a bi-linear one

civil
Posts: 54
Joined: Sat May 25, 2013 3:44 am

Re: Modal Push Over Analysis

Post by civil » Fri Jun 14, 2013 12:35 am

thanks a lot, it was very useful. :D
but a question:
there is no gravity loading, so is the following part necessary?


pattern Plain 1 Linear {

load 2 0 0 0











}
#NOTE: unit system;
#force = N;
#length = mm;
#mass = Ton;
#ground motion = G;
#ground motion scale = 9810;


constraints Transformation;
numberer RCM;
system BandGeneral;
test NormUnbalance 1.0e-3 200 5
algorithm KrylovNewton
integrator LoadControl 0.1
puts "START : Gravity Load Analysis"
analysis Static
for {set i 1} {$i <= 9} {incr i} {
puts "Step = $i/10"

analyze 1
}


recorder Element -file Data/SpringForce1D.txt -time -ele 1 force;
recorder Element -file Data/SpringDispm1D.txt -time -ele 1 deformation;

puts "Step = 10/10"
analyze 1
puts "COMPLETED : Gravity Load Analysis"

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Fri Jun 14, 2013 2:15 am

welcome :) there is no need to apply any axial load for SDOF..u can remove that OR even if u keep it zero it doesnt matter

civil
Posts: 54
Joined: Sat May 25, 2013 3:44 am

Re: Modal Push Over Analysis

Post by civil » Fri Jun 14, 2013 11:18 am

Thanks dear civilengr_tahir
and some questions:
1- did you do adaptive pushover analysis too?
2- how can i select the behavior of material ( bi-linear, hysteretic material or ...). you explain it but i want some more information if you want.
3- how can i run Reversed cyclic Pushover analysis? Which command should i add to code?
Thanks in advance

civilengr_tahir
Posts: 26
Joined: Sat Aug 15, 2009 6:42 am
Location: Bangkok
Contact:

Re: Modal Push Over Analysis

Post by civilengr_tahir » Fri Jun 14, 2013 11:31 am

No I did not try Adaptive pushover,I did Modal pushover instead. As I explained to u earlier, the material or hysteretic behavior of SDOF depends upon the response of Multimode full structure.. first u have to run a reversed cyclic Pushover analysis then after examining the hystertic loops it will be clear whether a bilinear is more suitable or any other material behavior. Thats my e-mail address civilengr_tahir@hotmail, u can send me an e-mail, if u need more information..

Post Reply