Tension loss Steel01

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

Moderators: silvia, selimgunay, Moderators

Post Reply
marcoita
Posts: 14
Joined: Wed Mar 07, 2012 1:58 am
Location: Sapienza

Tension loss Steel01

Post by marcoita »

Hi everyone,

I am performing some moment curvature analysis but I have a problem with Steel01. I have put fy=400 MPa but sometimes, after the yielding, tension loss occurs and I believe I cannot read the correct value of curvature.
May someone explain me why?
This is a segment of what I obtain if I record the StressStrain of Steel01 (moment - stress - strain):
.
.
.
2.22712e+008 450 0.002797
2.22828e+008 450 0.00286
2.22342e+008 450 0.002927
2.21827e+008 450 0.002986
:arrow: 2.16893e+008 449.994 0.002986
:arrow: 2.11104e+008 448.188 0.002977
:arrow: 2.06731e+008 448.242 0.002978
:arrow: 2.03552e+008 449.612 0.002984
:arrow: 1.99433e+008 449.254 0.0029831
1.9645e+008 450 0.002990
1.93527e+008 450 0.003002
1.91417e+008 450 0.003026
1.88782e+008 450 0.003037
1.86893e+008 450 0.003062
1.85043e+008 450 0.003087
1.83871e+008 450 0.003123
1.8275e+008 450 0.0031586
1.82408e+008 450 0.003209
1.8246e+008 450 0.0032698
1.82508e+008 450 0.003329
1.82174e+008 450 0.003380
1.82217e+008 450 0.003439
1.82258e+008 450 0.003499
1.81936e+008 450 0.003549
1.81976e+008 450 0.003609
1.82013e+008 450 0.003668
1.82048e+008 450 0.003727
1.8174e+008 450 0.0037775
1.81774e+008 450 0.003836
1.81806e+008 450 0.003895
1.81501e+008 450 0.003944
1.81525e+008 450 0.004003
1.81548e+008 450 0.004061
1.81571e+008 450 0.004120
1.81594e+008 450 0.004178
1.81304e+008 450 0.004227
1.81322e+008 450 0.004286
1.81337e+008 450 0.004344
:arrow: 1.76137e+008 441.368 0.00437
:arrow: 1.77366e+008 448.922 0.00438
1.77593e+008 450 0.0043951
1.77382e+008 450 0.004441
1.77443e+008 450 0.004503

Thank you

Marco
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Tension loss Steel01

Post by vesna »

Would you post your script so I can test it out.
marcoita
Posts: 14
Joined: Wed Mar 07, 2012 1:58 am
Location: Sapienza

Re: Tension loss Steel01

Post by marcoita »

Thank you Vesna!
My script:


# [L]=[mm] [F]=[N]

model BasicBuilder -ndm 2 -ndf 3

file mkdir Data;

#---geometric parameters--------
set al 300.; # section height
set la 300.; # section lenght
set cf 39.; # concrete cover (respect to rebars)
#-------------------------------

# ---material properties-----
set fy 450; # [kPa]
set fc 24.9; # [kPa]
#-------------------------

#----fibers-------------
set ncf 2; # n° fiber in cover
set nynuc 25; # n° fiber along al
set nznuc 25; # n° fiber along la
set ny [expr $nynuc+(2*$ncf)];
set nz [expr $nznuc+(2*$ncf)];
#--------------------------------

#---bars diameter----------------
set f_long 16; # 16 mm
set A_long [expr 3.14159*(pow($f_long,2)/4)]; # area di una barra da 18 mm
set nb_up 3; # n° of superior rebars
set nb_mid 2;
set nb_dw 3; # n° of inferior rebars

#-----hoops----------------------------
set f_st 6;
set s 100; # hooop spacing
set nbracciaz 3;
set nbracciay 3;
#---material identification number---
set CP 7; # cover concrete
set STL 3; # steel
set CCM 5; # confined concrete
#----------------------------

# ---Dimension confined core----
set c [expr $cf-$f_st/2-$f_long/2];
set hc [expr $al-2*$c]
set bc [expr $la-2*$c]
#------------------------

# ----ros-------
set Ast [expr 3.14159*(pow($f_st,2)/4)]
set Asty [expr $Ast*$nbracciay]
set Astz [expr $Ast*$nbracciaz]
set roy [expr $Asty/($hc*$s)]
set roz [expr $Astz/($bc*$s)]
set ros [expr $roy + $roz]
puts ros=$ros
#---------------------

#---Coordinate----
set z1 [expr ($la/2)-$cf]
set z4 $z1

set z2 [expr -($z1)]
set z3 $z2

set z5 [expr ($la/2)]
set z8 $z5
set z9 $z5
set z12 $z5

set z6 [expr -($z5)]
set z7 $z6
set z10 $z6
set z11 $z6


set y1 [expr -($al/2)+$cf]
set y2 $y1
set y9 $y1
set y10 $y1

set y3 [expr -($y1)]
set y4 $y3
set y11 $y3
set y12 $y3

set y5 [expr -($al/2)]
set y6 $y5

set y7 [expr -($y5)]
set y8 $y7

set y15 0.0
set y25 0.0

set z15 [expr $la/2-$cf]
set z25 [expr -($la/2)+$cf]


#----------------MATERIALS--------------------

#----STEEL_01:---------------------------------------------------------------3
set Fy $fy;
set Ea 206000.;
set epsy [expr $Fy/$Ea];
set b 0.;
uniaxialMaterial Steel01 3 $Fy $Ea $b;
#--------------------------------------------------------------------------------------

#----CONFINED CONCRETE_01:MANDER - Popovics
uniaxialMaterial Concrete04 $CCM -29.96 -0.00403 -0.02306 24950.
#-----------------------------------------------------------------------------------------------------

#----COVER CONCRETE_01:MANDER - Popovics
uniaxialMaterial Concrete04 $CP -24.9 -0.002 -0.004 24950.;
#--------------------------------------------------------------------------------------------------------


#----------------SECTION--------------------
set sezRett 3;

section fiberSec $sezRett {
patch quad $CCM $nynuc $nznuc $y1 $z1 $y2 $z2 $y3 $z3 $y4 $z4
patch quad $CP $ny $ncf $y5 $z5 $y6 $z6 $y10 $z10 $y9 $z9
patch quad $CP $ny $ncf $y2 $z2 $y10 $z10 $y11 $z11 $y3 $z3
patch quad $CP $ncf $nznuc $y12 $z12 $y11 $z11 $y7 $z7 $y8 $z8
patch quad $CP $ncf $nznuc $y9 $z9 $y1 $z1 $y4 $z4 $y12 $z12

layer straight $STL $nb_up $A_long $y1 $z1 $y2 $z2
layer straight $STL $nb_mid $A_long $y15 $z15 $y25 $z25
layer straight $STL $nb_dw $A_long $y4 $z4 $y3 $z3
}

#----------------RECORDER--------------------

recorder Node -file Data/Momento_curvatura.out -time -node 1002 -dof 3 disp; # output moment (col 1) & curvature (col 2)
recorder Element -file Data/sez1Ele1StressStrainCP.out -time -ele 2001 section fiber $y7 0. $CP stressStrain;
recorder Element -file Data/sez1Ele1StressStrainCCM.out -time -ele 2001 section fiber 115. 10. $CCM stressStrain;
recorder Element -file Data/sez1Ele1StressStrainAccinf.out -time -ele 2001 section fiber $y1 10. $STL stressStrain;


#----------------ANALYSIS--------------------
proc MomentCurvature2D { sezRett axialLoad maxK {numIncr 100} } {
##################################################
# A procedure for performing section analysis (only does
# moment-curvature, but can be easily modified to do any mode
# of section reponse.)
#
# MHS
# October 2000
# modified to 2D and to improve convergence by Silvia Mazzoni, 2006
#
# Arguments
# secTag -- tag identifying section to be analyzed
# axialLoad -- axial load applied to section (negative is compression)
# maxK -- maximum curvature reached during analysis
# numIncr -- number of increments used to reach maxK (default 100)
#
# Sets up a recorder which writes moment-curvature results to file
# section$secTag.out ... the moment is in column 1, and curvature in column 2

# Define two nodes at (0,0)
node 1001 0.0 0.0
node 1002 0.0 0.0

# Fix all degrees of freedom except axial and bending
fix 1001 1 1 1
fix 1002 0 1 0

# Define element
# tag ndI ndJ secTag
element zeroLengthSection 2001 1001 1002 $sezRett


# Define constant axial load
pattern Plain 3001 "Constant" {
load 1002 $axialLoad 0.0 0.0
}

# Define analysis parameters
integrator LoadControl 0 1 0 0
system SparseGeneral -piv; # Overkill, but may need the pivoting!
test EnergyIncr 1.0e-9 10
numberer Plain
constraints Plain
algorithm Newton
analysis Static

# Do one analysis for constant axial load
analyze 1

# Define reference moment
pattern Plain 3002 "Linear" {
load 1002 0.0 0.0 1.0
}

# Compute curvature increment
set dK [expr $maxK/$numIncr]

# Use displacement control at node 1002 for section analysis, dof 3
integrator DisplacementControl 1002 3 $dK 1 $dK $dK

# Do the section analysis
set ok [analyze $numIncr]

# ----------------------------------------------if convergence failure-------------------------
set IDctrlNode 1002
set IDctrlDOF 3
set Dmax $maxK
set Dincr $dK
set TolStatic 1.e-9;
set testTypeStatic EnergyIncr
set maxNumIterStatic 6
set algorithmTypeStatic Newton
if {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set Dstep 0.0;
set ok 0
while {$Dstep <= 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr $controlDisp/$Dmax]
set ok [analyze 1]; # this will return zero if no convergence problems were encountered
if {$ok != 0} {; # reduce step size if still fails to converge
set Nk 4; # reduce step size
set DincrReduced [expr $Dincr/$Nk];
integrator DisplacementControl $IDctrlNode $IDctrlDOF $DincrReduced
for {set ik 1} {$ik <=$Nk} {incr ik 1} {
set ok [analyze 1]; # 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 global maxNumIterStatic; # max no. of iterations performed before "failure to converge" is ret'd
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $TolStatic 2000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {; # stop if still fails to converge
# -----------------------------------------------------------------------------------------------------
global LunitTXT; # load time-unit text
if { [info exists LunitTXT] != 1} {set LunitTXT "Length"}; # set blank if it has not been defined previously.

set fmt1 "%s Pushover analysis: CtrlNode %.3i, dof %.1i, Curv=%.4f /%s"; # format for screen/file output of DONE/PROBLEM analysis
if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts [format $fmt1 "Analisi terminata!" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
}
# -----------------------------------------------------------------------------------------------------

puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
return -1
}; # end if
}; # end for
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # bring back to original increment
}; # end if
}; # end while loop
}; # end if ok !0
}



#----------------LOADS--------------------
# [F]=[N]
# set AXIAL LOAD --------------------------------------------------------
set axialLoad -1000000.; # + Tension, - Compression

# set maximum Curvature:
set Ku 0.000261;
set numIncr 300; # Number of analysis increments to maximum curvature (default=100)

# Call the section analysis procedure
MomentCurvature2D $sezRett $axialLoad $Ku $numIncr
marcoita
Posts: 14
Joined: Wed Mar 07, 2012 1:58 am
Location: Sapienza

Re: Tension loss Steel01

Post by marcoita »

Hi Vesna,

did you take a look at my script?
I tried to use ElasticPP or the Hysteretic material insted of Steel01 but I have the same problem...
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Tension loss Steel01

Post by vesna »

My computer is broken and is at the shop last 10 days. I will test it as soon as I have my computer back.
marcoita
Posts: 14
Joined: Wed Mar 07, 2012 1:58 am
Location: Sapienza

Re: Tension loss Steel01

Post by marcoita »

Thank you!!
Post Reply