hi,
I have a problem about converge of pushover, can anybody help me?
thanks... :oops:
model basic -ndm 2 -ndf 3
#Newton,mm,sec.
#width
set width 5000
set height 3000
# coord.
# tag x----y
node 1 0.0 0.0
node 2 0.0 $height
node 3 0.0 [ expr 2*$height ]
node 4 0.0 [ expr 3*$height ]
node 5 0.0 [ expr 4*$height ]
node 6 $width 0.0
node 7 $width $height
node 8 $width [ expr 2*$height ]
node 9 $width [ expr 3*$height ]
node 10 $width [ expr 4*$height ]
node 11 [ expr 2*$width ] 0.0
node 12 [ expr 2*$width ] $height
node 13 [ expr 2*$width ] [ expr 2*$height ]
node 14 [ expr 2*$width ] [ expr 3*$height ]
node 15 [ expr 2*$width ] [ expr 4*$height ]
node 16 [ expr 3*$width ] 0.0
node 17 [ expr 3*$width ] $height
node 18 [ expr 3*$width ] [ expr 2*$height ]
node 19 [ expr 3*$width ] [ expr 3*$height ]
node 20 [ expr 3*$width ] [ expr 4*$height ]
# supports
# tag-DX-DY-DZ
fix 1 1 1 1
fix 6 1 1 1
fix 11 1 1 1
fix 16 1 1 1
# material
# cocnrete
# confined conc. for column (fi 8/50mm)
uniaxialMaterial Concrete01 1 -25 -0.002 0.0 -0.0059
# confined concrete for beam (fi 8/100mm)
uniaxialMaterial Concrete01 2 -27.5088 -0.0022 -5.5018 -0.0168
# unconfined concrete
uniaxialMaterial Concrete01 3 -25 -0.002 0.0 -0.0059
# steel
set fy 420; # Yield stress
set E 200000; # young's modulus
uniaxialMaterial Steel01 4 $fy $E 0.005
# column dim. ,fi 20,As=351 mm2
set colWidth 500
set colDepth 500
set bwidth 300
set bheight 500
# cover for columns
set cover 30
# cover for beam
set cover1 30
# bar for column fi 20
set As 351;
# bar for beam fi 14
set As2 154;
# koordinatlar
set y1 [expr $colDepth/2.0]
set z1 [expr $colWidth/2.0]
set y2 [expr $bheight/2]
set z2 [expr $bwidth/2]
section Fiber 1 {
# confined concrete for column
patch rect 1 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]
# unconfined concrete (üst,alt,sol,sað) for column
patch rect 3 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 3 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 3 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
patch rect 3 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]
# steel for column
layer straight 4 5 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 4 2 $As [expr $y1-240] [expr $z1-$cover] [expr $y1-240] [expr $cover-$z1]
layer straight 4 2 $As 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
layer straight 4 2 $As [expr 240-$y1] [expr $z1-$cover] [expr 240-$y1] [expr $cover-$z1]
layer straight 4 5 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]
}
section Fiber 2 {
# confined concrete for beam
patch rect 2 10 1 [expr $cover1-$y2] [expr $cover1-$z2] [expr $y2-$cover1] [expr $z2-$cover1]
# unconfined concrete (üst,alt,sol,sað) for beam
patch rect 3 10 1 [expr -$y2] [expr $z2-$cover1] $y2 $z2
patch rect 3 10 1 [expr -$y2] [expr -$z2] $y2 [expr $cover1-$z2]
patch rect 3 2 1 [expr -$y2] [expr $cover1-$z2] [expr $cover1-$y2] [expr $z2-$cover1]
patch rect 3 2 1 [expr $y2-$cover1] [expr $cover1-$z2] $y2 [expr $z2-$cover1]
# steel for beam
layer straight 4 5 $As2 [expr $y2-$cover1] [expr $z2-$cover1] [expr $y2-$cover1] [expr $cover1-$z2]
layer straight 4 5 $As2 [expr $cover1-$y2] [expr $z2-$cover1] [expr $cover1-$y2] [expr $cover1-$z2]
}
# define column element
#geometry of column element
# tag
geomTransf PDelta 1
#number of integration points along length of element
set np 5
# tag ndl ndj nsecs secID transfTag
element nonlinearBeamColumn 1 1 2 $np 1 1
element nonlinearBeamColumn 2 2 3 $np 1 1
element nonlinearBeamColumn 3 3 4 $np 1 1
element nonlinearBeamColumn 4 4 5 $np 1 1
element nonlinearBeamColumn 5 6 7 $np 1 1
element nonlinearBeamColumn 6 7 8 $np 1 1
element nonlinearBeamColumn 7 8 9 $np 1 1
element nonlinearBeamColumn 8 9 10 $np 1 1
element nonlinearBeamColumn 9 11 12 $np 1 1
element nonlinearBeamColumn 10 12 13 $np 1 1
element nonlinearBeamColumn 11 13 14 $np 1 1
element nonlinearBeamColumn 12 14 15 $np 1 1
element nonlinearBeamColumn 13 16 17 $np 1 1
element nonlinearBeamColumn 14 17 18 $np 1 1
element nonlinearBeamColumn 15 18 19 $np 1 1
element nonlinearBeamColumn 16 19 20 $np 1 1
# define beam element
# Geometry of of beam element
geomTransf Linear 2
set np2 3
#creat the beam element
# tag ndl ndj nsecs secID transfTag
element nonlinearBeamColumn 17 2 7 $np2 2 2
element nonlinearBeamColumn 18 3 8 $np2 2 2
element nonlinearBeamColumn 19 4 9 $np2 2 2
element nonlinearBeamColumn 20 5 10 $np2 2 2
element nonlinearBeamColumn 21 7 12 $np2 2 2
element nonlinearBeamColumn 22 8 13 $np2 2 2
element nonlinearBeamColumn 23 9 14 $np2 2 2
element nonlinearBeamColumn 24 10 15 $np2 2 2
element nonlinearBeamColumn 25 12 17 $np2 2 2
element nonlinearBeamColumn 26 13 18 $np2 2 2
element nonlinearBeamColumn 27 14 19 $np2 2 2
element nonlinearBeamColumn 28 15 20 $np2 2 2
# define gravity load
# set a parameter for the axial load
set p1 63900;
set p2 113698;
set p3 82293;
set p4 132091;
set q1 -18.717;
set q2 -23.627;
#create a plain load pattern with a Linear Timeseries
pattern Plain 1 "Linear" {
eleLoad -ele 20 -type -beamUniform $q1
eleLoad -ele 24 -type -beamUniform $q1
eleLoad -ele 28 -type -beamUniform $q1
eleLoad -ele 17 -type -beamUniform $q2
eleLoad -ele 18 -type -beamUniform $q2
eleLoad -ele 19 -type -beamUniform $q2
eleLoad -ele 21 -type -beamUniform $q2
eleLoad -ele 22 -type -beamUniform $q2
eleLoad -ele 23 -type -beamUniform $q2
eleLoad -ele 25 -type -beamUniform $q2
eleLoad -ele 26 -type -beamUniform $q2
eleLoad -ele 27 -type -beamUniform $q2
}
pattern Plain 2 "Linear" {
#create nodal loads at nodes
# nd FX FY MZ
load 2 0.0 [expr -$p3] 0.0
load 3 0.0 [expr -$p3] 0.0
load 4 0.0 [expr -$p3] 0.0
load 5 0.0 [expr -$p1] 0.0
load 7 0.0 [expr -$p4] 0.0
load 8 0.0 [expr -$p4] 0.0
load 9 0.0 [expr -$p4] 0.0
load 10 0.0 [expr -$p2] 0.0
load 12 0.0 [expr -$p4] 0.0
load 13 0.0 [expr -$p4] 0.0
load 14 0.0 [expr -$p4] 0.0
load 15 0.0 [expr -$p2] 0.0
load 17 0.0 [expr -$p3] 0.0
load 18 0.0 [expr -$p3] 0.0
load 19 0.0 [expr -$p3] 0.0
load 20 0.0 [expr -$p1] 0.0
}
# initialize in case we need to do an initial stiffness iteration
initialize
#
# end of the model generation.
#
#start of analysis generation.
#
#create the system of equation , a sparse solver with partial pivoting
system BandGeneral
#create the constant handler , the transformation method
constraints Transformation
#create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# create the convergence test , the norm of the residual with a tolerance of
# 1e-12 and max number of iterations of 10
test NormDispIncr 1.0e-12 10 3
# create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
#create the analysis object
analysis Static
# end of the analysis generation
#
#start of record generation
#####
#create a recorder to monitor nodal displacement.
recorder Node -file nodeGravity.out -time -node 2 7 -dof 1 2 3 disp
analyze 10
#print node 2
#print 1
#---------------------------------------------------------------------
#
puts "--------------Gravity load analysis completed -----------------------------"
# set the gravity loads to be constant and reset the time in the domain
loadConst -time 0.0
# end of Model Generation and initial gravity analysis
#
# start of additional modelling for lateral loads
# define lateral loads
# set some parameters
set h1 0.104;
set h2 0.208;
set h3 0.312;
set h4 0.376;
# set lateral load pattern with a Linear TimeSeries
pattern Plain 3 "Linear" {
# create nodal loads at nodes 2,3,4,5
# nd FX FY MZ
load 2 $h1 0 0
load 3 $h2 0 0
load 4 $h3 0 0
load 5 $h4 0 0
}
#
#end of additional modelling for lateral loads
#
#start of modifications to analysis for push over
#
#set some parameters
set dU 0.5 ; # Displacement increment
#
#change the integration scheme to be displacement control
# node.dof.init.Jd.min.max
integrator DisplacementControl 5 1 $dU 1 $dU $dU
#
#end modificatioons to analysis for push over
#
# start ofrecorder generation
# stop the old recorders by destroying them
# remove recorders
#
# create a recorder to monitor nodal displacements
recorder Node -file node32.out -time -node 5 -dof 1 2 3 disp
# recorder plot Node32.out hi 10 10 300 300 -columns 2 1
#
# create a recorder to monitor element forces in columns
recorder Element -file ele32.out -time -ele 1 5 localForce
#
# end of recorder generation
#
# Finally perform the analysis
#
# set some parameters
set maxU 450; #maxU displacement
set numSteps [expr int($maxU/$dU)]
#
#perform the analysis
set ok [analyze $numSteps]
#------------------------------------
if {$ok != 0} {
set currentDisp [nodeDisp 5 1]
set ok 0
while {$ok == 0 && $currentDisp < $maxU} {
set ok [analyze 1]
# if the analysis fails try initial tangent iteration
if {$ok !== 0} {
puts "regular newton failed .. lets try an initial stiffness for this step"
test NormDisplncr 1.0e-12 1000 0
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDisplncr 1.0e-12 10
algorithm Newton
}
set currentDisp [nodeDisp 5 1]
}
}
puts "";
if {$ok == 0} {
puts "--Pushover analysis completed SUCCESFULLY------GOOD--***--";
} else {
puts "--------Pushover analysis FA?LED----?????-----";
}
#print the state at node 5
print node 5[/color]
[b][i][u][code][list][url][/url][/list][/code][/u][/i][/b]
converge problem about pushover
Moderators: silvia, selimgunay, Moderators