Hi everyone
I am trying to do a parametric analysis of a frame, that is to play around with different parameters. The code runs okay for fpc=38.4, b= 0.011 and Cover= 25.4 which is given as below. However, when I change fpc=32.64, the analysis fails. Similarly, if I change b=0.025 the analysis fails. The same is true if I change the cover to 12.7. Can somebody tell me what is happening? Thanks.
# Create ModelBuilder (with two-dimensions and 3 DOF/node)
model basic -ndm 2 -ndf 3
# Create nodes
# ------------
# Set parameters for overall model geometry
set width 2032.0
set height 1524.0
# Create nodes
# tag X Y
node 1 0.0 0.0
node 2 $width 0.0
node 3 0.0 $height
node 4 $width $height
# Fix supports at base of columns
# tag DX DY RZ
fix 1 1 1 1
fix 2 1 1 1
#Define confined concrete for column
#uniaxialMaterial ConfinedConcrete01 $tag $secType $fpc $Ec -epscu $epscu $nu $L1 $L2 $phis $S $fyh $Es0 $haRatio $mu $phiLon -stRatio $stRatio
uniaxialMaterial ConfinedConcrete01 6 R -38.4 29992.0 -epscu -0.0308 -varub 76.2 151.2 4.10 152.0 338.5 200000.0 0.0065 1000.0 9.525 -stRatio 0.85
#Define confined concrete for beam
#uniaxialMaterial ConfinedConcrete01 $tag $secType $fpc $Ec -epscu $epscu $nu $L1 $L2 $phis $S $fyh $Es0 $haRatio $mu $phiLon -stRatio $stRatio
uniaxialMaterial ConfinedConcrete01 7 R -38.4 29992.0 -epscu -0.0308 -varub 146.2 76.2 4.10 76.0 338.5 200000.0 0.013 1000.0 9.525 -stRatio 0.85
# Define materials for nonlinear columns# ------------------------------------------
# CONCRETE tag f'c ec0 f'cu ecu
# Cover concrete (unconfined)
uniaxialMaterial Concrete01 2 -38.4 -0.00128 -7.19 -0.012
# STEEL
# Reinforcing steel
set E 200000.0; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 3 338.5 $E 0.011
# tag fy E0 b
uniaxialMaterial Steel01 4 338.5 $E 0.011
# tag fy E0 b
uniaxialMaterial Steel01 5 338.5 $E 0.011
# Define cross-section for nonlinear columns
# ------------------------------------------
# set some paramaters
set colWidth 203
set colDepth 127
set beamWidth 127
set beamDepth 197
set cover 25.4
set As4 71.0; # area of no. 8 bars
set As5 71.0; # area of no. 4 bars
# some variables derived from the parameters
set y1 [expr $colDepth/2.0]
set z1 [expr $colWidth/2.0]
set y2 [expr $beamDepth/2.0]
set z2 [expr $beamWidth/2.0]
section Fiber 1 {
# Create the concrete core fibers
patch rect 6 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]
# Create the concrete cover fibers (top, bottom, left, right)
patch rect 2 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 2 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 2 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
patch rect 2 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]
# Create the reinforcing fibers (left, middle, right)
layer straight 4 2 $As4 [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 4 0 $As4 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
layer straight 4 2 $As4 [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]
}
section Fiber 2 {
# Create the concrete core fibers
patch rect 7 10 1 [expr $cover-$y2] [expr $cover-$z2] [expr $y2-$cover] [expr $z2-$cover]
# Create the concrete cover fibers (top, bottom, left, right)
patch rect 2 10 1 [expr -$y2] [expr $z2-$cover] $y2 $z2
patch rect 2 10 1 [expr -$y2] [expr -$z2] $y2 [expr $cover-$z2]
patch rect 2 2 1 [expr -$y2] [expr $cover-$z2] [expr $cover-$y2] [expr $z2-$cover]
patch rect 2 2 1 [expr $y2-$cover] [expr $cover-$z2] $y2 [expr $z2-$cover]
# Create the reinforcing fibers (left, middle, right)
layer straight 5 2 $As5 [expr $y2-$cover] [expr $z2-$cover] [expr $y2-$cover] [expr $cover-$z2]
layer straight 5 1 $As5 0.0 [expr $z2-$cover] 0.0 [expr $z2-$cover]
layer straight 5 2 $As5 [expr $cover-$y2] [expr $z2-$cover] [expr $cover-$y2] [expr $cover-$z2]
}
# Define column elements
# ----------------------
# Geometry of column elements
# tag
geomTransf Linear 1
# Number of integration points along length of element
set np 10
set eleType nonlinearBeamColumn; # forceBeamColumn od dispBeamColumn will work
# Create the coulumns using Beam-column elements
# tag ndI ndJ nsecs secID transfTag
element $eleType 1 1 3 $np 1 1 0.0 1 10e-16
element $eleType 2 2 4 $np 1 1 0.0 1 10e-16
# Define beam elment
# -----------------------------
# Geometry of beam elements
# tag
geomTransf Linear 2
set eleType nonlinearBeamColumn; # forceBeamColumn od dispBeamColumn will work
# Create the coulumns using Beam-column elements
# tag ndI ndJ nsecs secID transfTag
element $eleType 3 3 4 $np 2 2 0.0 1 10e-16
# Define gravity loads
# --------------------
# Set a parameter for the axial load
set P 146666.67; #(33 kips)
# Create a Plain load pattern with a Linear TimeSeries
timeSeries Linear 1
pattern Plain 1 1 {
# Create nodal loads at nodes 3 & 4
# nd FX FY MZ
load 3 0.0 [expr -$P] 0.0
load 4 0.0 [expr -$P] 0.0
}
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10 3
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
# Create the analysis object
analysis Static
# Perform the analysis
analyze 10
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
# Define reference lateral loads for Pushover Analysis
# ----------------------------------------------------
# Set some parameters
set H 100000.0; # Reference lateral load
# Set lateral load pattern with a Linear TimeSeries
pattern Plain 2 "Linear" {
# Create nodal loads at nodes 3
# nd FX FY MZ
load 3 $H 0.0 0.0
}
# Create a recorder to monitor nodal displacements
recorder Node -file Data/node3new.out -load -node 3 -dof 1 disp
recorder Node -file Data/Displacement.out -node 3 -dof 1 disp;
recorder Element -file Data/Load.out -load ;
# Create a recorder to monitor element forces in columns
recorder EnvelopeElement -file ele123new.out -ele 3 forces
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10 3
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
# Create the analysis object
analysis Static
# Perform the analysis
analyze 10
----------------------------------------------------
# Start of modifications to analysis for push over
# ----------------------------------------------------
# Set some parameters
set dU 1; # Displacement increment
# Change the integration scheme to be displacement control
# node dof init Jd min max
integrator DisplacementControl 3 1 $dU 10 $dU $dU
# ----------------------------------------------------
# End of modifications to analysis for push over
# ----------------------------------------------------
# ------------------------------
# Start of recorder generation
# ------------------------------
# Stop the old recorders by destroying them
# remove recorders
# Create a recorder to monitor nodal displacements
recorder Node -file node3.out -node 3 -dof 1 disp
# Create a recorder to monitor element forces in columns
recorder EnvelopeElement -file ele32.out -time -ele 1 2 forces
# Define RECORDERS -------------------------------------------------------------
recorder Node -file Data/DFree.out -time -node 3 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file Data/DBase.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file Data/RBase.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file Data/Drift.out -time -iNode 1 -jNode 3 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file Data/FCol.out -time -ele 2 globalForce; # element forces -- column
recorder Element -file Data/ForceColSec1.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file Data/DefoColSec1.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file Data/ForceColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file Data/DefoColSec$numIntgrPts.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node j
# --------------------------------
# End of recorder generation
# ---------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
# Set some parameters
set maxU 60.0; # Max displacement
set currentDisp 0.0;
set ok 0
while {$ok == 0 && $currentDisp < $maxU} {
set ok [analyze 1]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-12 1000
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 10
algorithm Newton
}
set currentDisp [nodeDisp 3 1]
}
if {$ok == 0} {
puts "Pushover analysis completed SUCCESSFULLY";
} else {
puts "Pushover analysis FAILED";
}
# Print the state at node 3
print node 3
wipe
Parametric analysis of a frame
Moderators: silvia, selimgunay, Moderators
Re: Parametric analysis of a frame
try smaller step sizes