I can't get the pushover curve

Forum for asking and answering questions related to use of the OpenSeesPy module

Moderators: silvia, selimgunay, Moderators

Post Reply
ilyasculha
Posts: 4
Joined: Sun Sep 18, 2022 2:05 am

I can't get the pushover curve

Post by ilyasculha » Fri Sep 23, 2022 4:18 am

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)

Post Reply