Difficult to trace descending response
Moderators: silvia, selimgunay, Moderators
-
- Posts: 140
- Joined: Sun Oct 03, 2010 11:36 pm
- Location: Hong Kong
Difficult to trace descending response
Dear silvia and fmk,
I want to model behavior of pinned-end concrete column under eccentric loading at both ends. It is easy to trace the first ascending branch of the axial load-midheight lateral deflection curve; however the descending branch could not be predicted with the following error appears:
WARNING: CTestNormDispIncr::test() - failed to converge
after: 2000 iterations
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 862 with domain at load factor 434.021
OpenSees > analyze failed, returned: -3 error flag
I tried six forcebeamcolumn element for the column for enough integration points. The eccentricity is 20mm. So that an axial load plus the moment (axial load*20) are added at both ends. I've tried different system, test, algorithm, geomTransf, integrator (displacement control, arch length) but all of them were failed.
I've checked the stress-strain responses at each section for both concrete fiber and steel fiber, none of them reached the ultimate points but some of the concrete stress-strain curve with small vibrations.
So I assume that the nonconvergence is due to the geometric nonlinearity. How could I do to trace the descending response? Any tricky method?
Please see the referred picture here:
https://lh4.googleusercontent.com/-Ie42 ... no/ecc.png
I will post the tcl script if you want.
Many thanks!
I want to model behavior of pinned-end concrete column under eccentric loading at both ends. It is easy to trace the first ascending branch of the axial load-midheight lateral deflection curve; however the descending branch could not be predicted with the following error appears:
WARNING: CTestNormDispIncr::test() - failed to converge
after: 2000 iterations
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 862 with domain at load factor 434.021
OpenSees > analyze failed, returned: -3 error flag
I tried six forcebeamcolumn element for the column for enough integration points. The eccentricity is 20mm. So that an axial load plus the moment (axial load*20) are added at both ends. I've tried different system, test, algorithm, geomTransf, integrator (displacement control, arch length) but all of them were failed.
I've checked the stress-strain responses at each section for both concrete fiber and steel fiber, none of them reached the ultimate points but some of the concrete stress-strain curve with small vibrations.
So I assume that the nonconvergence is due to the geometric nonlinearity. How could I do to trace the descending response? Any tricky method?
Please see the referred picture here:
https://lh4.googleusercontent.com/-Ie42 ... no/ecc.png
I will post the tcl script if you want.
Many thanks!
Research Assistant Professor, The Hong Kong Polytechnic University
guanlin@polyu.edu.hk
guanlin@polyu.edu.hk
Re: Difficult to trace descending response
First of all, maybe you should change the number of maximum iterations of the test command to something bigger, like 50000 (?). I have found too that at descending branches the convergence is difficult, especially if there are brittle faults in the model and the curve is almost vertical. From my experience I've found that the best solution is to use the NewtonLineSearch algorithm. I use in my code the following parameters: algorithm NewtonLineSearch -tol 1.0e-6 -maxIter 50000. I know they might be extreme, but they work better than the default ones. However, NewtonLineSearch tends to produce wrong results sometimes close to failure, so use with caution.
-
- Posts: 140
- Joined: Sun Oct 03, 2010 11:36 pm
- Location: Hong Kong
Re: Difficult to trace descending response
Thanks, Lost!
I've tried as you suggested, unfortunately, it still doesn't work.
The script is here:
-------------------------------------------
set dataDir data; # set up name of data directory (can remove this)
file mkdir $dataDir; # create data directory
model basic -ndm 2 -ndf 3
### Geometry and Topology Info
set LCol 1200.0
## Node Info
node 1 0 0.000
node 2 [expr 1.0*$LCol/6] 0.000
node 3 [expr 2.0*$LCol/6] 0.000
node 4 [expr 3.0*$LCol/6] 0.000
node 5 [expr 4.0*$LCol/6] 0.000
node 6 [expr 5.0*$LCol/6] 0.000
node 7 [expr 6.0*$LCol/6] 0.000
## Support Info
fix 1 1 1 0
fix 7 0 1 0
set PI 3.1415926;
set DSec 152.0; # Column Diameter
set clearcover 19;
set cover 25;
set Dreinf 6.4; # Diameter of longitudinal-reinforcement bar
set numBarsSec 4; # number of uniformly-distributed longitudinal-reinforcement bars
##
set fc0 -35.5;
#set fcc -40.7;
#set ecu -0.00788;
set fcc -60.1;
set ecu -0.01443;
#set ec0 [expr -9.37e-4*pow((-1.0*$fc0),0.25)];
set ec0 -0.002
set Ec [expr 4730.0*sqrt(-1.0*$fc0)];
set ft [expr 0.623*sqrt(-1.0*$fc0)];
set Ets [expr 0.05*$Ec];
set fy [expr 710.0];
set fu [expr 732.0];
set ey [expr 0.00561];
set Es [expr 190000.0];
#puts Es=$Es
set eult [expr 0.01893];
set b [expr ($fu-$fy)/($eult-$ey)/$Es];
# Material Info
# CONCRETE
# uniaxialMaterial Concrete02 $matTag $fpc $epsc0 $fpcu $epsU $lambda $ft $Ets
uniaxialMaterial Concrete02 1 $fc0 $ec0 $fcc $ecu 0.8 $ft $Ets
# STEEL
# uniaxialMaterial Steel02 $matTag $Fy $E $b $R0 $cR1 $cR2
set R0 15
set cR1 0.925
set cR2 0.15
uniaxialMaterial Steel02 2 $fy $Es $b $R0 $cR1 $cR2
set IDfrpconc 1
set IDreinf 2
# Section Info
set Col_frpSecTag 1; # set tag for FRP section
set barAreaSec [expr $PI*$Dreinf*$Dreinf/4.0]; # area of longitudinal-reinforcement bars
set ri 0; # inner radius of the section, only for hollow sections
set ro [expr $DSec/2.0]; # overall (outer) radius of the section
set nfCoreR 14; # number of radial divisions in the core (number of "rings")
set nfCoreT 16; # number of theta divisions in the core (number of "wedges")
set rc [expr $ro-$cover]; # Core radius
section fiberSec $Col_frpSecTag {
patch circ $IDfrpconc $nfCoreT $nfCoreR 0 0 $ri $ro [expr -180.0/$nfCoreT] [expr 360-180.0/$nfCoreT]; # Define the core patch
set theta [expr 360.0/$numBarsSec]; # Determine angle increment between bars
layer circ $IDreinf $numBarsSec $barAreaSec 0 0 $rc $theta 360; # Define the reinforcing layer
}
# Load Info
set PVer [expr 1000.0];
set ecc 20.0; # eccentricity (mm)
# Integration Info
set nP 5;
# Geometric transformation
set ColTransfTag 1; # associate a tag to column transformation
geomTransf LinearWithPDelta $ColTransfTag
#geomTransf PDelta $ColTransfTag
#geomTransf Corotational $ColTransfTag
#geomTransf Linear $ColTransfTag
# Element Info
#element dispBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag
element forceBeamColumn 1 1 2 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 2 2 3 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 3 3 4 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 4 4 5 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 5 5 6 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 6 6 7 $nP $Col_frpSecTag $ColTransfTag;
# Define loads
pattern Plain 1 Linear {
load 1 0 0 [expr -$PVer*$ecc]
load 7 -$PVer 0 [expr $PVer*$ecc]
}
recorder Node -file $dataDir/disp.out -time -node 4 -dof 1 2 3 disp
recorder Element -file $dataDir/steel.out -time -ele 3 section 5 fiber [expr $rc] 0 2 stressStrain; # IDreinf fiber stress-strain
set IDctrlNode 7
set IDctrlDOF 1
## End of model generation
# Start of analysis generation for vertical load
puts goVerticalLoad
#Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-5; # convergence tolerance for test
#variable constraintsTypeGravity Plain; # default;
variable constraintsTypeGravity Transformation; # default;
if { [info exists RigidDiaphragm] == 1} {
if {$RigidDiaphragm=="ON"} {
variable constraintsTypeGravity Lagrange; # large model: try Transformation
}; # if rigid diaphragm is on
}; # if rigid diaphragm exists
constraints $constraintsTypeGravity ; # how it handles boundary conditions
#constraints Transformation
#constraints Lagrange
numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
#system BandGeneral ; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
system SparseGeneral -piv
#test RelativeEnergyIncr 1.e-8 6 0 0 # determine if convergence has been achieved at the end of an iteration step
#test NormDispIncr $Tol 10;
test NormDispIncr $Tol 2000 0
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
#algorithm Broyden 8
#algorithm NewtonLineSearch 0.8
set Predisp -20.0;
set Nstep 10000
set Dincr [expr $Predisp/$Nstep];
puts $Dincr
#set Nstep [expr int($Predisp/$Dincr)]; # apply gravity in 10 steps
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
#integrator ArcLength 1.0 0.1;
#integrator MinUnbalDispNorm 1.0;
analysis Static
# initialize the model, done to set initial tangent
initialize
analyze $Nstep; # apply gravity
# End of analysis generation for gravity analysis
puts DoneAnalysis
# Perform the analysis
I've tried as you suggested, unfortunately, it still doesn't work.
The script is here:
-------------------------------------------
set dataDir data; # set up name of data directory (can remove this)
file mkdir $dataDir; # create data directory
model basic -ndm 2 -ndf 3
### Geometry and Topology Info
set LCol 1200.0
## Node Info
node 1 0 0.000
node 2 [expr 1.0*$LCol/6] 0.000
node 3 [expr 2.0*$LCol/6] 0.000
node 4 [expr 3.0*$LCol/6] 0.000
node 5 [expr 4.0*$LCol/6] 0.000
node 6 [expr 5.0*$LCol/6] 0.000
node 7 [expr 6.0*$LCol/6] 0.000
## Support Info
fix 1 1 1 0
fix 7 0 1 0
set PI 3.1415926;
set DSec 152.0; # Column Diameter
set clearcover 19;
set cover 25;
set Dreinf 6.4; # Diameter of longitudinal-reinforcement bar
set numBarsSec 4; # number of uniformly-distributed longitudinal-reinforcement bars
##
set fc0 -35.5;
#set fcc -40.7;
#set ecu -0.00788;
set fcc -60.1;
set ecu -0.01443;
#set ec0 [expr -9.37e-4*pow((-1.0*$fc0),0.25)];
set ec0 -0.002
set Ec [expr 4730.0*sqrt(-1.0*$fc0)];
set ft [expr 0.623*sqrt(-1.0*$fc0)];
set Ets [expr 0.05*$Ec];
set fy [expr 710.0];
set fu [expr 732.0];
set ey [expr 0.00561];
set Es [expr 190000.0];
#puts Es=$Es
set eult [expr 0.01893];
set b [expr ($fu-$fy)/($eult-$ey)/$Es];
# Material Info
# CONCRETE
# uniaxialMaterial Concrete02 $matTag $fpc $epsc0 $fpcu $epsU $lambda $ft $Ets
uniaxialMaterial Concrete02 1 $fc0 $ec0 $fcc $ecu 0.8 $ft $Ets
# STEEL
# uniaxialMaterial Steel02 $matTag $Fy $E $b $R0 $cR1 $cR2
set R0 15
set cR1 0.925
set cR2 0.15
uniaxialMaterial Steel02 2 $fy $Es $b $R0 $cR1 $cR2
set IDfrpconc 1
set IDreinf 2
# Section Info
set Col_frpSecTag 1; # set tag for FRP section
set barAreaSec [expr $PI*$Dreinf*$Dreinf/4.0]; # area of longitudinal-reinforcement bars
set ri 0; # inner radius of the section, only for hollow sections
set ro [expr $DSec/2.0]; # overall (outer) radius of the section
set nfCoreR 14; # number of radial divisions in the core (number of "rings")
set nfCoreT 16; # number of theta divisions in the core (number of "wedges")
set rc [expr $ro-$cover]; # Core radius
section fiberSec $Col_frpSecTag {
patch circ $IDfrpconc $nfCoreT $nfCoreR 0 0 $ri $ro [expr -180.0/$nfCoreT] [expr 360-180.0/$nfCoreT]; # Define the core patch
set theta [expr 360.0/$numBarsSec]; # Determine angle increment between bars
layer circ $IDreinf $numBarsSec $barAreaSec 0 0 $rc $theta 360; # Define the reinforcing layer
}
# Load Info
set PVer [expr 1000.0];
set ecc 20.0; # eccentricity (mm)
# Integration Info
set nP 5;
# Geometric transformation
set ColTransfTag 1; # associate a tag to column transformation
geomTransf LinearWithPDelta $ColTransfTag
#geomTransf PDelta $ColTransfTag
#geomTransf Corotational $ColTransfTag
#geomTransf Linear $ColTransfTag
# Element Info
#element dispBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag
element forceBeamColumn 1 1 2 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 2 2 3 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 3 3 4 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 4 4 5 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 5 5 6 $nP $Col_frpSecTag $ColTransfTag;
element forceBeamColumn 6 6 7 $nP $Col_frpSecTag $ColTransfTag;
# Define loads
pattern Plain 1 Linear {
load 1 0 0 [expr -$PVer*$ecc]
load 7 -$PVer 0 [expr $PVer*$ecc]
}
recorder Node -file $dataDir/disp.out -time -node 4 -dof 1 2 3 disp
recorder Element -file $dataDir/steel.out -time -ele 3 section 5 fiber [expr $rc] 0 2 stressStrain; # IDreinf fiber stress-strain
set IDctrlNode 7
set IDctrlDOF 1
## End of model generation
# Start of analysis generation for vertical load
puts goVerticalLoad
#Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-5; # convergence tolerance for test
#variable constraintsTypeGravity Plain; # default;
variable constraintsTypeGravity Transformation; # default;
if { [info exists RigidDiaphragm] == 1} {
if {$RigidDiaphragm=="ON"} {
variable constraintsTypeGravity Lagrange; # large model: try Transformation
}; # if rigid diaphragm is on
}; # if rigid diaphragm exists
constraints $constraintsTypeGravity ; # how it handles boundary conditions
#constraints Transformation
#constraints Lagrange
numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
#system BandGeneral ; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
system SparseGeneral -piv
#test RelativeEnergyIncr 1.e-8 6 0 0 # determine if convergence has been achieved at the end of an iteration step
#test NormDispIncr $Tol 10;
test NormDispIncr $Tol 2000 0
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
#algorithm Broyden 8
#algorithm NewtonLineSearch 0.8
set Predisp -20.0;
set Nstep 10000
set Dincr [expr $Predisp/$Nstep];
puts $Dincr
#set Nstep [expr int($Predisp/$Dincr)]; # apply gravity in 10 steps
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
#integrator ArcLength 1.0 0.1;
#integrator MinUnbalDispNorm 1.0;
analysis Static
# initialize the model, done to set initial tangent
initialize
analyze $Nstep; # apply gravity
# End of analysis generation for gravity analysis
puts DoneAnalysis
# Perform the analysis
Research Assistant Professor, The Hong Kong Polytechnic University
guanlin@polyu.edu.hk
guanlin@polyu.edu.hk
-
- Posts: 140
- Joined: Sun Oct 03, 2010 11:36 pm
- Location: Hong Kong
Re: Difficult to trace descending response
No one helps?
Research Assistant Professor, The Hong Kong Polytechnic University
guanlin@polyu.edu.hk
guanlin@polyu.edu.hk
-
- Posts: 140
- Joined: Sun Oct 03, 2010 11:36 pm
- Location: Hong Kong
Re: Difficult to trace descending response
anyone?
Research Assistant Professor, The Hong Kong Polytechnic University
guanlin@polyu.edu.hk
guanlin@polyu.edu.hk
-
- Posts: 140
- Joined: Sun Oct 03, 2010 11:36 pm
- Location: Hong Kong
Re: Difficult to trace descending response
No one?
Research Assistant Professor, The Hong Kong Polytechnic University
guanlin@polyu.edu.hk
guanlin@polyu.edu.hk