Cyclic analysis and hystertic behavior

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Ofsi
Posts: 13
Joined: Sun Jun 19, 2011 3:17 am
Location: Reykjavik University

Cyclic analysis and hystertic behavior

Post by Ofsi »

Hi, I'm currently comparing Flexural Beam column and Force Based beam column against an FE program where I'm using the elements to represent a shear wall. I've managed so far to get a very nice result in a static pushover where all the models have a very similar "breaking" point (convergence failure due to inbalance) and the displacement agrees reasonably well between models although as expected the results are not exactly the same. So next step I'm trying to achieve is to create a cyclic test where 80% of the ultimate displacement is used as a displacement target, and hopefully I will see less force needed each cycle cause the elements have started to go into nonlinear range. However the script I've made for this cyclic test does not work as I was hoping and I'm wondering where I'm dooing things wrong. So in short I create a scenario where I do a push to the 80% of the displacement and then I "push" it back to 0.0 displacement and then start again, however I get a convergence error on the third fourth loop on "the way back" i.e. each cycle is 2 loops and no visible change in force needed for displacement change in the second cycle. Where am I thinking this wrong, does OpenSees not "remember" the first loop?

The code is and the parameter maxDisp80percent I control in a master source file cause it changes with different wall types.

# set some parameters
set ok 0
set currentDisp 0.0
set dU 0.00001; # Displacement increment

for {set cycle 1} {$cycle <= 10} {incr cycle} {
# The parameters if we are on the return path i.e. cycle 1 goes to max displacement and 2 goes back to 0 and so forth.
if {($cycle % 2) != 0} {
set cycReverse 1.0;
set maxU [expr $maxDisp80percent]
integrator DisplacementControl [expr int($nrNodes)] 1 $dU 1 $dU $dU
}
if {($cycle % 2) == 0} {
set cycReverse -1.0
set maxU 0.0
integrator DisplacementControl [expr int($nrNodes)] 1 -$dU 1 -$dU -$dU
}

while {$ok == 0 && ($currentDisp*$cycReverse) < $maxU} {

set ok [analyze 1]

# if the analysis fails try initial tangent iteration

if {$ok != 0} {
test NormDispIncr 1.0e-6 1000
algorithm ModifiedNewton -initial
set ok [analyze 1]

#Goes back the the Newton algorithm with more loose iteration criteria.

test NormDispIncr 1.0e-6 10
algorithm Newton
}

set currentDisp [nodeDisp [expr int($nrNodes)] 1]
}
}
Ofsi
Posts: 13
Joined: Sun Jun 19, 2011 3:17 am
Location: Reykjavik University

Re: Cyclic analysis and hystertic behavior

Post by Ofsi »

Also the reason for dooing it this way and not like the other methods I've looked at in examples is because it will be easier to simulate in ANSYS for comparison.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Cyclic analysis and hystertic behavior

Post by vesna »

What is the message that you get after you encounter convergence problems?
Ofsi
Posts: 13
Joined: Sun Jun 19, 2011 3:17 am
Location: Reykjavik University

Re: Cyclic analysis and hystertic behavior

Post by Ofsi »

Hi vesna,

just the usual ones, failed at load step after specified ammount of iterations. What happened is that it went few cycles but on the contrary to what I was hoping for the ultimate force needed for the displacement was the same, each cycle. Now I would assume that if the analysis would have finished successfully that meant I never got into the non linear range of the materials but since it failed before I'm wondering what the error is.
Post Reply