Hi dear friends, I have a Pushover analysis example using the ConcreteCM material model, but I can't find the correct base shear value.
I can't find my mistake. I think I've tried everything.
Correct base shear force value = 146.9 kN
I will be glad if you help.
The codes are as follows.
# import libraries
import openseespy.opensees as ops
import opsvis as opsv
import matplotlib.pyplot as plt
import math as m
import numpy as np
# wipe model
ops.wipe()
# create model
ops.model('basic', '-ndm', 2, '-ndf', 3)
# define geometric parameters of beams and columns
LCol = 3.0 # m
# define section parameters
HCol = 0.5 # m
BCol = 0.5 # m
PCol = 9.375 # kN
# create nodes
ops.node(1, 0.0, 0.0)
ops.node(2, 0.0, LCol)
# define boundary condition
ops.fix(1, 1, 1, 1)
# define section tags
ColSecTag = 1 # assign a tag number to the column section
# define column reinforcement properties
coverCol = 5e-2 # m (cover thickness)
numBarsCol = 8 # number of longitudinal - reinforcement bars in each side of column section (synmetric)
DiamBarsCol = 30e-3 # diameter of column bars
BarAreaCol = ((m.pi*pow(DiamBarsCol, 2))/4) # area of longitudinal - reinforcement bars
# define material tags
IDconc_u = 1 # concrete material tag
IDreinf = 2 # steel material tag
# define concrete properties for ConcreteCM material model
fpcc = -30e3
Ec = 27386e3
rc = 1.82
xcrn = 1.3
ft = 0
et = 0
rt = 1.2
xcrp = 3
ops.uniaxialMaterial('ConcreteCM', IDconc_u, fpcc, -0.0025, Ec, rc, xcrn, ft, et, rt, xcrp)
# define reinforcing steel properties for Steel01
Fy = 420e3 # yield strength (kPa)
E0 = 2e8 # modulus of elasticity (kPa)
b = 0.008 # strain hardening ratio
ops.uniaxialMaterial('Steel01', IDreinf, Fy, E0, b) # create steel material object
################################################################################################################################
################################################################################################################################
#################################---------------DEFINE FIBER SECTION for COLUMN-----------------################################
#################################-------------------SYNMETRIC SECTION---------------------------################################
################################################################################################################################
################################################################################################################################
# define some parameters for columns
coverY = (HCol/2) # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
coverZ = (BCol/2) # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
coreY = (coverY - coverCol)
coreZ = (coverZ - coverCol)
nfCoreY = 4 # number of fibers in the core patch in the y direction
nfCoreZ = 4 # number of fibers in the core patch in the z direction
# define fiber section
ops.section('Fiber', ColSecTag)
# define the core patch
ops.patch('quad', IDconc_u, nfCoreZ, nfCoreY, -coreY, coreZ, -coreY, -coreZ, coreY, -coreZ, coreY, coreZ)
# Define the four cover patches
ops.patch('quad', IDconc_u, 1, 6, -coverY, coverZ, -coverY, coreZ, coverY, coreZ, coverY, coverZ)
ops.patch('quad', IDconc_u, 1, 6, -coverY, -coreZ, -coverY, -coverZ, coverY, -coverZ, coverY, -coreZ)
ops.patch('quad', IDconc_u, 4, 1, -coverY, coreZ, -coverY, -coreZ, -coreY, -coreZ, -coreY, coreZ)
ops.patch('quad', IDconc_u, 4, 1, coreY, coreZ, coreY, -coreZ, coverY, -coreZ, coverY, coreZ)
# Define reinforcing layers
ops.layer('straight', IDreinf, 3, BarAreaCol, coreY, coreZ, coreY, -coreZ)
ops.layer('straight', IDreinf, 3, BarAreaCol, -coreY, coreZ, -coreY, -coreZ)
ops.layer('straight', IDreinf, 2, BarAreaCol, 0, coreZ, 0, -coreZ)
################################################################################################################################
################################################################################################################################
################################---------------PLOT the FIBER SECTION for COLUMN-----------------###############################
#################################-------------------SYNMETRIC SECTION---------------------------################################
################################################################################################################################
################################################################################################################################
fib_sec_1 = [['section', 'Fiber', ColSecTag],
['patch', 'quad', IDconc_u, nfCoreZ, nfCoreY, -coreY, coreZ, -coreY, -coreZ, coreY, -coreZ, coreY, coreZ],
['patch', 'quad', IDconc_u, 1, 6, -coverY, coverZ, -coverY, coreZ, coverY, coreZ, coverY, coverZ],
['patch', 'quad', IDconc_u, 1, 6, -coverY, -coreZ, -coverY, -coverZ, coverY, -coverZ, coverY, -coreZ],
['patch', 'quad', IDconc_u, 4, 1, -coverY, coreZ, -coverY, -coreZ, -coreY, -coreZ, -coreY, coreZ],
['patch', 'quad', IDconc_u, 4, 1, coreY, coreZ, coreY, -coreZ, coverY, -coreZ, coverY, coreZ],
['layer', 'straight', IDreinf, 3, BarAreaCol, coreY, coreZ, coreY, -coreZ],
['layer', 'straight', IDreinf, 3, BarAreaCol, -coreY, coreZ, -coreY, -coreZ],
['layer', 'straight', IDreinf, 2, BarAreaCol, 0, coreZ, 0, -coreZ],
]
matcolor = ['r', 'lightgrey', 'gold', 'w', 'w', 'w']
opsv.plot_fiber_section(fib_sec_1, matcolor = matcolor)
plt.axis('equal')
# plt.savefig('fibsec_rc.png')
plt.show()
# define geomTransf
ColTransfTag = 1 # associate a tag to column transformation
ColTransfType = 'Linear'
ops.geomTransf(ColTransfType, ColTransfTag) # columns can have P - Delta effects
# create beamIntegration
N = 5
ops.beamIntegration('Legendre', 1, ColSecTag, N)
# create elements
ops.element('nonlinearBeamColumn', 1, 1, 2, N, ColSecTag, ColTransfTag, '-integration', 'Legendre')
# define recorders
# displacement of free nodes
ops.recorder('Node', '-file', 'trial disp.out', '-time', '-node', 2, '-dof', 1, 2, 3, 'disp')
ops.recorder('Node', '-file', 'trial.out', '-time', '-node', 1, '-dof', 1, 2, 3, 'reaction')
# define vertical load
ops.timeSeries('Linear', 1)
ops.pattern('Plain', 1, 1)
ops.load(2, 0.0, -PCol, 0.0)
# define analysis objects
ops.constraints('Plain')
ops.numberer('Plain')
ops.system('BandGen')
ops.test('NormDispIncr', 1e-8, 10)
ops.algorithm('Newton')
Nstep = 10
Dstep = (1/Nstep)
ops.integrator('LoadControl', Dstep)
ops.analysis('Static')
ops.analyze(Nstep)
ops.loadConst('-time', 0.0)
# Static Pushover Analysis
ops.wipeAnalysis()
IDctrlNode = 2
IDctrlDOF = 1
Dmax = 0.1
Dincr = 0.0005*LCol
Hload = PCol
ops.timeSeries('Linear', 2)
ops.pattern('Plain', 2, 2)
ops.load(2, Hload, 0.0, 0.0)
# define static pushover analysis objects
ops.constraints('Plain')
ops.numberer('Plain')
ops.system('BandGen')
ops.test('NormDispIncr', 1e-7, 200)
ops.algorithm('Newton', '-initial')
ops.integrator('DisplacementControl', IDctrlNode, IDctrlDOF, Dincr)
ops.analysis('Static')
Nsteps = int(Dmax/Dincr)
ops.analyze(Nsteps)
I can't get the pushover curve
Moderators: silvia, selimgunay, Moderators