Page 1 of 1

IDA code

Posted: Wed Feb 17, 2016 2:04 am
by anitha
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

Re: IDA code

Posted: Wed Feb 17, 2016 10:33 am
by fmk
this is not an IDA scrpt, it could be the basis of one in that it checks for certain limit states. it does not however do multiple analysis changing the mag of the acceleration record for each analysis.

Re: IDA code

Posted: Wed Feb 17, 2016 9:00 pm
by anitha
Dear fmk,
Thank you for your reply.Can u please share with me the IDA script, Which can perform IDA [IM as PGA].
Initially I tried with the below mentioned scripts to perform IDA with available nine EQ ground motion datas and i'm not ok with results which obtained.
In the folder Ex1.5_story_building
1)GMfiles directory (Include Uttarkashi.AT2 file)
2)BuildRCrecSection.tcl
3)Ex.Frame2D.build.InelasticFiberRCSection.tcl
4)Ex.Frame2D.analyze.Dynamic.EQ.Uniform.tcl
5)LibAnalysisDynamic.EQ.Uniform.tcl
6)LibMaterialRC.tcl
7)LibUnits.tcl
8)OpenSees.exe
For Each EQ scaling factor[0.25 to collapse point(PGA)] varied in the script and run.

Later generated the IDA.tcl script sent above and converted EQ file to text file. And used for Analysis.
Sir please suggest me what could be the right way to perform IDA.
Thanks
Regards,
Anitha

Re: IDA code

Posted: Mon Oct 29, 2018 7:10 am
by parasismique
anitha, please.
Can you share the IDA script. I had the same problem?

I appriciate your help.

Hayet BOUAZZA.

Re: IDA code

Posted: Mon Aug 10, 2020 11:29 pm
by ahmadbsr
parasismique wrote:
Mon Oct 29, 2018 7:10 am
anitha, please.
Can you share the IDA script. I had the same problem?

I appriciate your help.

Hayet BOUAZZA.
Did you get it ? it is my problem too.