Zero length section element

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

Moderators: silvia, selimgunay, Moderators

Post Reply
DKJung
Posts: 4
Joined: Wed Apr 22, 2015 11:13 pm

Zero length section element

Post by DKJung »

Hi, I have a question about zero length section element.

I built a RC column fixed at the bottom in OpenSees and built another RC column that has exactly the same section except that this column has a zero length section element at the bottom.
Mass is attached at the top node.
When these columns are subjected to the same earthquake loading, I found that the 2nd column (with zero length section element at the bottom) had greater displacement at the top in horizontal direction.
I first expected both columns have the same displacement which turned out to be wrong from my transient analysis result. Does zero length section element induced more section deformation at the bottom?
Can anyone explain if this result make sense? I post the OpenSees model below.
Thank you.


1st column fixed at the bottom without zero length section element
#################################################################################
# ------------------------------
# Start of model generation
# ------------------------------

# Create ModelBuilder (with three-dimensions and 6 DOF/node)
# Units (in&k)
model BasicBuilder -ndm 2

# Create nodes
# ------------
# 1st column
# tag X Y
node 100 0 48
node 101 0 60
node 102 0 72
node 103 0 84
node 104 0 96
node 105 0 108
node 106 0 120


# Fix supports at base of columns
# tag DX DY Rz
fix 100 1 1 1


# Low Confinement
set fpc1 -6.66; # peak stress of core concrete (external SMA)
set epsc1 -0.0028; # peak strain of core concrete (external SMA)
set epscu1 -0.051; # ultimate strain of core concrete (external SMA)
set Ec1 4230;
set ftc1 0.01;
set et1 [expr 2*$ftc1/$Ec1]; # tensile strength of core concrete (external SMA)

set fpc2 -6.281; # peak stress of core concrete (internal steel)
set epsc2 -0.0030; # peak strain of core concrete (internal steel)
set epscu2 -0.0260; # ultimate strain of core concrete (internal steel)

set fpc3 -5.7; # peak stress of cover concrete
set epsc3 -0.002; # peak strain of cover concrete
set epscu3 -0.005; # ultimate strain of cover concrete


# Define materials for nonlinear columns
# CONCRETE
# SMA confined concrete $Tag $fc $ec $Ec $ft $et $xp $xn $r
uniaxialMaterial Concrete04 1 [expr $fpc1] [expr $epsc1] [expr $epscu1] $Ec1;# $ftc1 $et1 0.1

# Core Concrete (unconfined) $Tag $fc $ec $ecu $Ec <$fct $et> <$beta>
uniaxialMaterial Concrete04 2 [expr $fpc2] [expr $epsc2] [expr $epscu2] $Ec1;# $ftc1 $et1 0.1

# Cover Concrete (unconfined) $Tag $fc $ec $ecu $Ec <$fct $et> <$beta>
uniaxialMaterial Concrete04 3 [expr $fpc3] [expr $epsc3] [expr $epscu3] $Ec1;# $ftc1 $et1 0.1

# STEEL
# Reinforcing steel
set fy 60; # Yield stress
set E 29000; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 4 $fy $E 0.010

# Define cross-section for nonlinear columns
# ------------------------------------------

# set some parameters
set colWidth 12.0
set colDepth 12.0

set cover 1.0
set r 0.250
set pi 3.141593
set As [expr $pi*pow($r,2)]

# some variables derived from the parameters
set y1 [expr $colDepth/2]
set z1 [expr $colWidth/2]
set numfiber 24

section Fiber 1 {

# Create the concrete core fibers
patch rect 1 $numfiber 1 [expr -$y1] [expr -$z1] [expr $y1] [expr $z1]

# Create the reinforcing fibers (left, right)
layer straight 4 4 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 4 2 $As [expr 10.0/6] [expr $z1-$cover] [expr 10.0/6] [expr $cover-$z1]
layer straight 4 2 $As [expr -10.0/6] [expr $z1-$cover] [expr -10.0/6] [expr $cover-$z1]
layer straight 4 4 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}

section Fiber 2 {

# Create the concrete core fibers
patch rect 2 [expr $numfiber-4] 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]

# Create the concrete cover fibers (top, bottom, left, right)
patch rect 3 $numfiber 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 3 $numfiber 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]

# Create the reinforcing fibers (left, right)
layer straight 4 4 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 4 2 $As [expr 10.0/6] [expr $z1-$cover] [expr 10.0/6] [expr $cover-$z1]
layer straight 4 2 $As [expr -10.0/6] [expr $z1-$cover] [expr -10.0/6] [expr $cover-$z1]
layer straight 4 4 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}


# Define column element
# ----------------------
# Geometry of column elements (To define the orientation of column)
# tag $vecxzX $vecxzY $vecxzZ
geomTransf Linear 1

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

# Create the columns using Beam-column elements
# tag ndI ndJ nsecs secID transfTag
# 1st column
element forceBeamColumn 10 100 101 $np 1 1
element forceBeamColumn 11 101 102 $np 2 1
element forceBeamColumn 12 102 103 $np 2 1
element forceBeamColumn 13 103 104 $np 2 1
element forceBeamColumn 14 104 105 $np 2 1
element forceBeamColumn 15 105 106 $np 2 1


# ------------------------------
# End of model generation
# ------------------------------

# ------------------------------
# Start of recorder generation
# ------------------------------

recorder Node -file node101_Disp_C0.out -time -precision 15 -node 101 -dof 1 2 3 disp
recorder Node -file node106_Disp_C0.out -time -precision 15 -node 106 -dof 1 2 3 disp

recorder Element -file fib01sec01ele10_StrsStrn_C0.out -time -precision 15 -ele 10 section 1 fiber [expr ($colDepth/24)*11.5] 0.0 stressStrain
recorder Element -file fib20sec01ele10_StrsStrn_C0.out -time -precision 15 -ele 10 section 1 fiber [expr -($colDepth/24)*11.5] 0.0 stressStrain

recorder Element -file stl01sec01ele10_StrsStrn_C0.out -time -precision 15 -ele 10 section 1 fiber 5.0 0.0 stressStrain
recorder Element -file stl02sec01ele10_StrsStrn_C0.out -time -precision 15 -ele 10 section 1 fiber [expr 10.0/6] 0.0 stressStrain
recorder Element -file stl03sec01ele10_StrsStrn_C0.out -time -precision 15 -ele 10 section 1 fiber [expr -10.0/6] 0.0 stressStrain
recorder Element -file stl05sec01ele10_StrsStrn_C0.out -time -precision 15 -ele 10 section 1 fiber -5.0 0.0 stressStrain

recorder Element -file ele10_Global_C0.out -time -precision 15 -ele 10 -dof globalForce
recorder Node -file node100_React_C0.out -time -precision 15 -node 100 -dof 1 2 3 reaction
recorder Node -file node201_React_C0.out -time -precision 15 -node 201 -dof 1 2 3 reaction

# Set a parameter for the axial load
set P [expr $colDepth*$colWidth*5.7*0.05]; # 5% of axial capacity of columns
timeSeries Linear 1

# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 1 {
# Create nodal loads at nodes 3
# nd FX FY MZ
load 106 0.0 [expr -$P] 0.0
}
# initialize in case we need to do an initial stiffness iteration
# initialize
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
numberer RCM
test EnergyIncr 1.0e-15 20 0
algorithm Newton
integrator LoadControl 1
analysis Static
analyze 1

# ------------------------------
# End of static analysis generation
# ------------------------------


# ------------------------------
# Start of transient analysis generation
# ------------------------------
loadConst -time 0.0
wipeAnalysis

# Create the system of equation, a sparse solver with partial pivoting
# system SparseGeneral
# system BandSPD
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
# constraints Penalty 1E20 1E20

# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer Plain

# Create the convergence test
test NormDispIncr 1.0e-12 50 0

# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton

set g [expr 386.4*1.0]
# define mass
# tag MX MY Mz
mass 106 0.1067 0.1067 0

set dt 0.02
set outFile elcentro.dat
# set outFile northridge.dat


# Set time series to be passed to uniform excitation
set accelSeries "Path -filePath $outFile -dt $dt -factor $g"
pattern UniformExcitation 4 1 -accel $accelSeries
rayleigh 0.0 0.0 0.0 0.0

integrator Newmark 0.5 0.25
analysis Transient

# set some variables
set tFinal [expr 2.00]
set tCurrent [getTime]
set ok 0

# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {

set ok [analyze 1 .00005]

# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initial stiffness for this step"
test NormDispIncr 1.0e-5 100 0
algorithm ModifiedNewton -initial
set ok [analyze 1 .00005]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-5 100
algorithm Newton
}

set tCurrent [getTime]

}

# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
}

#################################################################################



2nd column with zero length section element at the bottom
#################################################################################
# ------------------------------
# Start of model generation
# ------------------------------

# Create ModelBuilder (with three-dimensions and 6 DOF/node)
# Units (in&k)
model BasicBuilder -ndm 2

# Create nodes
# ------------
# 1st column
# tag X Y
node 100 0 48
node 101 0 60
node 102 0 72
node 103 0 84
node 104 0 96
node 105 0 108
node 106 0 120
node 107 0 48


# Fix supports at base of columns
# tag DX DY Rz
fix 100 1 1 1
fix 107 1 0 0

# Low Confinement
set fpc1 -6.66; # peak stress of core concrete (external SMA)
set epsc1 -0.0028; # peak strain of core concrete (external SMA)
set epscu1 -0.051; # ultimate strain of core concrete (external SMA)
set Ec1 4230;
set ftc1 0.01;
set et1 [expr 2*$ftc1/$Ec1]; # tensile strength of core concrete (external SMA)

set fpc2 -6.281; # peak stress of core concrete (internal steel)
set epsc2 -0.0030; # peak strain of core concrete (internal steel)
set epscu2 -0.0260; # ultimate strain of core concrete (internal steel)

set fpc3 -5.7; # peak stress of cover concrete
set epsc3 -0.002; # peak strain of cover concrete
set epscu3 -0.005; # ultimate strain of cover concrete


# Define materials for nonlinear columns
# CONCRETE
# SMA confined concrete $Tag $fc $ec $Ec $ft $et $xp $xn $r
uniaxialMaterial Concrete04 1 [expr $fpc1] [expr $epsc1] [expr $epscu1] $Ec1;# $ftc1 $et1 0.1

# Core Concrete (unconfined) $Tag $fc $ec $ecu $Ec <$fct $et> <$beta>
uniaxialMaterial Concrete04 2 [expr $fpc2] [expr $epsc2] [expr $epscu2] $Ec1;# $ftc1 $et1 0.1

# Cover Concrete (unconfined) $Tag $fc $ec $ecu $Ec <$fct $et> <$beta>
uniaxialMaterial Concrete04 3 [expr $fpc3] [expr $epsc3] [expr $epscu3] $Ec1;# $ftc1 $et1 0.1

# STEEL
# Reinforcing steel
set fy 60; # Yield stress
set E 29000; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 4 $fy $E 0.010

# Define cross-section for nonlinear columns
# ------------------------------------------

# set some parameters
set colWidth 12.0
set colDepth 12.0

set cover 1.0
set r 0.250
set pi 3.141593
set As [expr $pi*pow($r,2)]

# some variables derived from the parameters
set y1 [expr $colDepth/2]
set z1 [expr $colWidth/2]
set numfiber 24

section Fiber 1 {

# Create the concrete core fibers
patch rect 1 $numfiber 1 [expr -$y1] [expr -$z1] [expr $y1] [expr $z1]

# Create the reinforcing fibers (left, right)
layer straight 4 4 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 4 2 $As [expr 10.0/6] [expr $z1-$cover] [expr 10.0/6] [expr $cover-$z1]
layer straight 4 2 $As [expr -10.0/6] [expr $z1-$cover] [expr -10.0/6] [expr $cover-$z1]
layer straight 4 4 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}

section Fiber 2 {

# Create the concrete core fibers
patch rect 2 [expr $numfiber-4] 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]

# Create the concrete cover fibers (top, bottom, left, right)
patch rect 3 $numfiber 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 3 $numfiber 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]

# Create the reinforcing fibers (left, right)
layer straight 4 4 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 4 2 $As [expr 10.0/6] [expr $z1-$cover] [expr 10.0/6] [expr $cover-$z1]
layer straight 4 2 $As [expr -10.0/6] [expr $z1-$cover] [expr -10.0/6] [expr $cover-$z1]
layer straight 4 4 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]

}


# Define column element
# ----------------------
# Geometry of column elements (To define the orientation of column)
# tag $vecxzX $vecxzY $vecxzZ
geomTransf Linear 1

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

# Create the columns using Beam-column elements
# tag ndI ndJ nsecs secID transfTag
# 1st column
element zeroLengthSection 20 100 107 1 -orient 0 1 0 -1 0 0
element forceBeamColumn 10 107 101 $np 1 1
element forceBeamColumn 11 101 102 $np 2 1
element forceBeamColumn 12 102 103 $np 2 1
element forceBeamColumn 13 103 104 $np 2 1
element forceBeamColumn 14 104 105 $np 2 1
element forceBeamColumn 15 105 106 $np 2 1


# ------------------------------
# End of model generation
# ------------------------------

# ------------------------------
# Start of recorder generation
# ------------------------------

recorder Node -file node101_Disp_C1.out -time -precision 15 -node 101 -dof 1 2 3 disp
recorder Node -file node106_Disp_C1.out -time -precision 15 -node 106 -dof 1 2 3 disp

recorder Element -file fib01sec01ele10_StrsStrn_C1.out -time -precision 15 -ele 10 section 1 fiber [expr ($colDepth/24)*11.5] 0.0 stressStrain
recorder Element -file fib20sec01ele10_StrsStrn_C1.out -time -precision 15 -ele 10 section 1 fiber [expr -($colDepth/24)*11.5] 0.0 stressStrain

recorder Element -file fib01zero_StrsStrn_C1.out -time -precision 15 -ele 20 section fiber [expr ($colDepth/24)*11.5] 0.0 stressStrain
recorder Element -file fib20zero_StrsStrn_C1.out -time -precision 15 -ele 20 section fiber [expr -($colDepth/24)*11.5] 0.0 stressStrain

recorder Element -file stl01sec01ele10_StrsStrn_C1.out -time -precision 15 -ele 10 section 1 fiber 5.0 0.0 stressStrain
recorder Element -file stl02sec01ele10_StrsStrn_C1.out -time -precision 15 -ele 10 section 1 fiber [expr 10.0/6] 0.0 stressStrain
recorder Element -file stl03sec01ele10_StrsStrn_C1.out -time -precision 15 -ele 10 section 1 fiber [expr -10.0/6] 0.0 stressStrain
recorder Element -file stl05sec01ele10_StrsStrn_C1.out -time -precision 15 -ele 10 section 1 fiber -5.0 0.0 stressStrain

recorder Element -file stl01zero_StrsStrn_C1.out -time -precision 15 -ele 20 section fiber 5.0 0.0 stressStrain
recorder Element -file stl05zero_StrsStrn_C1.out -time -precision 15 -ele 20 section fiber -5.0 0.0 stressStrain

recorder Element -file ele10_Global_C1.out -time -precision 15 -ele 10 -dof globalForce
recorder Node -file node100_React_C1.out -time -precision 15 -node 100 -dof 1 2 3 reaction
recorder Node -file node201_React_C1.out -time -precision 15 -node 201 -dof 1 2 3 reaction

# Set a parameter for the axial load
set P [expr $colDepth*$colWidth*5.7*0.05]; # 5% of axial capacity of columns
timeSeries Linear 1

# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 1 {
# Create nodal loads at nodes 3
# nd FX FY MZ
load 106 0.0 [expr -$P] 0.0
}
# initialize in case we need to do an initial stiffness iteration
# initialize
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
numberer RCM
test EnergyIncr 1.0e-15 20 0
algorithm Newton
integrator LoadControl 1
analysis Static
analyze 1

# ------------------------------
# End of static analysis generation
# ------------------------------


# ------------------------------
# Start of transient analysis generation
# ------------------------------
loadConst -time 0.0
wipeAnalysis

# Create the system of equation, a sparse solver with partial pivoting
# system SparseGeneral
# system BandSPD
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
# constraints Penalty 1E20 1E20

# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer Plain

# Create the convergence test
test NormDispIncr 1.0e-12 50 0

# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton

set g [expr 386.4*1.0]
# define mass
# tag MX MY Mz
mass 106 0.1067 0.1067 0

set dt 0.02
set outFile elcentro.dat
# set outFile northridge.dat



# Set time series to be passed to uniform excitation
set accelSeries "Path -filePath $outFile -dt $dt -factor $g"
pattern UniformExcitation 4 1 -accel $accelSeries
rayleigh 0.0 0.0 0.0 0.0

integrator Newmark 0.5 0.25
analysis Transient

# set some variables
set tFinal [expr 2.00]
set tCurrent [getTime]
set ok 0

# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {

set ok [analyze 1 .00005]

# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initial stiffness for this step"
test NormDispIncr 1.0e-5 100 0
algorithm ModifiedNewton -initial
set ok [analyze 1 .00005]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-5 100
algorithm Newton
}

set tCurrent [getTime]

}

# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
}

#################################################################################
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Zero length section element

Post by fmk »

of course it effects the response. you have a concentrated hinge at the base with the zeroLength section. the moment is same at base of the bottom element so the deformation in 2 models is same for the force eeent part, but there is additional rotation at base with hinge and hence additional deformation.

as for your modeling: the zerolength element section needs to be a moment-rotation relationship passed in the material, yet you are using the same section as in the force based elements, which are moment-curvature. as i presume the section you are providing to beam element is correct you would have to modify the one given to the zero length.

and if using multiple elements along a column length use the displacement beam column.
DKJung
Posts: 4
Joined: Wed Apr 22, 2015 11:13 pm

Re: Zero length section element

Post by DKJung »

Thank you for your advice.
I would like to clarify if I understood correctly. Please let me know if I am still wrong.
1. You are telling me that 'zeroLengthSection Element' I used in the model represents moment-curvature relationship at a section. To be able to use it as a element, it needs to be modified such that it represents moment-rotation relationship since the element needs to share translations (dx & dy) and rotation (rz) with the adjacent element.

2. If I understood correctly, how can I modify the model? I would like to make an element (at the very bottom of the column) that has one section using the fibers & materials as the rest of the column. How can I modify the model? Do I need to use 'zeroLength Element' instead of 'ZeroLengthSection Element' to represent moment-rotation relationship? Or is there other ways to represent moment-rotation relationship with 'ZeroLengthSection Element'?

Your support is greatly appreciated.
Thank you!
Post Reply