a question about pushover analysis to pile

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

Moderators: silvia, selimgunay, Moderators

Post Reply
yuxiang-1124
Posts: 4
Joined: Sun Jul 01, 2007 5:08 am
Location: tongji university china

a question about pushover analysis to pile

Post by yuxiang-1124 »

hello,everybody.I did pushover analysis to a single pile which use fiber element and model soil-pile interaction by p-y curves.And lateral load pattern is concentrating horizontal load at top of pile.Displacement control method is used in analysis.I find out that the maximum curvature of pile section can not get ultimate curvature(compared with moment-curvature analysis by Ucfyber program) when the target dispalcement of pile is too large to convergence.That is to say when the target displacement is the largest which the analysis can be convergence the maximum curvature of pile don't achieve the ultimate state. Also the p-y spring do not get the ultimate state.My question is that how can i make the pile achieve the ultimate state and at the same time make sure the analysis is convergence.Please help me.Thanks!
amin_asareh
Posts: 15
Joined: Sun Dec 17, 2006 2:21 am
Location: kntu university of technology

Post by amin_asareh »

I've done pushover analysis on piles with no problem. I have to see your model to tell you what is wrong with it. you have to define a zero-length element on every node of your pile(one node is fixed and the other one is connected to the pile). for seeing p-y curves in every depth you have to have the reactions for the fixed node and the displacement of the node conected to the pile. in that curve you can see pult for different depths. for verifing your answers, Matlock and Meyer have done some experimental work on piles. if you want any information,I can help you.

Amin Asareh,
Structural Engineer,
KNTU University of technology.
ASAREH
yuxiang-1124
Posts: 4
Joined: Sun Jul 01, 2007 5:08 am
Location: tongji university china

Post by yuxiang-1124 »

Thank u for your reply,Amin Asareh.
I built the pile model just as the method you say.Now i wanna kown the reason why the pile itself can not reach ultimate state.
As u know,the pile section is built with fiber section,in my opinion,the pushover analysis will be failure convergence when the maximum section curvature of the pile exceed ultimate curvature.But in my analysis,it is failure to convergence before the maximum section curvature of pile reach ultimate state.

this is my model script


#
# single pile
# ------------------------
# Reinforced concrete long single pile (35m)
#
# -----------------
# Nonlinear beam-column elements
# Gravity load analysis and eigenvalue analysis
#
#
# Units: kN, m, sec
#
# Written: Lu chuanan
#Tongji University
# Date: 2007.11


# ------------------------------
# building model
# ------------------------------

# Create ModelBuilder (with three-dimensions and 6 DOF/node)
model basic -ndm 3 -ndf 6
file mkdir output;
####################################coordinate of node####################################
###############################################################################
#openfile Node.txt reading data
set openf1 [open Node.txt r]

set var1 [read $openf1]

for {set i 1} {$i<=40} {incr i 1} {
set NodeNum($i) [lindex [split $var1] [expr 5*($i-1)]]
set CoorX($i) [lindex [split $var1] [expr 5*($i-1)+1]]
set CoorY($i) [lindex [split $var1] [expr 5*($i-1)+2]]
set CoorZ($i) [lindex [split $var1] [expr 5*($i-1)+3]]
set NodalMass($i) [lindex [split $var1] [expr 5*($i-1)+4]]
}

close $openf1

#coordinate of node
# tag X Y Z
for {set i 1} {$i<=40} {incr i 1} {
node $NodeNum($i) $CoorX($i) $CoorY($i) $CoorZ($i)
}

#mass of node
# tag MX MY MZ RX RY RZ
for {set i 1} {$i<=40} {incr i 1} {
mass $NodeNum($i) $NodalMass($i) $NodalMass($i) 0.0 0.0 0.0 0.0
}


####################################boundary conditons###################################
###############################################################################
# tag DX DY DZ RX RY RZ
#openfile fixnodenum.txt reading data
set openf2 [open FixNodeNum.txt r]

set var2 [read $openf2]

for {set i 1} {$i<=20} {incr i 1} {
set FixNodeNum($i) [lindex [split $var2] [expr ($i-1)]]
}

close $openf2


for {set i 1} {$i<=20} {incr i 1} {
fix $FixNodeNum($i) 1 1 1 1 1 1
}

#
##==============================================
## (5.1) define uniaxialMaterial for Py-Tz
##==============================================
set channel9 [open "./data/pult.dat" r] ;#pult imported
puts $channel9
set ctr9 0;
foreach line9 [split [read -nonewline $channel9] \n] {
set lineSize9 [llength $line9]
set ctr9 [expr $ctr9+1];
set lineData9($ctr9) $line9
#puts $line9
set lineNumber9 $ctr9
}
close $channel9

##-----------------------------------------------
for {set i 1} {$i <= $lineNumber9} {incr i 1} {
for {set j 0} {$j < $lineSize9} {incr j 1} {
set data9($i,$j) [lindex $lineData9($i) $j]
#puts $data9($i,$j)
} }
#----------------------------------------------
set kk0 0
for {set i 1} {$i <= $lineNumber9} {incr i 1} {
set kk0 [expr $kk0+1]
set pyElement($kk0) [expr int($data9($i,0))]
set conect1($kk0) [expr int($data9($i,1))]
set conect2($kk0) [expr int($data9($i,2))]
set pyType($kk0) [expr int($data9($i,3))]
set y50($kk0) $data9($i,4)
set Cd($kk0) $data9($i,5)
#set Cd($kk0) 1.0
set tzType($kk0) [expr int($data9($i,6))]
set z50($kk0) $data9($i,7)
set pult($kk0) $data9($i,8)
set tult($kk0) $data9($i,9)

}
##---------------------------------------------|||||||||
#
###==============================================
##(5.2) define zeroLength element for Py
##==============================================

for {set i 1 } { $i <= $lineNumber9 } {incr i 1} {
uniaxialMaterial PySimple1 [expr $i+1000] $pyType($i) $pult($i) $y50($i) $Cd($i) 0.02
element zeroLength $pyElement($i) $conect1($i) $conect2($i) -mat [expr $i+1000] -dir 1

}


###############################桩单元及材料特性###############################
###############################################################################
set openf3 [open PileElement.txt r]

set var3 [read $openf3]

for {set i 1} {$i<=20} {incr i 1} {
set EleNum($i) [lindex [split $var3] [expr 3*($i-1)]]
set NodeI($i) [lindex [split $var3] [expr 3*($i-1)+1]]
set NodeJ($i) [lindex [split $var3] [expr 3*($i-1)+2]]
}

close $openf3

# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set PileSecTag 1;
set coverPile 0.05;
set numBarsPile 24;
set areaBar 4.524e-4 ;
set IDconcU 1; # material ID tag -- unconfined cover concrete
set IDreinf 2;
# MATERIAL parameters
set fc -16730; # CONCRETE Compressive Strength (+Tension, -Compression)
set Ec 30000000; # Concrete Elastic Modulus (the term in sqr root needs to be in psi
set fc1U $fc;
set eps1U -0.0025;
set fc2U [expr 0.5*$fc1U];
set eps2U -0.012;
set lambda 0.1;
set ftU 1390;
set Ets [expr $ftU/0.002];
#-------------
set Fy 280000; # STEEL yield stress
set Es 200000000.; # modulus of steel
set Bs 0.001; # strain-hardening ratio
set R0 18; # control the transition from elastic to plastic branches
set cR1 0.925; # control the transition from elastic to plastic branches
set cR2 0.15;
uniaxialMaterial Concrete02 $IDconcU $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets;
uniaxialMaterial Concrete01 3 -13800.0 -0.002 0.0 -0.006
uniaxialMaterial Steel02 $IDreinf $Fy $Es $Bs $R0 $cR1 $cR2;
#FIBER SECTION properties -----------------------------
set intRad 0.0;
set extRad 0.45;
set radius [expr $extRad-$coverPile]
set nsubdivCirc 50; # number of fibers for concrete in y-direction
set nsubdivRad 8;
set yCenter 0;
set zCenter 0;
section Fiber 100 {
patch circ $IDconcU $nsubdivCirc $nsubdivRad $yCenter $zCenter $intRad $extRad 0 360;
patch circ 3 $nsubdivCirc 2 $yCenter $zCenter 0.45 0.5 0 360; #define cover concrete
layer circ $IDreinf $numBarsPile $areaBar $yCenter $zCenter $radius;
};

#Linear elastic torsion
uniaxialMaterial Elastic 101 130000000

#Attach torsion to the RC section
section Aggregator $PileSecTag 101 T -section 100


#建立墩柱单元及截面特性赋值
# tag
geomTransf Linear 2 1 0 0

# Number of integration points along length of element
set np 5

#element nonlinearBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag
for {set i 1} {$i<=20} {incr i 1} {
element nonlinearBeamColumn $EleNum($i) $NodeI($i) $NodeJ($i) $np $PileSecTag 2
}

# 打印核对结构模型
print all.out

# initialize in case we need to do an initial stiffness iteration
initialize

# ------------------------------
# End of model generation
# ------------------------------
####################################gravity analysis####################################
###############################################################################
# Set a parameter for the axial load
set g 9.8

# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 Linear {

#节点自重荷载赋值
# tag MX MY MZ RX RY RZ
for {set i 1} {$i<=40} {incr i 1} {
load $NodeNum($i) 0.0 0.0 [expr -$NodalMass($i)*$g] 0.0 0.0 0.0
}

}

system BandGeneral
constraints Transformation
numberer RCM
test NormDispIncr 1.0e-12 10 3
algorithm Newton
integrator LoadControl 0.1
analysis Static
initialize
analyze 10
puts "gravity analysis end,start pushover analysis"

loadConst -time 0.0


# Define RECORDERS -------------------------------------------------------------
recorder Node -file output/DFree.out -time -node 21 -dof 1 disp;
recorder Node -file output/DBase.out -time -node 1 -dof 1 disp;
recorder Node -file output/RBase.out -time -node 1 -nodeRange 22 40 -dof 1 reaction;
recorder Element -file output/ForcePileSec17.out -time -ele 17 section 1 force;
recorder Element -file output/DefoPileSec17.out -time -eleRange 1 20 section 1 deformation;
recorder Element -file output/StrssPileSec17.out -time -ele 17 section 1 fiber 2 2 stressStrain;
recorder Element -file output/ele17globa1.out -time -ele 36 globalForce


# STATIC PUSHOVER ANALYSIS --------------------------------------------------------------------------------------------------
#
# we need to set up parameters that are particular to the model.
set IDctrlNode 21;
set IDctrlDOF 1;
set Dmax 0.135;
set Dincr 0.001;

# create load pattern for lateral pushover load
set Hload 7000;
pattern Plain 200 Linear {;
load 21 $Hload 0.0 0.0 0.0 0.0 0.0;
}

constraints Plain;

algorithm
numberer Plain
system BandGeneral
set Tol 1.e-8;
set maxNumIter 6;
set printFlag 0;
set TestType EnergyIncr ;
test $TestType $Tol $maxNumIter $printFlag;
set algorithmType Newton
algorithm $algorithmType;
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
analysis Static

# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)];
set ok [analyze $Nsteps];

# ---------------------------------- in case of convergence problems
if {$ok != 0} {
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
set ok 0;
set controlDisp 0.0; # start from zero
set D0 0.0; # start 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 if ok !0

puts "Pushover complete"
Post Reply