Bug in the Hysteretic material?

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
cchisari
Posts: 6
Joined: Wed Mar 16, 2016 2:10 am
Location: University of Salerno

Bug in the Hysteretic material?

Post by cchisari » Mon Apr 03, 2017 7:15 am

Dear all,

I found a very strange behaviour for the Hysteretic uniaxial material model. Apparently, in the unloading phase of a cyclic quasi-static test it uses the "maximum" stiffness of the backbone curve, instead of the "initial" one. This may give rise to unexpected behaviour when the material backbone curve is not defined as stiffness-decreasing.

I prepared a short example to show this strange behaviour. Basically, the model is represented by a single zero-length element which has one end fixed and a displacement history at the other end. This displacement history is an increasing ramp up to 20mm and then a decreasing ramp until 0. In other word, there is a loading semi-cycle. The material is defined such as the elastic limit is 30mm, and thus it should remain elastic during the whole loading history. With this constraint, two Hysteretic materials are defined: the first (applied to dof 1) has a degrading stiffness after the elastic limit, i.e. a stiffness which is LESS than the initial one; the second (applied to dof 2) has an increasing stiffness after the elastic limit. Since the zero-length element dofs are uncoupled I applied the same loading history to both dofs to see the differences in the material response. You can clearly see that the unloading stiffness of the second material is different from what should be expected, given that the material has not passed the elastic limit.

wipe
#create the ModelBuilder object
model BasicBuilder -ndm 3 -ndf 6

# add nodes - command: node nodeId xCrd yCrd
node 1 0.0 0.0 0.0
node 2 0.0 0.0 0.0

## read material
set K 5000.

uniaxialMaterial Hysteretic 1 [expr $K*30] 30 [expr $K*30*1.01] 45. [expr -$K*30] -30 [expr -$K*30*1.01] -45. 1 1 0.0 0.0
uniaxialMaterial Hysteretic 2 [expr $K*30] 30 [expr $K*30*2.0] 45. [expr -$K*30] -30 [expr -$K*30*2.0] -45. 1 1 0.0 0.0

# add zero-length elements
element zeroLength 1 1 2 -mat 1 2 1 1 1 1 -dir 1 2 3 4 5 6

# set the boundary conditions - command: fix nodeID xResrnt? yRestrnt?
fix 1 1 1 1 1 1 1

set incrOutput 1.
set initialTime 0
loadConst -time [expr $initialTime-$incrOutput]

#TimeSeries
timeSeries Path 1 -time {0. 50. 100.} -values {0 20 0 }
#set load on node 2
pattern Plain 1 1 {
sp 2 1 1.0
}

pattern Plain 2 1 {
sp 2 2 1.0
}


#set recorder for reaction and displacement
recorder Node -file rot.txt -node 2 -time -dof 1 2 disp
recorder Node -file mom.txt -node 2 -time -dof 1 2 reaction

# Cyclic loading to the model by Disp. control
constraints Lagrange
numberer Plain
system BandGeneral
variable TolStatic 1.e-6; # Convergence Test: tolerance
variable maxNumIterStatic 400; # Convergence Test: maximum number of iterations
variable printFlagStatic 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
variable testTypeStatic EnergyIncr ; # Convergence-test type
test $testTypeStatic $TolStatic $maxNumIterStatic $printFlagStatic;
algorithm KrylovNewton;
integrator LoadControl $incrOutput
analysis Static
analyze 101; #steps

Post Reply