How to apply pore pressure

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Trish
Posts: 7
Joined: Thu Feb 24, 2022 1:44 am

How to apply pore pressure

Post by Trish » Mon Mar 20, 2023 7:26 am

Dear,

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)

the pore pressure result for nodes 9,10,11,12,20,40,60,80
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.

Post Reply