Fibersection recorder problem
Moderators: silvia, selimgunay, Moderators
Fibersection recorder problem
Dear Vesna,
I know fiber coordinates and stress-strain record questions are among FAQs.
Sorry for the long message.
In my fiberized section, I am trying to record stress strain at the extreme border of confined concrete.
rc(Radius)=1000mm cover=35mm
discretization is (not in order, just important parts)
set nfCoreR 20;
set nfCoreT 20;
set nfCoverR 5;
set nfCoverT 20;
# Core radius
set rc [expr $ro-$cover]
# Define the core patch
patch circ $coreID $nfCoreT $nfCoreR 0 0 $ri $rc 0 360
# Define the cover patch
patch circ $coverID $nfCoverT $nfCoverR 0 0 $rc $ro 0 360
recorder Element -xml $dataDir/xmlconceretecore0.965sec1$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDconcCore stressStrain;
1-The results make sense but the xml file shows that it records at y=0.918 and x=0. I know the recorder records at the closest coordinates to the ones I specify.What not at 0.965?
2- In patch and recorder command the coordinates I give: Are they the geo. centroid of the fiber element?
3-I did a study to see what y and z of fiber coords refer to? I figured out y as
-X(globalX) and zas-Z(globalZ) Am Iwrong?
Thanks a lot
Murathan
I know fiber coordinates and stress-strain record questions are among FAQs.
Sorry for the long message.
In my fiberized section, I am trying to record stress strain at the extreme border of confined concrete.
rc(Radius)=1000mm cover=35mm
discretization is (not in order, just important parts)
set nfCoreR 20;
set nfCoreT 20;
set nfCoverR 5;
set nfCoverT 20;
# Core radius
set rc [expr $ro-$cover]
# Define the core patch
patch circ $coreID $nfCoreT $nfCoreR 0 0 $ri $rc 0 360
# Define the cover patch
patch circ $coverID $nfCoverT $nfCoverR 0 0 $rc $ro 0 360
recorder Element -xml $dataDir/xmlconceretecore0.965sec1$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDconcCore stressStrain;
1-The results make sense but the xml file shows that it records at y=0.918 and x=0. I know the recorder records at the closest coordinates to the ones I specify.What not at 0.965?
2- In patch and recorder command the coordinates I give: Are they the geo. centroid of the fiber element?
3-I did a study to see what y and z of fiber coords refer to? I figured out y as
-X(globalX) and zas-Z(globalZ) Am Iwrong?
Thanks a lot
Murathan
Dear Murathan,
2. When you define circular patch you are not defining the coordinates of fibers. Read the manual carefully to see what is the meaning for each argument:
http://opensees.berkeley.edu/wiki/index ... ch_Command
1. If you want to record the stressStrian of the fiber using fiber coordinates you need to specify the the coordinates of fiber centroid. If the coordinates you specify do not match the centroid of the fiber, recorder will look for the fiber with the coordinates closest to what you have specified.
3. If in 3D using geomTransf command you define direction of local y and z. When in 2D, local x and y axes are in the X-Y plane, where X and Y are global axes. Local x axis is the axis connecting the two element nodes, and local y and z axes follow the right-hand rule (e.g., if the element is aligned with the positive Y axis, the local y axis is aligned with the positive X axis, and if the element is aligned with the positive X axis, the local y axis is aligned with the positive Y axis).
2. When you define circular patch you are not defining the coordinates of fibers. Read the manual carefully to see what is the meaning for each argument:
http://opensees.berkeley.edu/wiki/index ... ch_Command
1. If you want to record the stressStrian of the fiber using fiber coordinates you need to specify the the coordinates of fiber centroid. If the coordinates you specify do not match the centroid of the fiber, recorder will look for the fiber with the coordinates closest to what you have specified.
3. If in 3D using geomTransf command you define direction of local y and z. When in 2D, local x and y axes are in the X-Y plane, where X and Y are global axes. Local x axis is the axis connecting the two element nodes, and local y and z axes follow the right-hand rule (e.g., if the element is aligned with the positive Y axis, the local y axis is aligned with the positive X axis, and if the element is aligned with the positive X axis, the local y axis is aligned with the positive Y axis).
Dear Vesna,
Thanks a lot. And sorry I couldnt explain myself at my 1st question well. Anyway, I got it.
I face to another problem and couldnt solve it.
When Im pushing a simple column with exactly the same materials concrete02 and hysteretic material. All the specifications are exactly the same but I only change the crushing damage strain(eps2c) of concrete02, the analysis starts not to converge.
The confusing part for me is::
when eps2c is -0.01, all the results are fine.
however if I change it to -0.0055 things start to go wrong and it doesnt converge at the very beginning of the analysis.
If it does this after the max stress point of concrete material, I would understand that but it is just at the 25th step of a 1500 step pushover which corresponds to a strain level between zero and max stress level at the extreme fiber. So even if I change the step size, nothing will work.
Thank you very much.
there are three files and you can execute the one named as staticpush Ex3.Canti2D.analyze.Static.Push.tcl
Ex3.Canti2D.build.InelasticFiberSection
LibRCcircSection
#Ex3.Canti2D.analyze.Static.Push
###############################################
# characteristics of pushover analysis
# SiUnits.tcl
set m 1.0; # Define Basic Unit - Length
set kN 1.0; # Define Basic Unit - Mass
set sec 1.0; # Define Basic Unit - Time
set rad 1.0; # Define Basic Unit - Radians
set N [expr $kN/1000]; # Define Engineering Units - Kilo Newton
set mm [expr $m/1000]; # Define Engineering Units - Milimeter
set g [expr 9.81*$m/pow($sec,2)];
set kg [expr $N*$g]; # Define Engineering Units - Newton
set Pa [expr $N/pow($m,2)]; # Define Engineering Units - Pascals
set MPa [expr $Pa*1000000]; # Define Engineering Units - Mega Pascal
set cm [expr $m/100]; # Define Engineering Units - Centimeter
set mm2 [expr $mm*$mm]
set Pi [expr 2*asin(1.0)];
set U 1.e10; # a really large number
set u [expr 1/$U]; # a really small number
foreach LCol "[expr 6*$m] [expr 10*$m] [expr 13.5*$m] [expr 16.4*$m]" {
source Ex3.Canti2D.build.InelasticFiberSection.tcl
puts "GRAVITY LOAD ANALYSIS HAS BEEN COMPLETED $LCol"
set Dmax [expr 0.03*$LCol]; # maximum displacement of pushover. push to 10% drift.
set Dincr [expr 0.00002*$LCol]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
# create load pattern for lateral pushover load
set Hload [expr $Weight]; # define the lateral load as a proportion of the weight so that the pseudo time equals the lateral-load coefficient when using linear load pattern
pattern Plain 200 Linear {; # define load pattern -- generalized
load 2 $Hload 0.0 0.0 0.0 0.0 0.0
}
# STATIC-ANALYSIS parameters
# CONSTRAINTS handler -- Determines how the constraint equations are enforced in the analysis (http://opensees.berkeley.edu/OpenSees/m ... al/617.htm)
# Plain Constraints -- Removes constrained degrees of freedom from the system of equations (only for homogeneous equations)
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints --good for static analysis with non-homogeneous eqns (rigidDiaphragm)
# Transformation Method -- Performs a condensation of constrained degrees of freedom
set constraintsType Plain; # default;
constraints $constraintsType
# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
# determines the mapping between equation numbers and degrees-of-freedom
# Plain -- Uses the numbering provided by the user
# RCM -- Renumbers the DOF to minimize the matrix band-width using the Reverse Cuthill-McKee algorithm
numberer Plain
# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
# Linear Equation Solvers (how to store and solve the system of equations in the analysis)
# -- provide the solution of the linear system of equations Ku = P. Each solver is tailored to a specific matrix topology.
# ProfileSPD -- Direct profile solver for symmetric positive definite matrices
# BandGeneral -- Direct solver for banded unsymmetric matrices
# BandSPD -- Direct solver for banded symmetric positive definite matrices
# SparseGeneral -- Direct solver for unsymmetric sparse matrices
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system BandGeneral
# TEST: # convergence test to
# Convergence TEST (http://opensees.berkeley.edu/OpenSees/m ... al/360.htm)
# -- Accept the current state of the domain as being on the converged solution path
# -- determine if convergence has been achieved at the end of an iteration step
# NormUnbalance -- Specifies a tolerance on the norm of the unbalanced load at the current iteration
# NormDispIncr -- Specifies a tolerance on the norm of the displacement increments at the current iteration
# EnergyIncr-- Specifies a tolerance on the inner product of the unbalanced load and displacement increments at the current iteration
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 6; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 1; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr; # Convergence-test type
test $TestType $Tol $maxNumIter $printFlag;
# Solution ALGORITHM: -- Iterate from the last time step to the current (http://opensees.berkeley.edu/OpenSees/m ... al/682.htm)
# Linear -- Uses the solution at the first iteration and continues
# Newton -- Uses the tangent at the current iteration to iterate to convergence
# ModifiedNewton -- Uses the tangent at the first iteration to iterate to convergence
set algorithmType Newton
algorithm $algorithmType;
# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
# LoadControl -- Specifies the incremental load factor to be applied to the loads in the domain
# DisplacementControl -- Specifies the incremental displacement at a specified DOF in the domain
# Minimum Unbalanced Displacement Norm -- Specifies the incremental load factor such that the residual displacement norm in minimized
# Arc Length -- Specifies the incremental arc-length of the load-displacement path
# Transient INTEGRATOR: -- determine the next time step for an analysis including inertial effects
# Newmark -- The two parameter time-stepping method developed by Newmark
# HHT -- The three parameter Hilbert-Hughes-Taylor time-stepping method
# Central Difference -- Approximates velocity and acceleration by centered finite differences of displacement
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
# Static Analysis -- solves the KU=R problem, without the mass or damping matrices.
# Transient Analysis -- solves the time-dependent analysis. The time step in this type of analysis is constant. The time step in the output is also constant.
# variableTransient Analysis -- performs the same analysis type as the Transient Analysis object. The time step, however, is variable. This method is used when
# there are convergence problems with the Transient Analysis object at a peak or when the time step is too small. The time step in the output is also variable.
analysis Static
# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set ok [analyze $Nsteps]; # 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
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts 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 while loop
}; # end if ok !0
puts "Pushover Done. Control Disp=[nodeDisp $IDctrlNode $IDctrlDOF]"
}
#Ex3.Canti2D.build.InelasticFiberSection
#############################################
# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir Datafiber; # set up name for data directory
file mkdir $dataDir/; # create data directory
set GMdir "../GMfiles"; # ground-motion file directory
# define UNITS ----------------------------------------------------------------------------
# SiUnits.tcl
set m 1.0; # Define Basic Unit - Length
set kN 1.0; # Define Basic Unit - Mass
set sec 1.0; # Define Basic Unit - Time
set rad 1.0; # Define Basic Unit - Radians
set N [expr $kN/1000]; # Define Engineering Units - Kilo Newton
set mm [expr $m/1000]; # Define Engineering Units - Milimeter
set g [expr 9.81*$m/pow($sec,2)];
set kg [expr $N*$g]; # Define Engineering Units - Newton
set Pa [expr $N/pow($m,2)]; # Define Engineering Units - Pascals
set MPa [expr $Pa*1000000]; # Define Engineering Units - Mega Pascal
set cm [expr $m/100]; # Define Engineering Units - Centimeter
set mm2 [expr $mm*$mm]
set Pi [expr 2*asin(1.0)];
set U 1.e10; # a really large number
set u [expr 1/$U]; # a really small number
# define GEOMETRY -------------------------------------------------------------
set Weight [expr 10000.*$kN]; # superstructure weight
# define section geometry
set DCol [expr 2000.*$mm]; # Column Diameter
set RCol [expr $DCol/2];
# calculated parameters
set PCol [expr $Weight]; # nodal dead-load weight per column
set Mass [expr $PCol/$g]; # nodal mass
# calculated geometry parameters
set ACol [expr $Pi*pow($RCol,2)]; # cross-sectional area
set IzCol [expr $Pi*pow($RCol,4)/4]; # Column moment of inertia
puts "geometry is done"
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 $LCol;
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
# we need to set up parameters that are particular to the model.
set IDctrlNode 2; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set iSupportNode "1"; # define support node, if needed.
# nodal masses:
mass 2 $Mass 1e-9 0.; # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes
# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColSecTag 1; # assign a tag number to the column section
# define section geometry
set coverR [expr 35.*$mm]; # Column cover to reinforcing steel NA.
set numBars 25; # number of longitudinal-reinforcement bars in column. (symmetric top & bot)
set barArea [expr 1256.64*$mm2]; # area of longitudinal-reinforcement bars
# calculated section parameters
set AsConc [expr $numBars*$barArea]; # longitudinal-steel area
set barRatio [expr $AsConc/$ACol];
set nfCoreR 20; # number of fibers in the core patch in the radial direction
set nfCoreT 20; # number of fibers in the core patch in the tangential direction
set nfCoverR 2; # number of fibers in the cover patches with long sides in the radial direction
set nfCoverT 20; # number of fibers in the cover patches with long sides in the tangential direction
set ro 0.0; # hollow-center diameter of column section
puts "section parameters are done"
# MATERIAL parameters -------------------------------------------------------------------
set IDreinf 1
set IDconcCore 2
set IDconcCover 3
# Reinforced-Concrete MATERIAL Properties
# nominal concrete compressive strength
set fc [expr -30.0*$MPa]; # CONCRETE Compressive Strength, ksi (+Tension, -Compression)
# confined concrete
set Ec [expr 5000*sqrt(-$fc/$MPa)*$MPa]; # Concrete Elastic Modulus
set fc1C [expr -31.68*$MPa]; # CONFINED concrete (mander model), maximum stress
set eps1C -0.00225; # strain at maximum stress
set fc2C [expr -22.77*$MPa]; # ultimate stress
set eps2C -0.01; # strain at ultimate stress (bahadirs thesis and my matlab code)
# unconfined concrete
set fc1U $fc; # UNCONFINED concrete (todeschini parabolic model), maximum stress
set eps1U -0.002; # strain at maximum stress
set fc2U [expr 0.1*$fc]; # ultimate stress
set eps2U -0.004; # strain at ultimate stress
# concrete02 material properties:
set lambda 0.1 ; # ratio between unloading slope at $epscu and initial slope
set ftC [expr -$fc1C/10.]; # tensile strength +tension
set ftU [expr -$fc1U/10.]; # tensile strength +tension
set Ets [expr $Ec/10.]; # tension softening stiffness
# -----------
# reinforcing steel
set Fy [expr 420.*$MPa]; # STEEL yield stress
set Es [expr 210000.*$MPa]; # modulus of steel
set epsY [expr $Fy/$Es]; # steel yield strain
set Fy1 [expr 420.*$MPa]; # steel stress post-yield
set epsY1 0.008; # steel strain post-yield
set Fu [expr 550.*$MPa]; # ultimate stress of steel
set epsU 0.072; # ultimate strain of steel
#set Bs [expr ($Fu-$Fy)/($epsU-$epsY)/$Es]; # post-yield stiffness ratio of steel
#set Bs [expr ($Fy1-$Fy)/($epsY1-$epsY)/$Es]; # post-yield stiffness ratio of steel
set pinchX 1.0; # pinching parameter for hysteretic model
set pinchY 1.0; # pinching parameter for hysteretic model
set damage1 0.0; # damage parameter for hysteretic model
set damage2 0.0; # damage parameter for hysteretic model
set betaMUsteel 0.0; # degraded unloading stiffness for hysteretic material based on MU^(-beta)
# set up library of materials
uniaxialMaterial Concrete02 $IDconcCore $fc1C $eps1C $fc2C $eps2C $lambda $ftC $Ets; # Core concrete (confined)
uniaxialMaterial Concrete02 $IDconcCover $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets; # Cover concrete (unconfined)
uniaxialMaterial Hysteretic $IDreinf $Fy $epsY $Fy1 $epsY1 $Fu $epsU -$Fy -$epsY -$Fy1 -$epsY1 -$Fu -$epsU $pinchX $pinchY $damage1 $damage2 $betaMUsteel ; # hysteritic reinforcemnet model
source LibRCcircSection.tcl; # source tcl file with script definig procedure
RCcircSection $ColSecTag $ro $RCol $coverR $IDconcCore $IDconcCover $IDreinf $numBars $barArea $nfCoreR $nfCoreT $nfCoverR $nfCoverT
puts "fiber section defined"
# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
set ColTransfTag 1; # associate a tag to column transformation
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $ColTransfTag ;
# element connectivity:
set numIntgrPts 5; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts $ColSecTag $ColTransfTag; # self-explanatory when using variables
# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/DFree$LCol.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file $dataDir/DBase$LCol.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase$LCol.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file $dataDir/Drift$LCol.out -time -iNode 1 -jNode 2 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file $dataDir/FCol$LCol.out -time -ele 1 globalForce; # element forces -- column
recorder Element -file $dataDir/ForceColSec1$LCol.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file $dataDir/DefoColSec1$LCol.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
#recorder Element -file $dataDir/ForceColSec3$LCol.out -time -ele 1 section 3 force;
#recorder Element -file $dataDir/DefoColSec3$LCol.out -time -ele 1 section 3 deformation;
recorder Element -file $dataDir/ForceColSec$numIntgrPts$LCol.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoColSec$numIntgrPts$LCol.out -time -ele 1 section $numIntgrPts deformation; # section deformations, axial and curvature, node j
recorder Element -file $dataDir/ele1plastdef$LCol.out -time -ele 1 plasticDeformation;
recorder Element -file $dataDir/ele1chord$LCol.out -time -ele 1 chordDeformation;
recorder Element -file $dataDir/conceretecore9650$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDconcCore stressStrain;
recorder Element -file $dataDir/conceretecore-9650$LCol.out -time -ele 1 section 1 fiber -0.965 0 $IDconcCore stressStrain;
recorder Element -file $dataDir/conceretecore00$LCol.out -time -ele 1 section 1 fiber 0 0 $IDconcCore stressStrain;
recorder Element -file $dataDir/conceretecover9650$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/conceretecover10000$LCol.out -time -ele 1 section 1 fiber 1 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/conceretecover-9650$LCol.out -time -ele 1 section 1 fiber -0.965 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/conceretecover-10000$LCol.out -time -ele 1 section 1 fiber -1 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/Steelsec1coord-965$LCol.out -time -ele 1 section 1 fiber -0.965 0 $IDreinf stressStrain;
recorder Element -file $dataDir/Steelsec1coord965$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDreinf stressStrain;
recorder Element -file $dataDir/Steelsec1coord00$LCol.out -time -ele 1 section 1 fiber 0 0 $IDreinf stressStrain;
recorder Element -file $dataDir/ele1Rot$LCol.out -time -ele 1 plasticRotation;
# define GRAVITY -------------------------------------------------------------
pattern Plain 1 Linear {
load 2 0 -$PCol 0
}
# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-8; # convergence tolerance for test
constraints Transformation; # how it handles boundary conditions
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
test NormDispIncr $Tol 6 1 ; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0
puts "Model Built"
#LibRCcircSection.tcl
###########################################
# Formal arguments
# id - tag for the section that is generated by this procedure
# ri - inner radius of the section
# ro - overall (outer) radius of the section
# cover - cover thickness
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars around the section perimeter
# barArea - cross-sectional area of each reinforcing bar
# nfCoreR - number of radial divisions in the core (number of "rings")
# nfCoreT - number of theta divisions in the core (number of "wedges")
# nfCoverR - number of radial divisions in the cover
# nfCoverT - number of theta divisions in the cover
#
# Notes
# The center of the reinforcing bars are placed at the inner radius
# The core concrete ends at the inner radius (same as reinforcing bars)
# The reinforcing bars are all the same size
# The center of the section is at (0,0) in the local axis system
# Zero degrees is along section y-axis
#
proc RCcircSection {id ri ro cover coreID coverID steelID numBars barArea nfCoreR nfCoreT nfCoverR nfCoverT} {
# Define the fiber section
section fiberSec $id {
# Core radius
set rc [expr $ro-$cover]
# Define the core patch
patch circ $coreID $nfCoreT $nfCoreR 0 0 $ri $rc 0 360
# Define the cover patch
patch circ $coverID $nfCoverT $nfCoverR 0 0 $rc $ro 0 360
if {$numBars <= 0} {
return
}
# Determine angle increment between bars
set theta [expr 360.0/$numBars]
# Define the reinforcing layer
layer circ $steelID $numBars $barArea 0 0 $rc $theta 360
}
}
Thanks a lot. And sorry I couldnt explain myself at my 1st question well. Anyway, I got it.
I face to another problem and couldnt solve it.
When Im pushing a simple column with exactly the same materials concrete02 and hysteretic material. All the specifications are exactly the same but I only change the crushing damage strain(eps2c) of concrete02, the analysis starts not to converge.
The confusing part for me is::
when eps2c is -0.01, all the results are fine.
however if I change it to -0.0055 things start to go wrong and it doesnt converge at the very beginning of the analysis.
If it does this after the max stress point of concrete material, I would understand that but it is just at the 25th step of a 1500 step pushover which corresponds to a strain level between zero and max stress level at the extreme fiber. So even if I change the step size, nothing will work.
Thank you very much.
there are three files and you can execute the one named as staticpush Ex3.Canti2D.analyze.Static.Push.tcl
Ex3.Canti2D.build.InelasticFiberSection
LibRCcircSection
#Ex3.Canti2D.analyze.Static.Push
###############################################
# characteristics of pushover analysis
# SiUnits.tcl
set m 1.0; # Define Basic Unit - Length
set kN 1.0; # Define Basic Unit - Mass
set sec 1.0; # Define Basic Unit - Time
set rad 1.0; # Define Basic Unit - Radians
set N [expr $kN/1000]; # Define Engineering Units - Kilo Newton
set mm [expr $m/1000]; # Define Engineering Units - Milimeter
set g [expr 9.81*$m/pow($sec,2)];
set kg [expr $N*$g]; # Define Engineering Units - Newton
set Pa [expr $N/pow($m,2)]; # Define Engineering Units - Pascals
set MPa [expr $Pa*1000000]; # Define Engineering Units - Mega Pascal
set cm [expr $m/100]; # Define Engineering Units - Centimeter
set mm2 [expr $mm*$mm]
set Pi [expr 2*asin(1.0)];
set U 1.e10; # a really large number
set u [expr 1/$U]; # a really small number
foreach LCol "[expr 6*$m] [expr 10*$m] [expr 13.5*$m] [expr 16.4*$m]" {
source Ex3.Canti2D.build.InelasticFiberSection.tcl
puts "GRAVITY LOAD ANALYSIS HAS BEEN COMPLETED $LCol"
set Dmax [expr 0.03*$LCol]; # maximum displacement of pushover. push to 10% drift.
set Dincr [expr 0.00002*$LCol]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
# create load pattern for lateral pushover load
set Hload [expr $Weight]; # define the lateral load as a proportion of the weight so that the pseudo time equals the lateral-load coefficient when using linear load pattern
pattern Plain 200 Linear {; # define load pattern -- generalized
load 2 $Hload 0.0 0.0 0.0 0.0 0.0
}
# STATIC-ANALYSIS parameters
# CONSTRAINTS handler -- Determines how the constraint equations are enforced in the analysis (http://opensees.berkeley.edu/OpenSees/m ... al/617.htm)
# Plain Constraints -- Removes constrained degrees of freedom from the system of equations (only for homogeneous equations)
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints --good for static analysis with non-homogeneous eqns (rigidDiaphragm)
# Transformation Method -- Performs a condensation of constrained degrees of freedom
set constraintsType Plain; # default;
constraints $constraintsType
# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
# determines the mapping between equation numbers and degrees-of-freedom
# Plain -- Uses the numbering provided by the user
# RCM -- Renumbers the DOF to minimize the matrix band-width using the Reverse Cuthill-McKee algorithm
numberer Plain
# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
# Linear Equation Solvers (how to store and solve the system of equations in the analysis)
# -- provide the solution of the linear system of equations Ku = P. Each solver is tailored to a specific matrix topology.
# ProfileSPD -- Direct profile solver for symmetric positive definite matrices
# BandGeneral -- Direct solver for banded unsymmetric matrices
# BandSPD -- Direct solver for banded symmetric positive definite matrices
# SparseGeneral -- Direct solver for unsymmetric sparse matrices
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system BandGeneral
# TEST: # convergence test to
# Convergence TEST (http://opensees.berkeley.edu/OpenSees/m ... al/360.htm)
# -- Accept the current state of the domain as being on the converged solution path
# -- determine if convergence has been achieved at the end of an iteration step
# NormUnbalance -- Specifies a tolerance on the norm of the unbalanced load at the current iteration
# NormDispIncr -- Specifies a tolerance on the norm of the displacement increments at the current iteration
# EnergyIncr-- Specifies a tolerance on the inner product of the unbalanced load and displacement increments at the current iteration
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 6; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 1; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr; # Convergence-test type
test $TestType $Tol $maxNumIter $printFlag;
# Solution ALGORITHM: -- Iterate from the last time step to the current (http://opensees.berkeley.edu/OpenSees/m ... al/682.htm)
# Linear -- Uses the solution at the first iteration and continues
# Newton -- Uses the tangent at the current iteration to iterate to convergence
# ModifiedNewton -- Uses the tangent at the first iteration to iterate to convergence
set algorithmType Newton
algorithm $algorithmType;
# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
# LoadControl -- Specifies the incremental load factor to be applied to the loads in the domain
# DisplacementControl -- Specifies the incremental displacement at a specified DOF in the domain
# Minimum Unbalanced Displacement Norm -- Specifies the incremental load factor such that the residual displacement norm in minimized
# Arc Length -- Specifies the incremental arc-length of the load-displacement path
# Transient INTEGRATOR: -- determine the next time step for an analysis including inertial effects
# Newmark -- The two parameter time-stepping method developed by Newmark
# HHT -- The three parameter Hilbert-Hughes-Taylor time-stepping method
# Central Difference -- Approximates velocity and acceleration by centered finite differences of displacement
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
# Static Analysis -- solves the KU=R problem, without the mass or damping matrices.
# Transient Analysis -- solves the time-dependent analysis. The time step in this type of analysis is constant. The time step in the output is also constant.
# variableTransient Analysis -- performs the same analysis type as the Transient Analysis object. The time step, however, is variable. This method is used when
# there are convergence problems with the Transient Analysis object at a peak or when the time step is too small. The time step in the output is also variable.
analysis Static
# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set ok [analyze $Nsteps]; # 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
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts 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 while loop
}; # end if ok !0
puts "Pushover Done. Control Disp=[nodeDisp $IDctrlNode $IDctrlDOF]"
}
#Ex3.Canti2D.build.InelasticFiberSection
#############################################
# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir Datafiber; # set up name for data directory
file mkdir $dataDir/; # create data directory
set GMdir "../GMfiles"; # ground-motion file directory
# define UNITS ----------------------------------------------------------------------------
# SiUnits.tcl
set m 1.0; # Define Basic Unit - Length
set kN 1.0; # Define Basic Unit - Mass
set sec 1.0; # Define Basic Unit - Time
set rad 1.0; # Define Basic Unit - Radians
set N [expr $kN/1000]; # Define Engineering Units - Kilo Newton
set mm [expr $m/1000]; # Define Engineering Units - Milimeter
set g [expr 9.81*$m/pow($sec,2)];
set kg [expr $N*$g]; # Define Engineering Units - Newton
set Pa [expr $N/pow($m,2)]; # Define Engineering Units - Pascals
set MPa [expr $Pa*1000000]; # Define Engineering Units - Mega Pascal
set cm [expr $m/100]; # Define Engineering Units - Centimeter
set mm2 [expr $mm*$mm]
set Pi [expr 2*asin(1.0)];
set U 1.e10; # a really large number
set u [expr 1/$U]; # a really small number
# define GEOMETRY -------------------------------------------------------------
set Weight [expr 10000.*$kN]; # superstructure weight
# define section geometry
set DCol [expr 2000.*$mm]; # Column Diameter
set RCol [expr $DCol/2];
# calculated parameters
set PCol [expr $Weight]; # nodal dead-load weight per column
set Mass [expr $PCol/$g]; # nodal mass
# calculated geometry parameters
set ACol [expr $Pi*pow($RCol,2)]; # cross-sectional area
set IzCol [expr $Pi*pow($RCol,4)/4]; # Column moment of inertia
puts "geometry is done"
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 $LCol;
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
# we need to set up parameters that are particular to the model.
set IDctrlNode 2; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set iSupportNode "1"; # define support node, if needed.
# nodal masses:
mass 2 $Mass 1e-9 0.; # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes
# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColSecTag 1; # assign a tag number to the column section
# define section geometry
set coverR [expr 35.*$mm]; # Column cover to reinforcing steel NA.
set numBars 25; # number of longitudinal-reinforcement bars in column. (symmetric top & bot)
set barArea [expr 1256.64*$mm2]; # area of longitudinal-reinforcement bars
# calculated section parameters
set AsConc [expr $numBars*$barArea]; # longitudinal-steel area
set barRatio [expr $AsConc/$ACol];
set nfCoreR 20; # number of fibers in the core patch in the radial direction
set nfCoreT 20; # number of fibers in the core patch in the tangential direction
set nfCoverR 2; # number of fibers in the cover patches with long sides in the radial direction
set nfCoverT 20; # number of fibers in the cover patches with long sides in the tangential direction
set ro 0.0; # hollow-center diameter of column section
puts "section parameters are done"
# MATERIAL parameters -------------------------------------------------------------------
set IDreinf 1
set IDconcCore 2
set IDconcCover 3
# Reinforced-Concrete MATERIAL Properties
# nominal concrete compressive strength
set fc [expr -30.0*$MPa]; # CONCRETE Compressive Strength, ksi (+Tension, -Compression)
# confined concrete
set Ec [expr 5000*sqrt(-$fc/$MPa)*$MPa]; # Concrete Elastic Modulus
set fc1C [expr -31.68*$MPa]; # CONFINED concrete (mander model), maximum stress
set eps1C -0.00225; # strain at maximum stress
set fc2C [expr -22.77*$MPa]; # ultimate stress
set eps2C -0.01; # strain at ultimate stress (bahadirs thesis and my matlab code)
# unconfined concrete
set fc1U $fc; # UNCONFINED concrete (todeschini parabolic model), maximum stress
set eps1U -0.002; # strain at maximum stress
set fc2U [expr 0.1*$fc]; # ultimate stress
set eps2U -0.004; # strain at ultimate stress
# concrete02 material properties:
set lambda 0.1 ; # ratio between unloading slope at $epscu and initial slope
set ftC [expr -$fc1C/10.]; # tensile strength +tension
set ftU [expr -$fc1U/10.]; # tensile strength +tension
set Ets [expr $Ec/10.]; # tension softening stiffness
# -----------
# reinforcing steel
set Fy [expr 420.*$MPa]; # STEEL yield stress
set Es [expr 210000.*$MPa]; # modulus of steel
set epsY [expr $Fy/$Es]; # steel yield strain
set Fy1 [expr 420.*$MPa]; # steel stress post-yield
set epsY1 0.008; # steel strain post-yield
set Fu [expr 550.*$MPa]; # ultimate stress of steel
set epsU 0.072; # ultimate strain of steel
#set Bs [expr ($Fu-$Fy)/($epsU-$epsY)/$Es]; # post-yield stiffness ratio of steel
#set Bs [expr ($Fy1-$Fy)/($epsY1-$epsY)/$Es]; # post-yield stiffness ratio of steel
set pinchX 1.0; # pinching parameter for hysteretic model
set pinchY 1.0; # pinching parameter for hysteretic model
set damage1 0.0; # damage parameter for hysteretic model
set damage2 0.0; # damage parameter for hysteretic model
set betaMUsteel 0.0; # degraded unloading stiffness for hysteretic material based on MU^(-beta)
# set up library of materials
uniaxialMaterial Concrete02 $IDconcCore $fc1C $eps1C $fc2C $eps2C $lambda $ftC $Ets; # Core concrete (confined)
uniaxialMaterial Concrete02 $IDconcCover $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets; # Cover concrete (unconfined)
uniaxialMaterial Hysteretic $IDreinf $Fy $epsY $Fy1 $epsY1 $Fu $epsU -$Fy -$epsY -$Fy1 -$epsY1 -$Fu -$epsU $pinchX $pinchY $damage1 $damage2 $betaMUsteel ; # hysteritic reinforcemnet model
source LibRCcircSection.tcl; # source tcl file with script definig procedure
RCcircSection $ColSecTag $ro $RCol $coverR $IDconcCore $IDconcCover $IDreinf $numBars $barArea $nfCoreR $nfCoreT $nfCoverR $nfCoverT
puts "fiber section defined"
# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
set ColTransfTag 1; # associate a tag to column transformation
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $ColTransfTag ;
# element connectivity:
set numIntgrPts 5; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts $ColSecTag $ColTransfTag; # self-explanatory when using variables
# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/DFree$LCol.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file $dataDir/DBase$LCol.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase$LCol.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file $dataDir/Drift$LCol.out -time -iNode 1 -jNode 2 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file $dataDir/FCol$LCol.out -time -ele 1 globalForce; # element forces -- column
recorder Element -file $dataDir/ForceColSec1$LCol.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file $dataDir/DefoColSec1$LCol.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
#recorder Element -file $dataDir/ForceColSec3$LCol.out -time -ele 1 section 3 force;
#recorder Element -file $dataDir/DefoColSec3$LCol.out -time -ele 1 section 3 deformation;
recorder Element -file $dataDir/ForceColSec$numIntgrPts$LCol.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoColSec$numIntgrPts$LCol.out -time -ele 1 section $numIntgrPts deformation; # section deformations, axial and curvature, node j
recorder Element -file $dataDir/ele1plastdef$LCol.out -time -ele 1 plasticDeformation;
recorder Element -file $dataDir/ele1chord$LCol.out -time -ele 1 chordDeformation;
recorder Element -file $dataDir/conceretecore9650$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDconcCore stressStrain;
recorder Element -file $dataDir/conceretecore-9650$LCol.out -time -ele 1 section 1 fiber -0.965 0 $IDconcCore stressStrain;
recorder Element -file $dataDir/conceretecore00$LCol.out -time -ele 1 section 1 fiber 0 0 $IDconcCore stressStrain;
recorder Element -file $dataDir/conceretecover9650$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/conceretecover10000$LCol.out -time -ele 1 section 1 fiber 1 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/conceretecover-9650$LCol.out -time -ele 1 section 1 fiber -0.965 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/conceretecover-10000$LCol.out -time -ele 1 section 1 fiber -1 0 $IDconcCover stressStrain;
recorder Element -file $dataDir/Steelsec1coord-965$LCol.out -time -ele 1 section 1 fiber -0.965 0 $IDreinf stressStrain;
recorder Element -file $dataDir/Steelsec1coord965$LCol.out -time -ele 1 section 1 fiber 0.965 0 $IDreinf stressStrain;
recorder Element -file $dataDir/Steelsec1coord00$LCol.out -time -ele 1 section 1 fiber 0 0 $IDreinf stressStrain;
recorder Element -file $dataDir/ele1Rot$LCol.out -time -ele 1 plasticRotation;
# define GRAVITY -------------------------------------------------------------
pattern Plain 1 Linear {
load 2 0 -$PCol 0
}
# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-8; # convergence tolerance for test
constraints Transformation; # how it handles boundary conditions
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
test NormDispIncr $Tol 6 1 ; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0
puts "Model Built"
#LibRCcircSection.tcl
###########################################
# Formal arguments
# id - tag for the section that is generated by this procedure
# ri - inner radius of the section
# ro - overall (outer) radius of the section
# cover - cover thickness
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars around the section perimeter
# barArea - cross-sectional area of each reinforcing bar
# nfCoreR - number of radial divisions in the core (number of "rings")
# nfCoreT - number of theta divisions in the core (number of "wedges")
# nfCoverR - number of radial divisions in the cover
# nfCoverT - number of theta divisions in the cover
#
# Notes
# The center of the reinforcing bars are placed at the inner radius
# The core concrete ends at the inner radius (same as reinforcing bars)
# The reinforcing bars are all the same size
# The center of the section is at (0,0) in the local axis system
# Zero degrees is along section y-axis
#
proc RCcircSection {id ri ro cover coreID coverID steelID numBars barArea nfCoreR nfCoreT nfCoverR nfCoverT} {
# Define the fiber section
section fiberSec $id {
# Core radius
set rc [expr $ro-$cover]
# Define the core patch
patch circ $coreID $nfCoreT $nfCoreR 0 0 $ri $rc 0 360
# Define the cover patch
patch circ $coverID $nfCoverT $nfCoverR 0 0 $rc $ro 0 360
if {$numBars <= 0} {
return
}
# Determine angle increment between bars
set theta [expr 360.0/$numBars]
# Define the reinforcing layer
layer circ $steelID $numBars $barArea 0 0 $rc $theta 360
}
}
I looked at your code and it looks fine. There are few things you can change to improve the convergence:
1. You can reduce the number of fibers
2. You can try to increase the tolerance for the cases when you have a convergence problem
3. You can try to increase the number of iteration to achieve the convergence.
1. You can reduce the number of fibers
2. You can try to increase the tolerance for the cases when you have a convergence problem
3. You can try to increase the number of iteration to achieve the convergence.
Dear Vesna,
Im sorry for bothering again. However, I tried all your suggestions but still when the eps2c is -0.0055. It doesnt converge. Analysis stucks at the very beginning of lateral load. Please give me a hand. Thank you very much for everything.
Note:Im already using the latest version.
Murathan
Im sorry for bothering again. However, I tried all your suggestions but still when the eps2c is -0.0055. It doesnt converge. Analysis stucks at the very beginning of lateral load. Please give me a hand. Thank you very much for everything.
Note:Im already using the latest version.
Murathan
-
- Posts: 65
- Joined: Mon Oct 04, 2010 6:24 pm
- Location: Colombia
Dear oleviuqserh,
Thanks for your post. I appreciated your help. Now it works for concrete04. However, can you please clarify smt for me. I dont know if you runned my script or not. But the problem was at the very beginning of PO analysis. It is not cyclic and doesnt have unloading. So I think it shouldnt be because of lambda. Isnt it? Am I wrong?
Thank you,,
Murathan
Thanks for your post. I appreciated your help. Now it works for concrete04. However, can you please clarify smt for me. I dont know if you runned my script or not. But the problem was at the very beginning of PO analysis. It is not cyclic and doesnt have unloading. So I think it shouldnt be because of lambda. Isnt it? Am I wrong?
Thank you,,
Murathan
I ran you model and tried the following:
1) I removed the tension side of the concrete by using Concrete01 instead of Concrete02 and used eps2C of -0.0055 and it worked.
2) Using Concrete02 with eps2C of -0.0055 I changed the slope of Concrete02 for the eps>eps1C by changing the fc2C to 0.5*$fc and it worked.
3) I used Concrete02 with eps2C of -0.0055 and original fc2C and changed the section to have one fiber at the center with the radius of ri/8, and changed mesh of fibers to
set nfCoreR 8;
set nfCoreT 12;
set nfCoverR 2;
set nfCoverT 12;
and I got to the 1/3 of the target displacement.
4) Then I changed the hysteretic material to steel02 and it worked. Steel02 and Concrete02 with the original discretization of the section did not work.
Part of the problem comes from the way you discretized the circular section and the other part of the problem comes from the tension side of Concrete02 and Hysteretic material in conjunction with nonlinearBeamColumn element.
1) I removed the tension side of the concrete by using Concrete01 instead of Concrete02 and used eps2C of -0.0055 and it worked.
2) Using Concrete02 with eps2C of -0.0055 I changed the slope of Concrete02 for the eps>eps1C by changing the fc2C to 0.5*$fc and it worked.
3) I used Concrete02 with eps2C of -0.0055 and original fc2C and changed the section to have one fiber at the center with the radius of ri/8, and changed mesh of fibers to
set nfCoreR 8;
set nfCoreT 12;
set nfCoverR 2;
set nfCoverT 12;
and I got to the 1/3 of the target displacement.
4) Then I changed the hysteretic material to steel02 and it worked. Steel02 and Concrete02 with the original discretization of the section did not work.
Part of the problem comes from the way you discretized the circular section and the other part of the problem comes from the tension side of Concrete02 and Hysteretic material in conjunction with nonlinearBeamColumn element.