Hi,
I am using Qz Material and trying to get material response but the response is not as expected. I am wondering if there if anything wrong with the code or the material? Appreciate your help. Thank you.
import openseespy.opensees as op
import matplotlib.pyplot as plt
op.wipe()
# Create 3 dimensional, 3 DOF domain
op.model('basic','-ndm', 2, '-ndf', 2)
# Define Nodes
op.node(1, 0.0, 0.0)
op.node(2, 0.0, 0.0)
# Define Constraints
op.fix(1, 1, 1)
op.fix(2, 1, 0)
# Define Qz Material
qult = 52920476.6
z50 = 0.0075
op.uniaxialMaterial('QzSimple1', 1, 2, qult, z50)
op.element('zeroLength', 1, 1, 2, '-mat', 1, '-dir', 2)
# Define Loading
op.timeSeries('Linear', 1)
op.pattern('Plain', 1, 1)
op.load(2, 0.0, 10.0)
# Define Analysis Commands
op.system('BandGeneral')
op.constraints('Transformation')
op.numberer('Plain')
op.test('NormDispIncr', 1.0e-12, 10)
op.algorithm('Newton', '-initial')
dU = 0.0001
op.integrator('DisplacementControl', 2, 2, dU)
op.analysis('Static')
# Define Analysis Parameters
maxU = 0.25 * 50
currentDisp = 0.0
ok = 0
currentDisp_list = list()
currentReaction_list = list()
currentForce_list = list()
# Analyze
while ok == 0 and currentDisp < maxU:
ok = op.analyze(1)
if ok != 0:
print("Analysis failed")
break
# Record and Print Output
currentDisp = op.nodeDisp(2, 2) / z50
op.reactions()
currentReaction = op.nodeReaction(1, 2)
currentForce = op.eleForce(1, 2) / qult
print(currentDisp, currentReaction)
currentDisp_list.append(currentDisp)
currentReaction_list.append(-currentReaction)
currentForce_list.append(-currentForce)
# Plot Figure
plt.figure()
plt.plot(currentDisp_list, currentForce_list, label='qz Material')
plt.xlabel('z / z50')
plt.ylabel('Q / Qult')
plt.legend(loc='best')
plt.show
print("Finish")
Qz Material Response
Moderators: silvia, selimgunay, Moderators
-
- Posts: 2
- Joined: Sun Mar 26, 2017 8:20 pm
- Location: The University of Auckland
Re: Qz Material Response
You will have to provide more details on what you expect and what you're getting from the model.
-
- Posts: 2
- Joined: Sun Mar 26, 2017 8:20 pm
- Location: The University of Auckland
Re: Qz Material Response
Hi, sorry, please find the response from the model in the following plot.
https://drive.google.com/file/d/1ngTahL ... sp=sharing
I am getting a linear response. The response shows that the z/z50 ratio has reached 12 but Q/Qult ratio is 0.012, which is not as expected. I am expecting a nonlinear response with a much steeper initial slope as shown in https://opensees.berkeley.edu/wiki/inde ... 1_Material for Piles in Sand (qzType = 2) Vijayvergiya (1997)
https://drive.google.com/file/d/1ngTahL ... sp=sharing
I am getting a linear response. The response shows that the z/z50 ratio has reached 12 but Q/Qult ratio is 0.012, which is not as expected. I am expecting a nonlinear response with a much steeper initial slope as shown in https://opensees.berkeley.edu/wiki/inde ... 1_Material for Piles in Sand (qzType = 2) Vijayvergiya (1997)
-
- Posts: 3
- Joined: Thu Jun 11, 2020 4:32 pm
Re: Qz Material Response
Hi Shong,
Qz material model is similar to a contact element. The material has a finite stiffness when it is in contact, while a suction pressure acts when there is a gap. While using this material with a zero-length element, the direction of the contact vector is important.
In line 21, while defining the zero length element,
The contact vector is wrongly defined. As a result, when you apply a load, it experiences suction. Ideally, the reaction should be zero (an unstable condition), However, I think, the material has a default +ve suction pressure implemented for stability. I tried to set it zero, but still, it has the same response.
The problem can be fixed in the following ways :
a) change the order of the nodes while defining the zerolength element
b) keep the same node order but define the orientation of the element (see the documentation https://opensees.berkeley.edu/wiki/inde ... th_Element)
Thanks
Sumeet
Qz material model is similar to a contact element. The material has a finite stiffness when it is in contact, while a suction pressure acts when there is a gap. While using this material with a zero-length element, the direction of the contact vector is important.
In line 21, while defining the zero length element,
Code: Select all
op.element('zeroLength', 1, 1, 2, '-mat', 1, '-dir', 2)
The problem can be fixed in the following ways :
a) change the order of the nodes while defining the zerolength element
Code: Select all
op.element('zeroLength', 1, 2, 1, '-mat', 1, '-dir', 2)
Code: Select all
orientation = [-1,0,0,0,-1,0]
op.element('zeroLength', 1, 1, 2, '-mat', 1, '-dir', 2,'-orient',*orientation)
Sumeet