convergence problem in static 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
sia_perestij
Posts: 5
Joined: Sun May 16, 2010 5:09 am
Location: urmia university

convergence problem in static analysis !

Post by sia_perestij »

Hi. I want to perform a nonlinear dynamic analysis on a 3D concrete building. I use nonlinearBeamColumn. at the first step when i try to do the static analisys , it fails to converge and i see this message:

..................WARNING: CTestEnergyIncr::test() - failed to converge
..................after: 6 iterations
..................NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
..................StaticAnalysis::analyze() - the Algorithm failed at iteration: 3 with domain at
..................load factor 0.4
..................OpenSees > analyze failed, returned: -3 error flag

I also tried DispBeamColumn, it didn't give any errors but when I checked out the analysis results , it just had run the analisys for 6 steps ( not for 10). the code is written below. could anybody help me with this?

#------------------------------------------------------------------------------------------------------------------------------------------------------
# 3D concrete building : 7 story (Y) , 5 bays in x direction , 4 bays in z direction
# first story height= 3.2m
# other stories height=3m
# bay lenght in x direction = 5m --- bay lenght in z direction = 6m
# 60 kN/m2 dead load and 20 kN/m2 live load
# g=9.806 m/s2
# units : kN , m , s
#-----------------------------------------------------------------------------------------------------------------------------------------------------

# -----------------------------setup---------------------------------

wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir Data; # set up name of data directory
file mkdir $dataDir; # create data directory

# ----------------------frame configuration--------------------------

set Nstory 7; # number of stories above ground level
set Nbayx 5; # number of bays in X direction
set Nbayz 4; # number of bays in Z direction
puts "Number of Stories in Y: $Nstory Number of bays in X: $Nbayx Number of bays in Z: $Nbayz"

# -------------------define NODAL COORDINATES------------------------

for {set x 1} {$x<=[expr $Nbayx+1]} {incr x 1} {
set IDx [expr ($x-1)*40]
for {set z 1} {$z<=[expr $Nbayz+1]} {incr z 1} {
set IDz [expr ($z-1)*8]
for {set y 1} {$y<=[expr $Nstory+1]} {incr y 1} {
set IDnode [expr $IDx+$IDz+$y]
if {$y==1} {
node $IDnode [expr ($x-1)*5] 0 [expr ($z-1)*6] ; #defining nodes in "0" elevation

} else {
node $IDnode [expr ($x-1)*5] [expr 0.2+($y-1)*3] [expr ($z-1)*6] ; #defining nodes in other elevations
}
}
}
}

# ---------------------BOUNDARY CONDITIONS---------------------------

fixY 0.0 1 1 1 1 1 1; # pin all Y=0.0 nodes

# ---------------------define section tags---------------------------

set ColSec50x50tag 1
set ColSec40x40tag 2
set BeamSec40x40tag 3
set BeamSec30x30tag 4
set SecTagTorsion 5
set ColSec50x50 6
set ColSec40x40 7
set BeamSec40x40 8
set BeamSec30x30 9
set Ubig 1e10

# -------------------define section geometry-------------------------

set cover 0.05; # Column cover to reinforcing steel NA.
set numBarscol50 5; # number of longitudinal-reinforcement bars in column. (symmetric top & bot)
set numBarscol40 4
set numBarsint50 3
set numBarsint40 2
set barAreaCol 0.000314 ; # area of longitudinal-reinforcement bars

# ---------------------MATERIAL parameters --------------------------

set IDconcU 1; # material ID tag -- unconfined cover concrete
set IDreinf 2; # material ID tag -- reinforcement

# -------------nominal concrete compressive strength-----------------

set fc -27579; # CONCRETE Compressive Strength (+Tension, -Compression)
set Ec 24855578; # Concrete Elastic Modulus (the term in sqr root needs to be in psi
set Gc 10356491

# ---------------------unconfined concrete---------------------------

set fc1U $fc; # UNCONFINED concrete (todeschini parabolic model), maximum stress
set eps1U -0.002219; # strain at maximum strength of unconfined concrete
set fc2U -21203; # ultimate stress
set eps2U -0.05; # strain at ultimate stress
set lambda 0.1; # ratio between unloading slope at $eps2 and initial slope $Ec

# -----------------tensile-strength properties-----------------------

set ftU 3270; # tensile strength +tension
set Ets [expr $ftU/0.001]; # tension softening stiffness

# ------------------------reinforcing steel--------------------------

set Fy 413686; # STEEL yield stress
set Es 199900000; # modulus of steel
set Bs 0.01; # strain-hardening ratio

# -----------------------material definition-------------------------

uniaxialMaterial Concrete02 $IDconcU $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets; # build cover concrete (unconfined)
uniaxialMaterial Steel01 $IDreinf $Fy $Es $Bs; # build reinforcement material

# -------------------------BEAM section------------------------------

section Elastic $BeamSec40x40tag $Ec 0.16 0.0021 0.0021 $Gc 0.003605; # elastic beam section
section Elastic $BeamSec30x30tag $Ec 0.12 0.00675 0.00657 $Gc 0.001141; # elastic beam section

# -----------------------torsional section---------------------------
uniaxialMaterial Elastic $SecTagTorsion $Ubig

# -------------------FIBER SECTION properties -----------------------
#
# ----------------------symmetric section----------------------------
#
# y
# ^
# |
# --------------------- -- --
# | o o o | | -- cover
# | | |
# | | |
# z <--- | o + o | H
# | | |
# | | |
# | o o o | | -- cover
# --------------------- -- --
# |-------- B --------|
#
#
# ----------------------RC column section50x50-------------------------

set coverY1 [expr 0.5/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ1 [expr 0.5/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set coreY1 [expr $coverY1-$cover]
set coreZ1 [expr $coverZ1-$cover]
set nfY1 5; # number of fibers for concrete in y-direction
set nfZ1 5; # number of fibers for concrete in z-direction
section fiberSec $ColSec50x50tag {; # Define the fiber section
patch quadr $IDconcU $nfZ1 $nfY1 -$coverY1 $coverZ1 -$coverY1 -$coverZ1 $coverY1 -$coverZ1 $coverY1 $coverZ1; # Define the concrete patch
layer straight $IDreinf $numBarscol50 $barAreaCol -$coreY1 $coreZ1 -$coreY1 -$coreZ1; # top layer reinfocement
layer straight $IDreinf $numBarscol50 $barAreaCol $coreY1 $coreZ1 $coreY1 -$coreZ1; # bottom layer reinforcement
layer straight $IDreinf $numBarsint50 $barAreaCol -$coreY1 $coreZ1 $coreY1 $coreZ1; # top layer reinfocement
layer straight $IDreinf $numBarsint50 $barAreaCol -$coreY1 -$coreZ1 $coreY1 -$coreZ1; # bottom layer reinforcement
};# end of fibersection definition

# ----------------------RC column section40x40-------------------------

set coverY2 [expr 0.4/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ2 [expr 0.4/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set coreY2 [expr $coverY2-$cover]
set coreZ2 [expr $coverZ2-$cover]
set nfY2 4; # number of fibers for concrete in y-direction
set nfZ2 4; # number of fibers for concrete in z-direction
section fiberSec $ColSec40x40tag {; # Define the fiber section
patch quadr $IDconcU $nfZ2 $nfY2 -$coverY2 $coverZ2 -$coverY2 -$coverZ2 $coverY2 -$coverZ2 $coverY2 $coverZ2; # Define the concrete patch
layer straight $IDreinf $numBarscol40 $barAreaCol -$coreY2 $coreZ2 -$coreY2 -$coreZ2; # top layer reinfocement
layer straight $IDreinf $numBarscol40 $barAreaCol $coreY2 $coreZ2 $coreY2 -$coreZ2; # bottom layer reinforcement
layer straight $IDreinf $numBarsint40 $barAreaCol -$coreY2 $coreZ2 $coreY2 $coreZ2; # top layer reinfocement
layer straight $IDreinf $numBarsint40 $barAreaCol -$coreY2 -$coreZ2 $coreY2 -$coreZ2; # bottom layer reinforcement
};# end of fibersection definition

# -----------assigning tortional stiffness to the sections------------

section Aggregator $ColSec50x50 $SecTagTorsion T -section $ColSec50x50tag
section Aggregator $ColSec40x40 $SecTagTorsion T -section $ColSec40x40tag
section Aggregator $BeamSec40x40 $SecTagTorsion T -section $BeamSec40x40tag
section Aggregator $BeamSec30x30 $SecTagTorsion T -section $BeamSec30x30tag

# -------------------------define ELEMENTS----------------------------
#
# -----------set up geometric transformations of element--------------
#
# separate columns and beams, in case of P-Delta analysis for columns

set IDColTransf 1; # all columns
set IDBeamTransf 2; # beams which lie on the x direction
set ColTransfType PDelta ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $IDColTransf 0 0 -1 ; # only columns can have PDelta effects (gravity effects)
geomTransf Linear $IDBeamTransf 0 1 0

# -------------------Define Beam-Column Elements----------------------

# -------------------------define columns-----------------------------

set np 5; # number of Gauss integration points for nonlinear curvature distribution
set l 1
for {set i 1} {$i<=30} {incr i 1} {
for { set t $l} {$t<=[expr $l+2]} {incr t 1} {
element nonlinearBeamColumn [expr $t-$i+1] $t [expr $t+1] $np $ColSec50x50 $IDColTransf
}
for {set t [expr $l+3]} {$t<=[expr $l+6]} {incr t 1} {
element nonlinearBeamColumn [expr $t-$i+1] $t [expr $t+1] $np $ColSec40x40 $IDColTransf
}
set l [expr $t+1] ;# actually it should be l=t+2 but becuse when "t" comes out of the loop it increases itself once then the correct expression is l=t+1
}
# --------------------Define beams in x direction---------------------
set l 1
set m 211
for {set i 1} {$i<=25} {incr i 1} {
for {set t $l} {$t<=[expr $l+2]} {incr t 1} {
element nonlinearBeamColumn $m [expr $t+1] [expr $t+41] $np $BeamSec40x40 $IDBeamTransf
incr m 1
}
for {set t [expr $l+3]} {$t<=[expr $l+6]} {incr t 1} {
element nonlinearBeamColumn $m [expr $t+1] [expr $t+41] $np $BeamSec30x30 $IDBeamTransf
incr m 1
}
if {[expr $i/5.]==[expr $i/5]} {
set l [expr $t-159]
} else {
set l [expr $t+33]
}
}

# --------------------Define beams in z direction---------------------

set l 1
set m 386
for {set i 1} {$i<=24} {incr i 1} {
for {set t $l} {$t<=[expr $l+2]} {incr t 1} {
element nonlinearBeamColumn $m [expr $t+1] [expr $t+9] $np $BeamSec40x40 $IDBeamTransf
incr m 1
}
for {set t [expr $l+3]} {$t<=[expr $l+6]} {incr t 1} {
element nonlinearBeamColumn $m [expr $t+1] [expr $t+9] $np $BeamSec30x30 $IDBeamTransf
incr m 1
}
if {[expr $i/4.]==[expr $i/4]} {
set l [expr $t+9]
} else {
set l [expr $t+1]
}
}

# ---------------------------nodal masses-----------------------------

foreach value { 1 33 201 233} {
for {set i 1} {$i<=7} {incr i 1} {
mass [expr $value+$i] 4.895 0 4.895 0 0 0; # mass for nodes in the edge
}
}
foreach value { 9 17 25 209 217 225} {
for {set i 1} {$i<=7} {incr i 1} {
mass [expr $value+$i] 9.79 0 9.79 0 0 0; # mass for nodes in z direction
}
}
foreach value { 41 81 121 161 73 113 153 193} {
for {set i 1} {$i<=7} {incr i 1} {
mass [expr $value+$i] 9.79 0 9.79 0 0 0; # mass for nodes in x direction
}
}
foreach value { 49 57 65 89 97 105 129 137 145 169 177 185 } {
for {set i 1} {$i<=7} {incr i 1} {
mass [expr $value+$i] 19.58 0 19.58 0 0 0; # mass for nodes in the middle
}
}

# -----------------------define gravity loads-------------------------

pattern Plain 1 Linear {
for {set i 211} {$i<=245} {incr i 1} {
eleLoad -ele $i -type -beamUniform -9.984 0
}
for {set i 246} {$i<=350} {incr i 1} {
eleLoad -ele $i -type -beamUniform -19.968 0
}
for {set i 351} {$i<=385} {incr i 1} {
eleLoad -ele $i -type -beamUniform -9.984 0
}
for {set i 386} {$i<=413} {incr i 1} {
eleLoad -ele $i -type -beamUniform -11.86 0
}
for {set i 414} {$i<=525} {incr i 1} {
eleLoad -ele $i -type -beamUniform -23.36 0
}
for {set i 526} {$i<=553} {incr i 1} {
eleLoad -ele $i -type -beamUniform -11.86 0
}
}

# -------------------------define recorders---------------------------

recorder Node -file Data/Node8.out -time -node 240 -dof 1 2 3 disp;
recorder Node -file Data/Node8x.out -node 240 -dof 1 disp;
recorder Node -file Data/Node8z.out -node 240 -dof 3 disp;

# --------------------------static analysis---------------------------

constraints Plain; # how it handles boundary conditions
numberer Plain; # 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
test EnergyIncr 1.0e-8 6 ; # 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 LoadControl 0.1; # determine the next time step for an analysis, # apply gravity in 10 steps
analysis Static # define type of analysis static or transient
analyze 10; # perform gravity analysis
loadConst -time 0.0; # hold gravity constant and restart time
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: convergence problem in static analysis !

Post by vesna »

There may be something wrong with your model since it is unable to perform even gravity load. I would first run eigen analysis to see if the periods and mode shapes make any sense. In case you get reasonable periods, I would add a loop in which you can change some analysis objects until you get the convergence. In the example manual you will find examples on how to do this.

One more comment, since your structure is pretty big it would be better to use sparse solver instead of BandGeneral (e.g., system UmfPack).
sia_perestij
Posts: 5
Joined: Sun May 16, 2010 5:09 am
Location: urmia university

Re: convergence problem in static analysis !

Post by sia_perestij »

tnx :), I will check the code again and try what you said
sia_perestij
Posts: 5
Joined: Sun May 16, 2010 5:09 am
Location: urmia university

Re: convergence problem in static analysis !

Post by sia_perestij »

hi, i changed my ele load to "eleLoad -ele $i -type -beamUniform 0 -9.984 0" and it worked! I wanted to apply my load in "y" direction
does is not suppose to be
"eleLoad -ele $eleTag1 <$eleTag2 ....> -type -beamUniform $Wy $Wz <$Wx>" ?
cause it seems the place of "$Wy , $Wz, $Wx" are different in my model !!??
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: convergence problem in static analysis !

Post by vesna »

your global coordinates are like this: x-z is forming horizontal plane and y is vertical axis.

Your beam elements on which you apply uniform load have coordinate transformation 0 1 0. This means that the local z axis for a beam is the same as global y axis. You have to define load on the beam in local coordinate system. Thus, your gravity load will be applied in local z direction which is load wz. That is why your load has to be defined this way:

#eleLoad -ele $eleTag1 -type -beamUniform $Wy $Wz <$Wx>
eleLoad -ele $i -type -beamUniform 0 -9.984
sia_perestij
Posts: 5
Joined: Sun May 16, 2010 5:09 am
Location: urmia university

Re: convergence problem in static analysis !

Post by sia_perestij »

ooooooooooooooh! so the load is defined in local coordinating system of the beam! I didn't know that Tnx :):):)
Post Reply