I am working on a simple model as Prof. Scott suggests, to know how to apply pore pressure.
I created three layers, the middle one being a SSPBrickUP element and the other two SSPBrick, I want to initialize the model with gravity applying pore pressure of 10kPa on the porous nodes. For which model is working fine. When I applied an additional pore pressure of 10kPa, the load application was not correct. Below I am attaching my code. Kindly provide with me your suggestions.
Code: Select all
import opensees as ops
ops.wipe()
ops.model('basic','-ndm',3,'-ndf',3)
a = 1
ops.node(1,0,0,0)
ops.node(2,0,0,a)
ops.node(3,0,a,0)
ops.node(4,0,a,a)
ops.node(5,a,0,0)
ops.node(6,a,0,a)
ops.node(7,a,a,0)
ops.node(8,a,a,a)
c = 3
b = 2
ops.node(13,0,0,c)
ops.node(14,a,0,c)
ops.node(15,a,a,c)
ops.node(16,0,a,c)
ops.node(90,0,0,b)
ops.node(100,a,0,b)
ops.node(110,a,a,b)
ops.node(120,0,a,b)
ops.fix(1,1,1,1)
ops.fix(2,1,1,0)
ops.fix(3,1,1,1)
ops.fix(4,1,1,0)
ops.fix(5,1,1,1)
ops.fix(6,1,1,0)
ops.fix(7,1,1,1)
ops.fix(8,1,1,0)
ops.fix(13,1,1,0)
ops.fix(14,1,1,0)
ops.fix(15,1,1,0)
ops.fix(16,1,1,0)
ops.fix(90,1,1,0)
ops.fix(100,1,1,0)
ops.fix(110,1,1,0)
ops.fix(120,1,1,0)
ops.nDMaterial('ElasticIsotropic',1,10e6,0.3,1.64)
ops.element('SSPbrick',1,1,5,7,3,2,6,8,4,1,0,0,-9.81*1.64)
ops.element('SSPbrick',3,90,100,110,120,13,14,15,16,1,0,0,-9.81*1.64)
ops.model('basic','-ndm',3,'-ndf',4)
ops.node(9,0,0,b)
ops.node(10,a,0,b)
ops.node(11,a,a,b)
ops.node(12,0,a,b)
ops.node(20,0,0,a)
ops.node(40,0,a,a)
ops.node(60,a,0,a)
ops.node(80,a,a,a)
ops.nDMaterial('ElasticIsotropic',2,10e6,0.3,1.8)
f=0
ops.fix(9,1,1,0,f)
ops.fix(10,1,1,0,f)
ops.fix(11,1,1,0,f)
ops.fix(12,1,1,0,f)
ops.fix(20,1,1,0,0)
ops.fix(40,1,1,0,0)
ops.fix(60,1,1,0,0)
ops.fix(80,1,1,0,0)
ops.element('SSPbrickUP',2,20,60,80,40,9,10,11,12,2,2.2e6,1,1e-5,1e-5,1e-5,0.67,1.5e-5,0,0,-9.81)
ops.equalDOF(2,20,1,2,3)
ops.equalDOF(4,40,1,2,3)
ops.equalDOF(6,60,1,2,3)
ops.equalDOF(8,80,1,2,3)
ops.equalDOF(90,9,1,2,3)
ops.equalDOF(100,10,1,2,3)
ops.equalDOF(110,11,1,2,3)
ops.equalDOF(120,12,1,2,3)
damp = 0.1
omega1 = 0.0157
omega2 =64.123
a1 = 2*damp/(omega1+omega2)
a0 = a1*omega1*omega2
# Create Analysis
ops.constraints('Penalty',1e17,1e17)
ops.test('NormDispIncr',1e-4,20,1)
ops.algorithm('Newton')
ops.numberer('RCM')
ops.system('BandGen')
ops.integrator('Newmark',0.5,0.25)
ops.rayleigh(a0,0,a1,0)
ops.analysis('Transient')
t = 0
ops.timeSeries('Path',2,'-time',0+t,1000+t,2000+t,4000+t,'-values',0,10,10,10,'-factor',1)
ops.pattern('MultipleSupport',2)
ops.groundMotion(2,'Plain','-vel',2)
ops.imposedMotion(9,4,2)
ops.imposedMotion(10,4,2)
ops.imposedMotion(11,4,2)
ops.imposedMotion(12,4,2)
ops.imposedMotion(20,4,2)
ops.imposedMotion(40,4,2)
ops.imposedMotion(60,4,2)
ops.imposedMotion(80,4,2)
ops.analyze(200,10)
ops.loadConst('-time')
t = 2000
ops.timeSeries('Path',3,'-time',0+t,1000+t,2000+t,'-values',0,10,10,'-factor',1)
ops.pattern('MultipleSupport',3)
ops.groundMotion(3,'Plain','-vel',3)
ops.imposedMotion(9,4,3)
ops.imposedMotion(10,4,3)
ops.imposedMotion(11,4,3)
ops.imposedMotion(12,4,3)
ops.imposedMotion(20,4,3)
ops.imposedMotion(40,4,3)
ops.imposedMotion(60,4,3)
ops.imposedMotion(80,4,3)
ops.analyze(200,10)
2000 10 10 10 10 10 10 10 10
2010 -1499.95 -1499.95 -1499.95 -1499.95 -1499.95 -1499.95 -1499.95 -1499.95
2020 1510.1 1510.1 1510.1 1510.1 1510.1 1510.1 1510.1 1510.1
2030 -1499.85 -1499.85 -1499.85 -1499.85 -1499.85 -1499.85 -1499.85 -1499.85
Thank you for your time, Kindly ask me If I have to provide any additional information.