Dear all,
I have a simple 2D RC frame that I have modelled to run the pushover analysis. To begin with, I am testing my model with gravity loads only but I am encountering a problem with it. The code works fine with elastic elements and the results are exactly the same as the other code that I have in matlab. However, as soon as changing the element type, the results go crazy. I have used nonlinearBeamColumn and also disBeamColumn but the results are not correct. My model is very simple and I think in the elastic zone the result of the model developed with elastic elements with the one developed by any other nonlinear elements should be the same right? For the elastic modelling I used elasticBeamColumn.
please help. here is the code. 2 story one bay RC frame in 2D:
#Clear existing inputs
wipe all
# Create modelBuilder (with 2-dimensions and 3 DOF and 6 nodes)
model basic -ndm 2 -ndf 3
# define GEOMETRY -------------------------------------------------------------
# define structure-geometry paramters
set lengthBeam 500.0; # Length of Beams
set HeightCol1 450.0; # Height of Columns in floor 1
set HeightCol2 350.0; # Height of Columns in floor 2
# calculate locations of beam/column intersections:
set X1 0; # X of node 1
set X2 $lengthBeam; # X of node 2
set X3 0; # X of node 3
set X4 $lengthBeam; # X of node 4
set X5 0; # X of node 5
set X6 $lengthBeam; # X of node 6
set Y1 0; # Y of node 1
set Y2 0; # Y of node 2
set Y3 $HeightCol1; # Y of node 3
set Y4 $HeightCol1; # Y of node 4
set Y5 [expr $HeightCol1 + $HeightCol2]; # Y of node 5
set Y6 [expr $HeightCol1 + $HeightCol2]; # Y of node 6
# define main nodes
# Tag X Y
node 1 $X1 $Y1
node 2 $X2 $Y2
node 3 $X3 $Y3
node 4 $X4 $Y4
node 5 $X5 $Y5
node 6 $X6 $Y6
# Define materials for nonlinear beam-columns
#-----------------------------------------
# Concrete Tag fc ec0 fcu ecu
uniaxialMaterial Concrete01 1 -124.667 -0.002 -124.667 -0.0035
# Steel
# Refinforcing Steel
set Fy 3913.0; # Yield modulus
set E 2103800.0; # Young's modulus
# Steel Tag fy E0 base
uniaxialMaterial Steel01 2 $Fy $E 0
# FRP
# Flexural crack is dominant
set Ef 2500000.0; # FRP modulus of FRP
set Ffc 19000.0; # Ultimate FRP force due to flexural cracks
# Tag Ef alfa Efnef
uniaxialMaterial Elastic 3 $Ef 0.0 0.000001
uniaxialMaterial MinMax 31 3 -max 0.0076
# Extreme debonding is dominant
set Ffe 9250.0; # Ultimate FRP force due to extreme debonding
# Tag Ef alfa Efnef
uniaxialMaterial Elastic 4 $Ef 0.0 0.000001
uniaxialMaterial MinMax 41 4 -max 0.0037
#Define cross-sections for the beams and columns
# ----------------------------------------------
# Col1 and Col2
# Set some parameters
set ColWidth1 35.0;
set ColHeight1 35.0;
set Cover1 3.70;
set As1 1.539; # area of the bar D14
set As2 1.131; # area of the bar D12
# Set variables derived from the parameters
set y11 [expr ($ColHeight1/2.0)];
set z11 [expr ($ColWidth1/2.0)];
# Define cross section for Col1 and Col2
section Fiber 1 {
# Create concrete fibers
patch rect 1 10 1 -$y11 -$z11 $y11 $z11
#Create the reinforcing steel
layer straight 2 3 $As1 [expr $y11 - $Cover1] [expr $z11 - $Cover1] [expr $y11 - $Cover1] [expr $Cover1 - $z11]
layer straight 2 2 $As2 0.0 [expr $z11 - $Cover1] 0.0 [expr $Cover1 - $z11]
layer straight 2 3 $As1 [expr $Cover1 - $y11] [expr $z11 - $Cover1] [expr $Cover1 - $y11] [expr $Cover1 - $z11]
}
# Col3 and Col4
# set some parameters
set ColWidth2 30.0;
set ColHeight2 30.0;
set Cover2 3.6;
# Set variables derived from the parameters
set y12 [expr $ColHeight2/2.0];
set z12 [expr $ColWidth2/2.0];
# Define cross section for Col3 and Col4
section Fiber 2 {
# Create concrete fibers
patch rect 1 10 1 -$y12 -$z12 $y12 $z12
# Create reinforcing steel
layer straight 2 3 $As2 [expr $y12 - $Cover2] [expr $z12 - $Cover2] [expr $y12 - $Cover2] [expr $Cover2 - $z12]
layer straight 2 2 $As2 0.0 [expr $z12 - $Cover2] 0.0 [expr $Cover2 - $z12]
layer straight 2 3 $As2 [expr $Cover2 - $y12] [expr $z12 - $Cover2] [expr $Cover2 - $y12] [expr $Cover2 - $z12]
}
# Section 1 for Beam 3
section Fiber 3 {
# Create the concrete core
patch rect 1 10 1 -$y11 -$z11 $y11 $z11
# Create the reinforcing steel
layer straight 2 2 $As1 [expr $y11 - $Cover1] [expr $z11 - $Cover1] [expr $y11 - $Cover1] [expr $Cover1 - $z11]
layer straight 2 2 $As2 [expr $y11 - $Cover1] 4.567 [expr $y11 - $Cover1] -4.567
layer straight 2 2 $As1 [expr $Cover1 - $y11] [expr $z11 - $Cover1] [expr $Cover1 - $y11] [expr $Cover1 - $z11]
}
# Section 1 for Beam 6
section Fiber 10 {
# Create concrete core
patch rect 1 10 1 -$y12 -$z12 $y12 $z12
# Create the reinforcing steel
layer straight 2 4 $As2 [expr $y12 - $Cover2] [expr $z12 - $Cover2] [expr $y12 - $Cover2] [expr $Cover2 - $z12]
layer straight 2 2 $As2 [expr $Cover2 - $y12] [expr $z12 - $Cover2] [expr $Cover2 - $y12] [expr $Cover2 - $z12]
}
#Fix supports at base of columns
fix 1 1 1 1
fix 2 1 1 1
set LinearTrans 1; # Linear transformation for the elements
geomTransf Linear $LinearTrans;
# Elements
element dispBeamColumn 1 1 3 10 1 $LinearTrans
element dispBeamColumn 2 2 4 10 1 $LinearTrans
element dispBeamColumn 3 3 4 10 3 $LinearTrans
element dispBeamColumn 4 3 5 10 2 $LinearTrans
element dispBeamColumn 5 4 6 10 2 $LinearTrans
element dispBeamColumn 6 5 6 10 10 $LinearTrans
#Define gravity load pattern
pattern Plain 1 Constant {
eleLoad -ele 3 -type -beamUniform -13.667
eleLoad -ele 6 -type -beamUniform -9.73
recorder Node -file Node3D.out -time -node 3 -dof 1 2 disp
recorder Node -file Node3R.out -time -node 1 -dof 1 2 3 reaction
}
# To store and solve the system of equations during the analysis BandGeneral solver is used:
system BandGeneral
# Construct constraint handler, the transformation method
constraints Transformation
# Define DOF numberer
numberer RCM
set Tol 1.0e-8; # convergence tolerance for test
test NormDispIncr $Tol 15 ; # determine if convergence has been achieved at the end of an iteration step
# Create the solution algorithm, since the system is elastic, it can be solved in one iteration.
algorithm Newton
# Since the analysis is static and specific load is to be applied, load control integrator will be used in this example.
# The load factor increment (lambda) is set to 0.1 since the full load is to be applied in 10 analysis steps.
integrator LoadControl 0.1
# The type of analysis is defined as static
analysis Static
# With this all analysis objects are defind, so the analysis can be performed. It is performed by invoking the command
# analyze and by defining the number of analysis steps to be performed.
analyze 10
# Print out the state of nodes 3 and 4
print -node 3 4 5 6
Problem in nonlinear pushover analysis
Moderators: silvia, selimgunay, Moderators
Re: Problem in nonlinear pushover analysis
it is either your elements, section definitions or materials:
1) instead of a fiber section use an elastic one and confirm you get the same result as elastic model. if fails your element or node definitions are incorrect, if works your fiber section or materials are incorrect.
2) then use a fiber section with elastic materials to confirm you get nearly identical results, if that fails the fiber section is wrong, if it works the nonlinear materials is the problem.
1) instead of a fiber section use an elastic one and confirm you get the same result as elastic model. if fails your element or node definitions are incorrect, if works your fiber section or materials are incorrect.
2) then use a fiber section with elastic materials to confirm you get nearly identical results, if that fails the fiber section is wrong, if it works the nonlinear materials is the problem.