pushover analysis

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

Moderators: silvia, selimgunay, Moderators

Post Reply
sualim
Posts: 27
Joined: Tue Jul 29, 2014 9:37 pm
Location: yonsei university

pushover analysis

Post by sualim »

hi I built up the 2D RC frame lumped plastic model

But I can not the pushover analysis

the warning massage is below

T1 = 0.9743 s
T2 = 0.3329 s
Model Built
Running Pushover...
WARNING: CTestNormDispIncr::test<> - failed to converge
after: 20 iterations
NewtnRaphson::solveCurrentStep<> -the ConvergenceTest object failed in test<>
StaticAnalysis::analyze<> - the Algorithm failed at iteration: 23426 with domain at load factor 14.6941
OpenSees > analyze failed, returned:-3 error flag
Trying Newton with Initial Tangent ..
can't read "TestType": no such variable while executing

I don't know how can I fix it..
plz give me some comment
gor
Posts: 34
Joined: Wed Dec 07, 2011 12:07 am
Location: Pavia, Italy

Re: pushover analysis

Post by gor »

You will need to post the analysis part of your code before anyone can really help you.

But from what you have written it looks like you have a condition to switch to the "Newton -initial" algorithm if the Newton Raphson one fails. But it looks like you didn't define a convergence test type for the second algorithm.
sualim
Posts: 27
Joined: Tue Jul 29, 2014 9:37 pm
Location: yonsei university

Re: pushover analysis

Post by sualim »

Thank u for reple

Attached the analysis part below

The building is 6 stories and 6bays.






set analysisType "pushover"
if {$analysisType == "pushover"} {
set dataDir Concentrated-Pushover-Output
file mkdir $dataDir
}

############################################################################
# Eigenvalue Analysis
############################################################################
set pi [expr 2.0*asin(1.0)]
set nEigenI 1
set nEigenJ 2
set lambdaN [eigen [expr $nEigenJ]]
set lambdaI [lindex $lambdaN [expr 0]]
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]
set w1 [expr pow($lambdaI,0.5)]
set w2 [expr pow($lambdaJ,0.5)]
set T1 [expr 2.0*$pi/$w1]
set T2 [expr 2.0*$pi/$w2]
puts "T1 = $T1 s"
puts "T2 = $T2 s"


############################################################################
# Gravity Loads & Gravity Analysis
############################################################################
# apply gravity loads
#command: pattern PatternType $PatternID TimeSeriesType
pattern Plain 101 Constant {
# point loads on frame column nodes
load 12 0.000000 -66105.600000 0.000000
load 22 0.000000 -111660.600000 0.000000
load 32 0.000000 -111660.600000 0.000000
load 42 0.000000 -111660.600000 0.000000
load 52 0.000000 -111660.600000 0.000000
load 62 0.000000 -111660.600000 0.000000
load 72 0.000000 -66105.600000 0.000000

load 13 0.000000 -65003.100000 0.000000
load 23 0.000000 -110411.100000 0.000000
load 33 0.000000 -110411.100000 0.000000
load 43 0.000000 -110411.100000 0.000000
load 53 0.000000 -110411.100000 0.000000
load 63 0.000000 -110411.100000 0.000000
load 73 0.000000 -65003.100000 0.000000

load 14 0.000000 -63900.600000 0.000000
load 24 0.000000 -109161.600000 0.000000
load 34 0.000000 -109161.600000 0.000000
load 44 0.000000 -109161.600000 0.000000
load 54 0.000000 -109161.600000 0.000000
load 64 0.000000 -109161.600000 0.000000
load 74 0.000000 -63900.600000 0.000000

load 15 0.000000 -62945.100000 0.000000
load 25 0.000000 -108059.100000 0.000000
load 35 0.000000 -108059.100000 0.000000
load 45 0.000000 -108059.100000 0.000000
load 55 0.000000 -108059.100000 0.000000
load 65 0.000000 -108059.100000 0.000000
load 75 0.000000 -62945.100000 0.000000

load 16 0.000000 -61989.600000 0.000000
load 26 0.000000 -106956.600000 0.000000
load 36 0.000000 -106956.600000 0.000000
load 46 0.000000 -106956.600000 0.000000
load 56 0.000000 -106956.600000 0.000000
load 66 0.000000 -106956.600000 0.000000
load 76 0.000000 -61989.600000 0.000000

load 17 0.000000 -59343.600000 0.000000
load 27 0.000000 -103355.100000 0.000000
load 37 0.000000 -103355.100000 0.000000
load 47 0.000000 -103355.100000 0.000000
load 57 0.000000 -103355.100000 0.000000
load 67 0.000000 -103355.100000 0.000000
load 77 0.000000 -59343.600000 0.000000

}
# Gravity-analysis: load-controlled static analysis
set Tol 1.0e-6; # convergence tolerance for test
constraints Plain # how it handles boundary conditions
numberer RCM # renumber dofs to minimize band-width (optimization)
system BandGeneral # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol 6; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton # use Newtons solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1.0/$NstepGravity]; # load increment
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# maintain constant gravity loads and reset time to zero
loadConst -time 0.0
puts "Model Built"

############################################################################
# Pushover Analysis #
############################################################################
if {$analysisType == "pushover"} {
puts "Running Pushover..."
set Fi1 28543.079407
set Fi2 56387.374116
set Fi3 83532.884125
set Fi4 110149.748319
set Fi5 136152.897255
set Fi6 157604.831065
pattern Plain 200 Linear {
load 12 28543.079407 0 0
load 22 28543.079407 0 0
load 32 28543.079407 0 0
load 42 28543.079407 0 0
load 52 28543.079407 0 0
load 62 28543.079407 0 0
load 72 28543.079407 0 0
load 13 56387.374116 0 0
load 23 56387.374116 0 0
load 33 56387.374116 0 0
load 43 56387.374116 0 0
load 53 56387.374116 0 0
load 63 56387.374116 0 0
load 73 56387.374116 0 0
load 14 83532.884125 0 0
load 24 83532.884125 0 0
load 34 83532.884125 0 0
load 44 83532.884125 0 0
load 54 83532.884125 0 0
load 64 83532.884125 0 0
load 74 83532.884125 0 0
load 15 110149.748319 0 0
load 25 110149.748319 0 0
load 35 110149.748319 0 0
load 45 110149.748319 0 0
load 55 110149.748319 0 0
load 65 110149.748319 0 0
load 75 110149.748319 0 0
load 16 136152.897255 0 0
load 26 136152.897255 0 0
load 36 136152.897255 0 0
load 46 136152.897255 0 0
load 56 136152.897255 0 0
load 66 136152.897255 0 0
load 76 136152.897255 0 0
load 17 157604.831065 0 0
load 27 157604.831065 0 0
load 37 157604.831065 0 0
load 47 157604.831065 0 0
load 57 157604.831065 0 0
load 67 157604.831065 0 0
load 77 157604.831065 0 0
}
# displacement parameters
set IDctrlNode 17; # node where disp is read for disp control
set IDctrlDOF 1; # degree of freedom read for disp control (1 = x displacement)
set HBuilding 18000
set Dincr [expr 0.01]; # displacement increment
set Dmax [expr 0.1*$HBuilding]; # maximum displacement of pushover: 10# analysis commands
constraints Plain # how it handles boundary conditions
numberer RCM # renumber dofs to minimize band-width (optimization)
system BandGeneral # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr 1.0e-6 20 0; # tolerance, max iterations, printFlag
algorithm Newton # use Newtons solution algorithm: updates tangent stiffness at every iteration
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # use displacement-controlled analysis
analysis Static # define type of analysis: static for pushover
set Nsteps [expr int($Dmax/$Dincr)];# number of pushover analysis steps
set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered
if {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts from zero
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
while {$Dstep < 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
set ok [analyze 1 ]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 ]
algorithm $algorithmType
}
}; # end while loop
}; # end if ok !0
puts "Pushover analysis completed!!!"
}
gor
Posts: 34
Joined: Wed Dec 07, 2011 12:07 am
Location: Pavia, Italy

Re: pushover analysis

Post by gor »

Ok at the first if statement for the lateral analysis you switch the algorithm and execute another analysis step. Then you switch the test and algorithm back to the original. But for the test, you have:

test $TestType $Tol $maxNumIter 0

when the variable "$TestType" hasn't been previously defined.
Post Reply