IDA code
Posted: Wed Feb 17, 2016 2:04 am
Dear All,
Anyone please suggest me below IDA.tcl is relevant to perform Incremental Dynamic Analysis as PGA [IM]. I tried to analyze the five-story 2D building Frame model but i'm not getting yield point while plotting the graph.
Once the collapse prevention point is obtained immediately ended the analysis and noted max. inter-story drift in each IM and plotted the graph for it.
why in the code we have predefined the limit of IO and CP
# Incremental Dynamic Analysis (IDA) 2 Dimentional
######################################################################
set Step 50
for {set i 1} {$i<=$Step} {incr i 1} {
wipe
wipeAnalysis
model Basic -ndm 2
file mkdir IDArecorder2D/[expr $i/10.]pga
source model5story.tcl ; #puts your model
wipeAnalysis
set n 5 ;
constraints Plain
numberer Plain
system BandGeneral
test NormDispIncr 1.e-8 6
algorithm Newton
integrator LoadControl [expr 1./$n]
analysis Static
analyze $n
loadConst -time 0.0
puts "Dynamic Analysis is Don"
source recorder2D.tcl ; #puts your recorder
set txt R1
set dt 0.01 ;# dt of accel
set Time 40.
set Sa 0.34095
set C 0.24038459 ;#------------>factor for convert 1g
set ScaleFactor [expr 1./$C] ;#ScaleFactor
set g 9.806
set accel "Series -dt $dt -filePath $txt.txt -factor [expr ($i./10)*$g] (PGA)"
puts "$accel"
pattern UniformExcitation 3 1 -accel $accel
################################################################
set damp 0.05 ;# damping ratio
set modex 1 ;#please set mode 1
set modexx 4 ;#please set 90%*mode 1
set xDamp $damp;
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI $modex;
set nEigenJ $modexx;
set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; # eigenvalue mode i
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; # M-prop. damping; D = alphaM*M
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # current-K; +beatKcurr*KCurrent
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # last-committed K; +betaKcomm*KlastCommitt
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # initial-K; +beatKinit*Kini
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;
################################################################
set txt [open IDArecorder2D/[expr $i/10.]pga/PerformanceLevelReport.txt w+]
puts "groundmotion start!.Time:[getTime]"
constraints Transformation
numberer RCM
system UmfPack
test EnergyIncr 1.0e-5 200
algorithm NewtonLineSearch
integrator Newmark 0.5 0.25
analysis Transient
for {set a 1} {$a<=[expr $Time/$dt]} {incr a} {
analyze 1 $dt
#performance level
#set IO 0.02 ; #Steel Structure
#set CP 0.1 ; #Steel Structure
set IO [expr 0.5/100] ; #Concrete Structure
set CP [expr 2.5/100] ; #Concrete Structure
############################################################
#story 1
set dir 1
set Hight1 3.
set story 1
set xi [expr abs([nodeDisp 1 $dir])]; #node i
set xj [expr abs([nodeDisp 7 $dir])]; #node j
set H $Hight1 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 2
set Hight2 3.
set story 2
set xi [expr abs([nodeDisp 7 $dir])]; #node i
set xj [expr abs([nodeDisp 13 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 3
set Hight2 3.
set story 3
set xi [expr abs([nodeDisp 13 $dir])]; #node i
set xj [expr abs([nodeDisp 19 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 4
set Hight2 3.
set story 4
set xi [expr abs([nodeDisp 19 $dir])]; #node i
set xj [expr abs([nodeDisp 25 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 5
set Hight2 3.
set story 5
set xi [expr abs([nodeDisp 25 $dir])]; #node i
set xj [expr abs([nodeDisp 31 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
}
puts "groundmotion [expr $i./10]pga done!.End Time:[getTime]"
}
Thanks
Regards,
Anitha
Anyone please suggest me below IDA.tcl is relevant to perform Incremental Dynamic Analysis as PGA [IM]. I tried to analyze the five-story 2D building Frame model but i'm not getting yield point while plotting the graph.
Once the collapse prevention point is obtained immediately ended the analysis and noted max. inter-story drift in each IM and plotted the graph for it.
why in the code we have predefined the limit of IO and CP
# Incremental Dynamic Analysis (IDA) 2 Dimentional
######################################################################
set Step 50
for {set i 1} {$i<=$Step} {incr i 1} {
wipe
wipeAnalysis
model Basic -ndm 2
file mkdir IDArecorder2D/[expr $i/10.]pga
source model5story.tcl ; #puts your model
wipeAnalysis
set n 5 ;
constraints Plain
numberer Plain
system BandGeneral
test NormDispIncr 1.e-8 6
algorithm Newton
integrator LoadControl [expr 1./$n]
analysis Static
analyze $n
loadConst -time 0.0
puts "Dynamic Analysis is Don"
source recorder2D.tcl ; #puts your recorder
set txt R1
set dt 0.01 ;# dt of accel
set Time 40.
set Sa 0.34095
set C 0.24038459 ;#------------>factor for convert 1g
set ScaleFactor [expr 1./$C] ;#ScaleFactor
set g 9.806
set accel "Series -dt $dt -filePath $txt.txt -factor [expr ($i./10)*$g] (PGA)"
puts "$accel"
pattern UniformExcitation 3 1 -accel $accel
################################################################
set damp 0.05 ;# damping ratio
set modex 1 ;#please set mode 1
set modexx 4 ;#please set 90%*mode 1
set xDamp $damp;
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI $modex;
set nEigenJ $modexx;
set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; # eigenvalue mode i
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; # M-prop. damping; D = alphaM*M
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # current-K; +beatKcurr*KCurrent
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # last-committed K; +betaKcomm*KlastCommitt
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # initial-K; +beatKinit*Kini
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;
################################################################
set txt [open IDArecorder2D/[expr $i/10.]pga/PerformanceLevelReport.txt w+]
puts "groundmotion start!.Time:[getTime]"
constraints Transformation
numberer RCM
system UmfPack
test EnergyIncr 1.0e-5 200
algorithm NewtonLineSearch
integrator Newmark 0.5 0.25
analysis Transient
for {set a 1} {$a<=[expr $Time/$dt]} {incr a} {
analyze 1 $dt
#performance level
#set IO 0.02 ; #Steel Structure
#set CP 0.1 ; #Steel Structure
set IO [expr 0.5/100] ; #Concrete Structure
set CP [expr 2.5/100] ; #Concrete Structure
############################################################
#story 1
set dir 1
set Hight1 3.
set story 1
set xi [expr abs([nodeDisp 1 $dir])]; #node i
set xj [expr abs([nodeDisp 7 $dir])]; #node j
set H $Hight1 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 2
set Hight2 3.
set story 2
set xi [expr abs([nodeDisp 7 $dir])]; #node i
set xj [expr abs([nodeDisp 13 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 3
set Hight2 3.
set story 3
set xi [expr abs([nodeDisp 13 $dir])]; #node i
set xj [expr abs([nodeDisp 19 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 4
set Hight2 3.
set story 4
set xi [expr abs([nodeDisp 19 $dir])]; #node i
set xj [expr abs([nodeDisp 25 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
#story 5
set Hight2 3.
set story 5
set xi [expr abs([nodeDisp 25 $dir])]; #node i
set xj [expr abs([nodeDisp 31 $dir])]; #node j
set H $Hight2 ; #interstory Hight
if {[expr ($xj-$xi)/$H]>= $IO} {
set story $story
#puts "Immediate Occupancy Point in Story $story Time=[getTime]"
puts $txt "Immediate Occupancy Point in Story $story Time=[getTime]"
}
if {[expr ($xj-$xi)/$H]>= $CP} {
puts "Collapse Prevention Point in Story $story Time=[getTime]"
puts $txt "Collapse Prevention Point in Story $story Time=[getTime]"
close $txt
break
}
############################################################
}
puts "groundmotion [expr $i./10]pga done!.End Time:[getTime]"
}
Thanks
Regards,
Anitha