Friction damper cyclic loading

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

Moderators: silvia, selimgunay, Moderators

pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Friction damper cyclic loading

Post by pkm »

hello ,
I have problem with cyclic loading on my friction model. it is a simple friction damper model that i want to test by cylic load but after 0.04m it sholud turn back it continues til 0.08cm and then stops!!
here i write my model, please help me to find the problem.
#--set up------------
model basic -ndm 2 -ndf 3;

# nodes
# x y
node 1 0.0 0.0
node 2 0.0 0.0
node 3 2.0 0.0
node 4 4.0 0.0

#Boundary Condition
fix 1 1 1 1;
fix 4 1 1 0;

geomTransf Corotational 1

# Friction Hing
set Mf 700;
set Ef 1e15;
uniaxialMaterial Steel01 $matID $Mf $Ef 0.0

# Create the zero length element
element zeroLength $eleID $nodeR $nodeC -mat $matID -dir 6
equalDOF $nodeR $nodeC 1 2

# rigid part ---beam 23
set E 2.1e10;
set Er 1e20;
element elasticBeamColumn 23 2 3 13.2e-4 $Er 318e-16 1;;

#beam 34
element elasticBeamColumn 34 3 4 13.2e-4 $E 318e-16 1;

# Pattern Plain
pattern Plain 1 Linear {
load 3 0.0 1.0 0.0 0;
}
# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;
integrator DisplacementControl 3 2 0
analysis Static

foreach Dincr {+4.0E-5 -8.0E-5 +4.0E-5} {
integrator DisplacementControl 3 2 $Dincr
analyze 1000
}
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Friction damper cyclic loading

Post by vesna »

Replace load pattern and analysis objects with this:

# Pattern Plain
pattern Plain 1 Linear {
load 3 0.0 1.0 0.0;
}
# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;


foreach Dincr {+4.0E-5 -8.0E-5 +4.0E-5} {
integrator DisplacementControl 3 2 $Dincr
analysis Static
analyze 1000
}
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

I replaced them as you said but it has converge error!!
I don't know what is wrong!?
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

it's whole of error:

WARNING: CTestEnergyIncr::test() - failed to converge
after: 25 iterations
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at
load factor -343.177
OpenSees > analyze failed, returned: -3 error flag

als it records the displacment till .o8 again!!!! it doesn't turn back!!!!!?
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Friction damper cyclic loading

Post by vesna »

Replace Steel01 with Steel02. Steel01 will not work with DisplacementControl integrator due to the sharp transition from elastic to plastic behavior.

Also replace the analysis objects with the ones below to better deal with the convergence problems.

# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;


foreach Dincr {+4.0E-5 -8.0E-5 +4.0E-5} {
integrator DisplacementControl 3 2 $Dincr
analysis Static
set ok 0
set currentStep 1
set nSteps 1000
while {$ok == 0 && $currentStep =< $nSteps} {
set ok [analyze 1]
if {$ok != 0} {
test NormDispIncr 1.0e-6 1000 1
algorithm ModifiedNewton –initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
set currentStep [expr $currentStep+1]
}
}
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

thank you very very much
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

hello vesna,
I have convegence error in my cyclic loading when direction of displacement wnats to turn back.according this it doesn't turn back and continues until 8cm!!.so i have to change my convergence tolerence to 5e-1 that i think is very big number for tolerence! here is my cyclic part of code with changed tolerence :
foreach Dincr {+4.0E-3 -4.0E-3 -4.0E-3 +4.0E-3} {
integrator DisplacementControl 3 1 $Dincr;
analysis Static;
set ok 0;
set currentStep 1;
set nSteps 1000;
while {$ok == 0 && $currentStep <= $nSteps} {
set ok [analyze 1];
if {$ok != 0} {
test NormDispIncr 5.0e-1 1000 1;
algorithm ModifiedNewton #–initial
set ok [analyze 1];
test NormDispIncr 5.0e-1 6 2;
algorithm Newton;
}
set currentStep [expr $currentStep+1];
}
}
what is your idea about tolernece?
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Friction damper cyclic loading

Post by vesna »

This tolerance is too big. The problem might be solved but the results will not be correct.

Would you please post your code so I can check it?
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

Dear vesna,
thank you for your great helps. my code was long so i send it to your email(vesna AT berkely DOT edu)
thanks again
pkm
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Friction damper cyclic loading

Post by vesna »

I have sent you the corrected file. It works now.
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

Dear vesna,
thanks again for your previuos reply.
My code run successfully with your help. but unfortunatly when I want to test buckling in my code it stops in step1000 and doesn't turn back!!!
for the purpose of modeling the buckling I used gusset plate and geometric imperfection in my brace element as you suggested me to read from
" Patxi Uriz and Stephen A. Mahin ...". It was really useful.
I'm confused with these kind of errors!! I really don't know what I should do?!
Its error is saying :
failed to get compatible element forces and deformation for element...
the integrator failed in update
the algoritm failed in iteration
test failed to converge
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Friction damper cyclic loading

Post by vesna »

It is strange that it stops exactly after 1000 steps. It looks to me like there is a problem with your model rather than with the analysis. It looks like after you change the direction of loading, your model can not handle the load with the opposite direction of loading and then it fails. Try loading first in the opposite direction. First Dincr has to be negative.
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

I cheched my code with these analysis :
1) constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1e-6 25 0 ;
algorithm Newton ;
integrator DisplacementControl 3 1 -0.01 ;
analysis Static ;
analyze 8000

It runs successfully.

2) constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1e-6 25 0 ;
algorithm Newton ;

set controlnode 3
set loaddirection 1
set currentDisp 0.0

foreach Dincr {-4E-3 +8E-3 -4E-3} {
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
set nSteps 1000
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts " "
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts " "
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}
}

It fails in step 501!!!

2)constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1e-6 25 0 ;
algorithm Newton ;

set controlnode 3
set loaddirection 1
set currentDisp 0.0

foreach Dincr {4E-3 -8E-3 4E-3} {
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
set nSteps 1000
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts " "
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts " "
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts " "
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}
}

It fails in step 1000!!!!

What is wrong!!??
Do you still think my model has problem? if yes, why it runs in analysis(1) successfully?
It doesn't matter what is the value of Dincr, in mentioned steps it fails!?
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Friction damper cyclic loading

Post by vesna »

What is the difference between the cases 2 and 3?
pkm
Posts: 34
Joined: Mon Aug 09, 2010 11:55 am

Re: Friction damper cyclic loading

Post by pkm »

in case 2 direction of displacement in first 1000steps is negative ($Dincr=-4E-3) then in second 1000steps ($Dincr=+8E-3)
but in case 3 direction is first positive ($Dincr=+4E-3) then in second1000steps $Dincr=-8E-3
as you said I tried to check negative direction.
Post Reply