A problem about ZeroLengthSection 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
ericven
Posts: 5
Joined: Tue Apr 04, 2017 12:10 am

A problem about ZeroLengthSection Element

Post by ericven » Wed May 31, 2017 7:27 am

Dear professor
I aimed to build a model to execute a pushover analysis of a cantilever in 2D. I used the ZeroLengthSection element to simulate the effect of reinforcements slipping at the fixed end of the model. Here is my scripts :
###############################
wipe
file mkdir Data5
model basic -ndm 2 -ndf 3
source units.tcl
set 1LCol [expr 150*$cm]
set 2LCol [expr 1457*$cm]
set 3LCol [expr 3303*$cm]
set 4LCol [expr 3743*$cm]
set TLCol [expr 3953*$cm]
set PCol [expr 5000*$kN]
set Weight [expr 10000*$kN]
set Mass [expr $Weight/$g]
set mass [expr $Mass/7]
node 1 0 0
node 2 0 0
node 3 0 $1LCol
node 4 0 $2LCol
node 5 0 $3LCol
node 6 0 $4LCol
node 7 0 $TLCol
puts "nodes"
fix 1 1 1 1
fix 2 1 0 0
mass 1 $mass 1e-9 0.
mass 2 $mass 1e-9 0.
mass 3 $mass 1e-9 0.
mass 4 $mass 1e-9 0.
mass 5 $mass 1e-9 0.
mass 6 $mass 1e-9 0.
mass 7 $mass 1e-9 0.
puts "mass"
set Db1 [expr 25*$mm]
set Area1 [expr 3.14159*pow($Db1/2,2)]
set Db2 [expr 16*$mm]
set Area2 [expr 3.14159*pow($Db2/2,2)]
set Db3 [expr 12*$mm]
set Area3 [expr 3.14159*pow($Db3/2,2)]
set c [expr 40*$mm]

set Fy1 [expr 400*$Mpa]
set Fu1 [expr 540*$Mpa]
set Fy2 [expr 335*$Mpa]
set Fu2 [expr 455*$Mpa]
set Fy3 [expr 235*$Mpa]
set Esh [expr 200*$Gpa]
set esh 0.007

set Bsh 0.01
set R0 18
set cR1 0.925
set cR2 0.15
set a1 0
set a2 1
set a3 0
set a4 1
set siglnit 0

set Ec [expr 30*$Gpa]
set lambda 0.1
set Fc0 [expr -30*$Mpa]
set Fcu0 [expr 0.2*$Fc0]
set esp0 -0.003
set espu0 -0.006
set ft0 [expr -0.1*$Fc0]
set Ets0 [expr $ft0/0.002]

set K 1.2
set Fc1 [expr $K*$Fc0]
set Fcu1 [expr 0.2*$Fc1]
set esp1 -0.002
set espu1 -0.014
set ft1 [expr -0.1*$Fc1]
set Ets1 [expr $ft1/0.002]

set IDconc0 1
set IDconc1 2
set IDreinf1 3
set IDreinf2 4
set IDbond1 5
set IDbond2 6

set alpha 0.4
set b 0.5
set R 0.6
set Sy1 [expr 2.54*pow($Db1*$Fy1*(2*$alpha+1)/(8437*pow(-$Fc1,0.5)),1/$alpha)+0.34];
set Sy2 [expr 2.54*pow($Db2*$Fy2*(2*$alpha+1)/(8437*pow(-$Fc1,0.5)),1/$alpha)+0.34]
set Su1 [expr 30*$Sy1]
set Su2 [expr 30*$Sy2]

uniaxialMaterial Concrete02 $IDconc0 $Fc0 $esp0 $Fcu0 $espu0 $lambda $ft0 $Ets0
uniaxialMaterial Concrete02 $IDconc1 $Fc1 $esp1 $Fcu1 $espu1 $lambda $ft1 $Ets1
uniaxialMaterial Steel02 $IDreinf1 $Fy1 $Esh $Bsh $R0 $cR1 $cR2 $a1 $a2 $a3 $a4 $siglnit
uniaxialMaterial Steel02 $IDreinf2 $Fy2 $Esh $Bsh $R0 $cR1 $cR2 $a1 $a2 $a3 $a4 $siglnit
uniaxialMaterial Bond_SP01 $IDbond1 $Fy1 $Sy1 $Fu1 $Su1 $b $R
uniaxialMaterial Bond_SP01 $IDbond2 $Fy2 $Sy2 $Fu2 $Su2 $b $R
puts "material"
set secTag1 1
set secTag2 2
set secTag3 3
set secTag4 4
set secTag5 5
set secTag6 6
set theta1 [expr 180.+180./(78+1)]
set theta2 [expr 180.+180./(39+1)]
set endtheta1 [expr 360.-180./(78+1)]
set endtheta2 [expr 360.-180./(39+1)]
set theta3 [expr 180./(78+1)]
set theta4 [expr 180./(39+1)]
set endtheta3 [expr 180.-180./(78+1)]
set endtheta4 [expr 180.-180./(39+1)]

section Fiber $secTag1 {
patch rect $IDconc1 8 8 -2695. -900. 2695. 900.
patch rect $IDconc0 8 1 2695. -900. 2735. 900.
patch rect $IDconc0 8 1 -2735. -900. -2695. 900.
patch circ $IDconc1 8 4 0. -900. 0. 2695. 180. 360.
patch circ $IDconc0 8 1 0. -900. 2695. 2735. 180. 360.
patch circ $IDconc1 8 4 0. 900. 0. 2695. 0. 180.
patch circ $IDconc0 8 1 0. 900. 2695. 2735. 0. 180.
layer straight $IDreinf1 16 $Area1 2667. -900. 2667. 900.
layer straight $IDreinf1 16 $Area1 -2667. -900. -2667. 900.
layer straight $IDreinf2 8 $Area2 2053. -900. 2053. 900.
layer straight $IDreinf2 8 $Area2 -2053. -900. -2053. 900.
layer circ $IDreinf1 78 $Area1 0. -900. 2667. $theta1 $endtheta1
layer circ $IDreinf2 39 $Area2 0. -900. 2053. $theta2 $endtheta2
layer circ $IDreinf1 78 $Area1 0. 900. 2667. $theta3 $endtheta3
layer circ $IDreinf2 39 $Area2 0. 900. 2053. $theta4 $endtheta4
}
puts "section1"
section Fiber $secTag2 {
patch rect $IDconc1 8 1 2010. -900. 2660. 900.
patch rect $IDconc1 8 1 -2660. -900. -2010. 900.
patch rect $IDconc0 8 1 2660. -900. 2700. 900.
patch rect $IDconc0 8 1 1970. -900. 2010. 900.
patch rect $IDconc0 8 1 -2700. -900. -2660. 900.
patch rect $IDconc0 8 1 -2010. -900. -1970. 900.
patch circ $IDconc1 8 1 0. -900. 2010. 2660. 180. 360.
patch circ $IDconc0 8 1 0. -900. 2660. 2700. 180. 360.
patch circ $IDconc0 8 1 0. -900. 1970. 2010. 180. 360.
patch circ $IDconc1 8 1 0. 900. 2010. 2660. 0. 180.
patch circ $IDconc0 8 1 0. 900. 2660. 2700. 0. 180.
patch circ $IDconc0 8 1 0. 900. 1970. 2010. 0. 180.
layer straight $IDreinf1 16 $Area1 2632. -900. 2632. 900.
layer straight $IDreinf1 16 $Area1 -2632. -900. -2632. 900.
layer straight $IDreinf2 8 $Area2 2038. -900. 2038. 900.
layer straight $IDreinf2 8 $Area2 -2038. -900. -2038. 900.
layer circ $IDreinf1 78 $Area1 0. -900. 2632. $theta1 $endtheta1
layer circ $IDreinf2 39 $Area2 0. -900. 2038. $theta2 $endtheta2
layer circ $IDreinf1 78 $Area1 0. 900. 2632. $theta3 $endtheta3
layer circ $IDreinf2 39 $Area2 0. 900. 2038. $theta4 $endtheta4
}
puts "section2"
section Fiber $secTag3 {
patch rect $IDconc1 8 1 1810. -900. 2330. 900.
patch rect $IDconc1 8 1 -2330. -900. -1810. 900.
patch rect $IDconc0 8 1 2330. -900. 2370. 900.
patch rect $IDconc0 8 1 1770. -900. 1810. 900.
patch rect $IDconc0 8 1 -2370. -900. -2330. 900.
patch rect $IDconc0 8 1 -1810. -900. -1770. 900.
patch circ $IDconc1 8 1 0. -900. 1810. 2330. 180. 360.
patch circ $IDconc0 8 1 0. -900. 2330. 2370. 180. 360.
patch circ $IDconc0 8 1 0. -900. 1770. 1810. 180. 360.
patch circ $IDconc1 8 1 0. 900. 1810. 2330. 0. 180.
patch circ $IDconc0 8 1 0. 900. 2330. 2370. 0. 180.
patch circ $IDconc0 8 1 0. 900. 1770. 1810. 0. 180.
layer straight $IDreinf1 8 $Area1 2302. -900. 2302. 900.
layer straight $IDreinf1 8 $Area1 -2302. -900. -2302. 900.
layer straight $IDreinf2 8 $Area2 1838. -900. 1838. 900.
layer straight $IDreinf2 8 $Area2 -1838. -900. -1838. 900.
layer circ $IDreinf1 39 $Area1 0. -900. 2302. $theta1 $endtheta1
layer circ $IDreinf2 39 $Area2 0. -900. 1838. $theta2 $endtheta2
layer circ $IDreinf1 39 $Area1 0. 900. 2302. $theta3 $endtheta3
layer circ $IDreinf2 39 $Area2 0. 900. 1838. $theta4 $endtheta4
}
puts "section3"
section Fiber $secTag4 {
patch rect $IDconc1 8 1 1530. -900. 1870. 900.
patch rect $IDconc1 8 1 -1870. -900. -1530. 900.
patch rect $IDconc0 8 1 1870. -900. 1910. 900.
patch rect $IDconc0 8 1 1490. -900. 1530. 900.
patch rect $IDconc0 8 1 -1910. -900. -1870. 900.
patch rect $IDconc0 8 1 -1530. -900. -1490. 900.
patch circ $IDconc1 8 1 0. -900. 1530. 1870. 180. 360.
patch circ $IDconc0 8 1 0. -900. 1870. 1910. 180. 360.
patch circ $IDconc0 8 1 0. -900. 1490. 1530. 180. 360.
patch circ $IDconc1 8 1 0. 900. 1530. 1870. 0. 180.
patch circ $IDconc0 8 1 0. 900. 1870. 1910. 0. 180.
patch circ $IDconc0 8 1 0. 900. 1490. 1530. 0. 180.
layer straight $IDreinf1 16 $Area1 1842. -900. 1842. 900.
layer straight $IDreinf1 16 $Area1 -1842. -900. -1842. 900.
layer straight $IDreinf2 8 $Area2 1558. -900. 1558. 900.
layer straight $IDreinf2 8 $Area2 -1558. -900. -1558. 900.
layer circ $IDreinf1 78 $Area1 0. -900. 1842. $theta1 $endtheta1
layer circ $IDreinf2 39 $Area2 0. -900. 1558. $theta2 $endtheta2
layer circ $IDreinf1 78 $Area1 0. 900. 1842. $theta3 $endtheta3
layer circ $IDreinf2 39 $Area2 0. 900. 1558. $theta4 $endtheta4
}
puts "section4"
section Fiber $secTag5 {
patch rect $IDconc1 8 8 -1760. -900. 1760. 900.
patch rect $IDconc0 8 1 1760. -900. 1800. 900.
patch rect $IDconc0 8 1 -1800. -900. -1760. 900.
patch circ $IDconc1 8 4 0. -900. 0. 1760. 180. 360.
patch circ $IDconc0 8 1 0. -900. 1760. 1800. 180. 360.
patch circ $IDconc1 8 4 0. 900. 0. 1760. 0. 180.
patch circ $IDconc0 8 1 0. 900. 1760. 1800. 0. 180.
layer straight $IDreinf1 16 $Area1 1732. -900. 1732. 900.
layer straight $IDreinf1 16 $Area1 -1732. -900. -1732. 900.
layer straight $IDreinf2 8 $Area2 1498. -900. 1498. 900.
layer straight $IDreinf2 8 $Area2 -1498. -900. -1498. 900.
layer circ $IDreinf1 78 $Area1 0. -900. 1732. $theta1 $endtheta1
layer circ $IDreinf2 39 $Area2 0. -900. 1498. $theta2 $endtheta2
layer circ $IDreinf1 78 $Area1 0. 900. 1732. $theta3 $endtheta3
layer circ $IDreinf2 39 $Area2 0. 900. 1498. $theta4 $endtheta4
}
puts "section5"
section Fiber $secTag6 {
patch rect $IDconc1 8 8 -2695. -900. 2695. 900.
patch rect $IDconc0 8 1 2695. -900. 2735. 900.
patch rect $IDconc0 8 1 -2735. -900. -2695. 900.
patch circ $IDconc1 8 4 0. -900. 0. 2695. 180. 360.
patch circ $IDconc0 8 1 0. -900. 2695. 2735. 180. 360.
patch circ $IDconc1 8 4 0. 900. 0. 2695. 0. 180.
patch circ $IDconc0 8 1 0. 900. 2695. 2735. 0. 180.
layer straight $IDbond1 16 $Area1 2667. -900. 2667. 900.
layer straight $IDbond1 16 $Area1 -2667. -900. -2667. 900.
layer straight $IDbond2 8 $Area2 2053. -900. 2053. 900.
layer straight $IDbond2 8 $Area2 -2053. -900. -2053. 900.
layer circ $IDbond1 78 $Area1 0. -900. 2667. $theta1 $endtheta1
layer circ $IDbond2 39 $Area2 0. -900. 2053. $theta2 $endtheta2
layer circ $IDbond1 78 $Area1 0. 900. 2667. $theta3 $endtheta3
layer circ $IDbond2 39 $Area2 0. 900. 2053. $theta4 $endtheta4
}
puts "section6"
set ColTransfTag1 1
set ColTransfTag2 2
set ColTransfTag3 3
set ColTransfTag4 4
set ColTransfTag5 5
geomTransf Linear $ColTransfTag1
geomTransf Linear $ColTransfTag2
geomTransf Linear $ColTransfTag3
geomTransf Linear $ColTransfTag4
geomTransf Linear $ColTransfTag5
puts "transformations"
set numIntgrPts 3
element nonlinearBeamColumn 1 2 3 $numIntgrPts $secTag1 $ColTransfTag1
element nonlinearBeamColumn 2 3 4 $numIntgrPts $secTag2 $ColTransfTag2
element nonlinearBeamColumn 3 4 5 $numIntgrPts $secTag3 $ColTransfTag3
element nonlinearBeamColumn 4 5 6 $numIntgrPts $secTag4 $ColTransfTag4
element nonlinearBeamColumn 5 6 7 $numIntgrPts $secTag5 $ColTransfTag5
element zeroLengthSection 6 1 2 $secTag6
puts "elements"
recorder Node -file Data5/DFree.out -time -node 6 -dof 1 2 3 disp
recorder Node -file Data5/DBase.out -time -node 2 -dof 1 2 3 disp
recorder Node -file Data5/RBase.out -time -node 2 -dof 1 2 3 reaction
recorder Drift -file Data5/Drift.out -time -iNode 5 -jNode 6 -dof 1 -perpDirn 2
recorder Element -file Data5/FCol.out -time -ele 1 globalForce
recorder Element -file Data5/ForceColSec1.out -time -ele 1 section 1 force
recorder Element -file Data5/DefoColSec1.out -time -ele 1 section 1 deformation
recorder Element -file Data5/ForceZero.out -time -ele 2 section 1 stressStrain
puts "recorder"
pattern Plain 1 Linear {
load 7 0 -$PCol 0
}
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]
integrator LoadControl $DGravity
analysis Static
analyze $NstepGravity
loadConst -time 0.0
puts "Model Built"
set Push [expr 0.2*$PCol]
pattern Plain 2 Linear {
load 7 $Push 0. 0.
}
constraints Plain
numberer Plain
system BandGeneral
test NormDispIncr $Tol 6
algorithm Newton
integrator DisplacementControl 7 1 2.000E-1
analysis Static
analyze 100
puts "Pushover"
############################
Please note my fix command, I write it as
############################
fix 1 1 1 1
fix 2 1 0 0
############################
Is this the right way to restrict the nodes of zerolengthsection ?
if it is right ,why I get the error as follow:
################################################
OpenSees > source 123.tcl
nodes
mass
material
section1
section2
section3
section4
section5
section6
transformations
elements
recorder
WARNING - ForceBeamColumn2d::update - failed to get compatible element forces & deformations for element: 2(dW: << 2.66492e+026)
WARNING - ForceBeamColumn2d::update - failed to get compatible element forces & deformations for element: 3(dW: << 1.70352e+053)
WARNING - ForceBeamColumn2d::update - failed to get compatible element forces & deformations for element: 4(dW: << 8.16466e+024)
WARNING - ForceBeamColumn2d::update - failed to get compatible element forces & deformations for element: 5(dW: << 2.34204e+021)
Domain::update - domain failed in update
LoadControl::update - model failed to update for new dU
WARNING NewtonRaphson::solveCurrentStep() -the Integrator failed in update()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 0.1
OpenSees > analyze failed, returned: -3 error flag
Model Built
WARNING: CTestNormDispIncr::test() - failed to converge
after: 6 iterations current Norm: 20749.2 (max: 1e-008, Norm deltaR: 3.59759e+008)
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 2 with domain at load factor 1.85544e-005
OpenSees > analyze failed, returned: -3 error flag
Pushover
#################################################
PS:
If I don't use the zerolengthsection , the model runs well.

Please help me to overcome this problem, thank you very much !

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: A problem about ZeroLengthSection Element

Post by selimgunay » Wed May 31, 2017 9:22 pm

Could you try

fix 2 0 1 1. This element is only a section with zero length so it should not result in any rotation or axial deformation difference between its two nodes, however the resulting stiffness contribution from the section should change the lateral displacement. Therefore, might be good to try fix 2 0 1 1.

prczhangqian
Posts: 2
Joined: Thu Nov 30, 2017 5:36 pm
Location: Southeast University

Re: A problem about ZeroLengthSection Element

Post by prczhangqian » Wed Dec 06, 2017 5:06 pm

I have a same problem, do you have solved it?

WendyZhao
Posts: 6
Joined: Mon Oct 10, 2016 7:36 pm
Location: Chongqing University

Re: A problem about ZeroLengthSection Element

Post by WendyZhao » Fri Jun 15, 2018 6:58 am

I find that it is hard to analysis by Displacement-controlled integrator when using ZeroLength Section Model.

Post Reply