descending branch

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

Moderators: silvia, selimgunay, Moderators

Post Reply
amceuma
Posts: 23
Joined: Sat May 26, 2007 4:48 am
Location: iran

descending branch

Post by amceuma »

Dear friends
I run pushover analysis on 2D-3bay RC frame. I read the posts that talk about descending branch in pushover graph and did advises about using concrete02, concret03 and steel02 for materials and geometric transformation pdelta for columns and assign gravity loads.but descending branch doesnot take place,yet! i will appreciate you if tell me what is the problem?
thanks before
#Define units-----------------------------------------------
set cm 1;
set kg 1;
set m [expr 100*$cm];
set cm2 [expr $cm*$cm];
set mm [expr $m/1000];
set kgpcm2 [expr $kg/$cm2];
set kgpm [expr $kg/$m];
set ubig 1e10;
set usmall [expr 1/$ubig];

#LibMaterials: define a library of materials--------------------------
#General material parameters
set G $ubig;
set j 1;
set Gj [expr $G*$j];

#concrete material
set fpc [expr -250*$kgpcm2];
set epsco -0.001;
set fpcu [expr -50*$kgpcm2];
set epsu -0.02;
set lambda 0.1
set Ft [expr 27.5*$kgpcm2];
set epst0 0.0015;
set Ft0 [expr 10*$kgpcm2];
set beta 2.5;
set epstu 0.002;
set concrete 1;
uniaxialMaterial Concrete03 $concrete $fpc $epsco $fpcu $epsu $lambda $Ft $epst0 $Ft0 $beta $epstu;

#Steel material
set Fy [expr 4000*$kgpcm2];
set E [expr 2.06e6*$kgpcm2];
set b 0.01;
set R0 18;
set cR1 0.925;
set cR2 0.15;
set steel 2;
uniaxialMaterial Steel02 $steel $Fy $E $b $R0 $cR1 $cR2;

#Define sections---------------------------------
proc buildrcrectsection { ID H B cover concrete steel numbartop1 barareatop1 numbartop2 barareatop2 numbarbot1 barareabot1 numbarbot2 barareabot2 numbarint barareaint nfY nfZ } {
set coverY [expr $H/2];
set coverZ [expr $B/2];
set coreY [expr $coverY-$cover];
set coreZ [expr $coverZ-$cover];
set locaddedbar [expr $coreZ/2];
set nfY 20;
set nfZ 20:
section Fiber $ID {

patch quad $concrete 20 20 -$coreY $coreZ -$coreY -$coreZ $coreY -$coreZ $coreY $coreZ
patch quad $concrete 2 20 -$coverY $coverZ -$coreY $coreZ $coreY $coreZ $coverY $coverZ
patch quad $concrete 2 20 -$coreY -$coreZ -$coverY -$coverZ $coverY -$coverZ $coreY $coreZ
patch quad $concrete 20 2 -$coverY $coverZ -$coverY -$coverZ -$coreY -$coreZ -$coreY $coreZ
patch quad $concrete 20 2 $coreY $coreZ $coreY -$coreZ $coverY -$coverZ $coverY $coverZ;

layer straight $steel $numbartop1 $barareatop1 $coreY $coreZ $coreY -$coreZ
layer straight $steel $numbartop2 $barareatop2 $coreY $locaddedbar $coreY -$locaddedbar
layer straight $steel $numbarbot1 $barareabot1 -$coreY $coreZ -$coreY -$coreZ
layer straight $steel $numbarbot2 $barareabot2 -$coreY $locaddedbar -$coreY -$locaddedbar
layer straight $steel $numbarint $barareaint -$coreY $coreZ $coreY $coreZ
layer straight $steel $numbarint $barareaint -$coreY -$coreZ $coreY -$coreZ
};
};

#Build model---------------------------------------------
wipe
model BasicBuilder -ndm 2 -ndf 3;
source libunits.tcl;
set dataDir Data;
file mkdir $dataDir;
source DisplayPlane.tcl; # procedure for displaying a plane in model
source DisplayModel2D.tcl; # procedure for displaying 2D perspective of model

#Define Geometry;
set Lcol [expr 3*$m];
set Lbeam [expr 5*$m];
set Nstory 4;
set Nbay 3;

#Define nodal coordinates
for {set level 1} {$level <= [expr $Nstory+1]} {incr level 1} {
set y [expr ($level-1)*$Lcol];
for {set pier 1} {$pier <= [expr $Nbay+1]} {incr pier 1} {
set x [expr ($pier-1)*$Lbeam];
set nodeID [expr $level*10+$pier];
node $nodeID $x $y;
}
};
fix 11 1 1 1;
fix 12 1 1 1;
fix 13 1 1 1;
fix 14 1 1 1;

#Define sections
source libmaterials.tcl;
source buildrcrectsection.tcl;
buildrcrectsection 44 [expr 35*$cm] [expr 25*$cm] [expr 5.3*$cm] $concrete $steel 3 [expr 2*$cm2] 0 0 2 [expr 2*$cm2] 0 0 2 [expr 2*$cm2] nfY nfZ
buildrcrectsection 33 [expr 35*$cm] [expr 25*$cm] [expr 5.3*$cm] $concrete $steel 4 [expr 2*$cm2] 0 0 3 [expr 2*$cm2] 0 0 2 [expr 2*$cm2] nfY nfZ
buildrcrectsection 22 [expr 35*$cm] [expr 25*$cm] [expr 5.3*$cm] $concrete $steel 2 [expr 2*$cm2] 2 [expr 3.14*$cm2] 3 [expr 2*$cm2] 0 0 2 [expr 2*$cm2] nfY nfZ
buildrcrectsection 11 [expr 35*$cm] [expr 25*$cm] [expr 5.3*$cm] $concrete $steel 2 [expr 2*$cm2] 2 [expr 3.14*$cm2] 3 [expr 2*$cm2] 0 0 2 [expr 2*$cm2] nfY nfZ
buildrcrectsection 99 [expr 35*$cm] [expr 35*$cm] [expr 5.3*$cm] $concrete $steel 3 [expr 2.54*$cm2] 0 0 3 [expr 2.54*$cm2] 0 0 3 [expr 2.54*$cm2] nfY nfZ

#Define transformation
geomTransf Linear 1;
geomTransf PDelta 2;

#Define Beam-Column Elements
#beams
element nonlinearBeamColumn 2122 21 22 5 11 1;
element nonlinearBeamColumn 2223 22 23 5 11 1;
element nonlinearBeamColumn 2324 23 24 5 11 1;
element nonlinearBeamColumn 3132 31 32 5 22 1;
element nonlinearBeamColumn 3233 32 33 5 22 1;
element nonlinearBeamColumn 3334 33 34 5 22 1;
element nonlinearBeamColumn 4142 41 42 5 33 1;
element nonlinearBeamColumn 4243 42 43 5 33 1;
element nonlinearBeamColumn 4344 43 44 5 33 1;
element nonlinearBeamColumn 5152 51 52 5 44 1;
element nonlinearBeamColumn 5253 52 53 5 44 1;
element nonlinearBeamColumn 5354 53 54 5 44 1;
#columns
element nonlinearBeamColumn 1121 11 21 5 99 2;
element nonlinearBeamColumn 1222 12 22 5 99 2;
element nonlinearBeamColumn 1323 13 23 5 99 2;
element nonlinearBeamColumn 1424 14 24 5 99 2;
element nonlinearBeamColumn 2131 21 31 5 99 2;
element nonlinearBeamColumn 2232 22 32 5 99 2;
element nonlinearBeamColumn 2333 23 33 5 99 2;
element nonlinearBeamColumn 2434 24 34 5 99 2;
element nonlinearBeamColumn 3141 31 41 5 99 2;
element nonlinearBeamColumn 3242 32 42 5 99 2;
element nonlinearBeamColumn 3343 33 43 5 99 2;
element nonlinearBeamColumn 3444 34 44 5 99 2;
element nonlinearBeamColumn 4151 41 51 5 99 2;
element nonlinearBeamColumn 4252 42 52 5 99 2;
element nonlinearBeamColumn 4353 43 53 5 99 2;
element nonlinearBeamColumn 4454 44 54 5 99 2;

#Gravity ,weights
set weightfloor1 [expr 43369.8*$kg];
set weightfloor2 [expr 43369.8*$kg];
set weightfloor3 [expr 43369.8*$kg];
set weightfloor4 [expr 35404.8*$kg];
set Vbs [expr 51588.735*$kg];

#Lateral load distribution Fj=Vbs*wjhj/sum(wihi);
set sumwihi [expr $weightfloor1*3+$weightfloor2*6+$weightfloor3*9+$weightfloor4*12];
set Fj1 [expr $Vbs*$weightfloor1*3/$sumwihi];
set Fj2 [expr $Vbs*$weightfloor2*6/$sumwihi];
set Fj3 [expr $Vbs*$weightfloor3*9/$sumwihi];
set Fj4 [expr $Vbs*$weightfloor4*12/$sumwihi];
set Fi1 [expr $Fj1/4]; #per node on floor 1
set Fi2 [expr $Fj2/4];
set Fi3 [expr $Fj3/4];
set Fi4 [expr $Fj4/4];
set iFi "$Fi1 $Fi2 $Fi3 $Fi4"; #vectorize

#Define recorders
recorder Node -file $dataDir/DFree.out -time -node 51 -dof 1 disp; # displacements of free node
recorder Node -file $dataDir/RBase.out -time -nodeRange 11 14 -dof 1 reaction; # support reaction

# Define DISPLAY -------------------------------------------------------------
DisplayModel2D NodeNumbers

#Define Gravity loads
pattern Plain 1 Linear {
eleLoad -ele 2122 2324 3132 3334 4142 4344 -type -beamUniform [expr -846.73*$kgpm];
eleLoad -ele 2223 3233 4243 -type -beamUniform [expr -2366.73*$kgpm];
eleLoad -ele 5152 5354 -type -beamUniform [expr -201.73*$kgpm];
eleLoad -ele 5253 -type -beamUniform [expr -1721.73*$kgpm];
eleLoad -ele 1121 1222 1323 1424 2131 2232 2333 2434 3141 3242 3343 3444 4151 4252 4353 4454 -type -beamUniform 0 [expr -306.25*$kgpm];
};

#Gravity analysis parameters--------
LoadControl static analysis
set Tol 1.0e-8;
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr $Tol 6;
algorithm Newton;
set NstepGravity 10;
set DGravity [expr 1/$NstepGravity]; #first load increment
integrator LoadControl $DGravity; #first load increment (pseudo-time step) in the next invocation of the analysis command.
analysis Static;
analyze $NstepGravity;

#mailtain constant gravity loads and reset time to zero
loadConst -time 0.0;
puts "Model Build"

# characteristics of pushover analysis--------------------------------
set LBuilding [expr 12*$m];
set NStory 4;
set NBay 3;
set Dmax [expr 0.1*$LBuilding ]; # maximum displacement of pushover. push to 10% drift.
set Dincr [expr 0.0001*$LBuilding ]; # displacement increment. you want this to be small, but not too small to slow analysis

#STATIC PUSHOVER ANALYSIS
# create load pattern for lateral pushover load coefficient when using linear load pattern
pattern Plain 2 Linear {; # define load pattern
for {set level 2} {$level <= [expr $NStory+1]} {incr level 1} {
set Fi [lindex $iFi [expr $level-1-1]]; # lateral load coefficient
for {set pier 1} {$pier <= [expr $NBay+1]} {incr pier 1} {
set nodeID [expr $level*10+$pier]
load $nodeID $Fi 0.0 0.0 0.0 0.0 0.0
}
}
}; # end load pattern

set ViewScale 5;
DisplayModel2D DeformedShape $ViewScale ; # display deformed shape, the scaling factor needs to be adjusted for each model
recorder plot $dataDir/DFree.out ForceDisp 600 2 400 400 -columns 2 1; # a window to plot the load vs. nodal displacement

#Define static analysis parameters
constraints Plain;
numberer Plain;
system BandGeneral;
test EnergyIncr 1.e-8 6 0;
algorithm Newton;
integrator DisplacementControl 51 1 $Dincr;
analysis Static;

#Perform Static Pushover Analysis-----------------------------
set Nsteps [expr int($Dmax/$Dincr)]; #number of pushover analysis steps
set ok [analyze $Nsteps];

# if analysis fails, try the following, performance is slowed inside this loop
if {$ok != 0} {
set ok 0;
set maxU $Dmax
set controlDisp 0.0;
test NormDispIncr 1.0e-8 20 0
while {$controlDisp < $maxU && $ok == 0} {
set ok [analyze 1]
set controlDisp [nodeDisp 51 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-8 1000 1
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-8 20 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 .8
set ok [analyze 1]
algorithm Newton
}
}; # end while loop
}; # end original if $ok!=0 loop
if {$ok != 0} {
puts "DispControl Analysis FAILED"
puts "Do you wish to continue y/n ?"; # include if want to pause at analysis failure
gets stdin ans; # not recommended in parameter study
if {$ans == "n"} done; # as it interrupts batch file
} else {
puts "DispControl Analysis SUCCESSFUL"
}
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

you have a well-designed structure -- congratulations.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
amceuma
Posts: 23
Joined: Sat May 26, 2007 4:48 am
Location: iran

Post by amceuma »

you mean that the results of analysis is acceptable!!!! :shock:
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

you have to decide that one.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Post Reply