How can period in nonlinear dynamic analysis?

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

Moderators: silvia, selimgunay, Moderators

talebian.s.e
Posts: 72
Joined: Fri Jul 10, 2009 3:05 am
Location: Griffith University

Re: How can period in nonlinear dynamic analysis?

Post by talebian.s.e »

Actually, I just can calculate the period at the beginning and at the end of pushover analysis. Would you please help me how to calculate the period at each step during the pushover analysis?
mhscott
Posts: 880
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: How can period in nonlinear dynamic analysis?

Post by mhscott »

Put your pushover analysis in a loop and compute eigenvalues in the loop

for {set i 1} {$i <= $Nsteps} {incr i} {
set ok [analyze 1]
if {$ok < 0} {
break
}
puts [eigen $numModes]
}
talebian.s.e
Posts: 72
Joined: Fri Jul 10, 2009 3:05 am
Location: Griffith University

Re: How can period in nonlinear dynamic analysis?

Post by talebian.s.e »

Dear mhscott,

Thanks for your kind attention. I put pushover analysis in a loop but got irrational results.

The following is my pushover algorithm:

set Fj5 [expr 5000*$N];
set Fj4 [expr 4000*$N];
set Fj3 [expr 3000*$N];
set Fj2 [expr 2000*$N];
set Fj1 [expr 1000*$N];

set Dmax [expr 0.05*$LBuilding ]; # maximum displacement of pushover. push to 10% drift.
set Dincr [expr 0.001*$LBuilding ]; # displacement increment. you want this to be small, but not too small to slow analysis

# -- STATIC PUSHOVER/CYCLIC ANALYSIS
# create load pattern for lateral pushover load coefficient when using linear load pattern


pattern Plain 200 Linear { # define load pattern
load 5 $Fj1 0 0
load 9 $Fj2 0 0
load 13 $Fj3 0 0
load 17 $Fj4 0 0
load 21 $Fj5 0 0

}; # end load pattern

# ----------- set up analysis parameters
set Tol 1.0e-4; # convergence tolerance for test
constraints Transformation; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
system BandGeneral ; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol 20 ; # 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
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr;
analysis Static
# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set fmt1 "%s Pushover analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM analysis
for {set i 1} {$i <= $Nsteps} {incr i} {
set ok [analyze 1]
if {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set Dstep 0.0;
set ok 0
while {$Dstep <= 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr $controlDisp/$Dmax]
set ok [analyze 1 ]
# if analysis fails, we try some other stuff
# performance is slower inside this loop global maxNumIterStatic; # max no. of iterations performed before "failure to converge" is ret'd
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr $Tol 500 0
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
}; # end while loop
}; # end if ok !0
if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] "milimeter"]
} else {
puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] "milimeter" ]
}
puts [eigen 1]
}
# -----------------------------------------------------------------------------------------------------
Post Reply