IDA code

This forum is for issues related to parallel processing
and OpenSees using the new interpreters OpenSeesSP and OpenSeesMP

IDA code

Postby anitha » 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
anitha
 
Posts: 26
Joined: Mon Jun 16, 2014 12:36 am
Location: cdac

Re: IDA code

Postby fmk » Wed Feb 17, 2016 10:33 am

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.
fmk
Site Admin
 
Posts: 5860
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley

Re: IDA code

Postby anitha » Wed Feb 17, 2016 9:00 pm

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
anitha
 
Posts: 26
Joined: Mon Jun 16, 2014 12:36 am
Location: cdac

Re: IDA code

Postby parasismique » 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.
parasismique
 
Posts: 22
Joined: Tue Dec 13, 2016 7:14 am
Location: University of Tlemcen-Algeria


Return to Parallel Processing

Who is online

Users browsing this forum: No registered users and 1 guest