Triple Friction Pendulum Element

Post Reply
Al-Haaj
Posts: 2
Joined: Fri Sep 17, 2021 8:49 am

Triple Friction Pendulum Element

Post by Al-Haaj » Fri Sep 17, 2021 8:59 am

Dear community
I'm trying to do eigenanalysis of the TFP bearing but I'm getting a very large period of 90 seconds. I used the same script provided on the Opensees wiki. I hope someone helps me figure out the problem and thanks.

# MODEL FOR CHECKING TripleFrictionPendulum ELEMENT
# TYPE: STATIC CYCLIC PUSHOVER - CONSTANT FRICTION COEFFICIENTS
# CREATED BY: NHAN DAO, UNR
################################################
# INPUT INFORMATION
# INPUT INFORMATION
# INPUT INFORMATION

set Drtn 0.; # Angle of direction to check, degree, -90 <= Drtn <=90
set OutDir Output; # Output folder
set OutFile Disp.txt; # Output file
# bearing information
set L1 0.36; # effective length
set L2 1.25;
set L3 1.25;
set mu1 0.012; # friction coefficient
set mu2 0.052;
set mu3 0.14;
set d1 0.1; # pendulum displacement limit
set d2 0.2;
set d3 0.2;
set uy 0.001; # displacement where sliding starts
set kvc 1000.; # vertical compression stiffness
set kvt 1.; # vertical tension stiffness
set minFv 0.1; # minimum compression force in the bearing

set W 1000.; # static weight supported by the bearing
set tol 1.e-5; # relative tolerance for checking convergence

# END OF INPUT INFORMATION
# END OF INPUT INFORMATION
# END OF INPUT INFORMATION
################################################
# CREATE MODEL AND ANAYLIZE
wipe;
model basic -ndm 3 -ndf 6;
#----------------------------------------------
# Creating nodes
node 1 0. 0. 0.;
node 2 0. 0. 0.;
#---------------------------------------------
# Applying kinematic boundary condition
mass 2 250 0 250 0 0 0
fix 1 1 1 1 1 1 1
fix 2 0 1 0 1 1 1;
#-----------------------------------------------
# Creating friction models
# frictionModel Coulomb tag mu
frictionModel Coulomb 1 $mu1
frictionModel Coulomb 2 $mu2
frictionModel Coulomb 3 $mu3
#-----------------------------------------------
# Creating materials for compression and rotation behaviors
uniaxialMaterial Elastic 1 $kvc;
uniaxialMaterial Elastic 2 10.;
#-----------------------------------------------
# Creating TripleFrictionPendulum element
# element TripleFrictionPendulum $eleTag $iNode $jNode $frnTag1 $frnTag2 $frnTag3 $vertMatTag $rotZMatTag $rotXMatTag $rotYMatTag $L1 $L2 $L3 $d1 $d2 $d3 $W $uy $kvt $minFv $tol
element TripleFrictionPendulum 1 1 2 1 2 3 1 2 2 2 $L1 $L2 $L3 $d1 $d2 $d3 $W $uy $kvt $minFv $tol;
#---------------------------------------------------
# Applying static vertical load
pattern Plain 1 Linear {
load 2 0. 0. [expr -$W] 0. 0. 0.
}
record

# Perform eigenvalue analysis
set numModes 2

# Record eigenvectors

for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format "Mode_%i.out" $k] -nodeRange 1 933 -dof 1 2 3 "eigen $k"
}

set lambda [eigen -fullGenLapack $numModes]

# Calculate periods

set T {}
foreach lam $lambda {
lappend T [expr 6.283185/sqrt($lam)]
}

# Write periods file

set period "Periods.out"
set Periods [open $period "w"]
foreach t $T {
puts $Periods "$t"
}
close $Periods
#----------------------------------------------
# Creating analysis object
numberer RCM
system BandGeneral
constraints Transformation
test NormDispIncr 1e-8 100;
algorithm Newton;
integrator LoadControl 1.;
analysis Static
analyze 1
loadConst -time 0.0;
#--------------------------------------------
# Applying unit load for pushover
pattern Plain 2 Linear {
load 2 [tcl::mathfunc::cos [expr $Drtn*3.141592653598793/180]] [tcl::mathfunc::sin [expr $Drtn*3.141592653598793/180]] [expr 0.] 0. 0. 0.
}
#----------------------------------------------
# Creating analysis object
integrator DisplacementControl 2 1 .1;
analysis Static
#-----------------------------------------------------
# create recorder object
file mkdir $OutDir;
recorder Node -file $OutDir/$OutFile -time -nodes 2 -dof 1 2 disp
#----------------------------------------------------
# Cyclic pushover
foreach d {.2 -.4 .4 -.4 .4 -.4 .4 -.4 .4 -.4 .4 -.4 .6 -.8 .8 -.8 1. -1.2 1.2} {
#foreach d {.49}
incr cnt 1;
puts "step: $cnt , d= $d";
if {$d >= 0} {
set du .001;
} else {
set du -.001;
}
set nstep [expr int($d/$du)];
if {$Drtn >= -45 && $Drtn <= 45} {
set du [expr $du*[tcl::mathfunc::cos [expr $Drtn*3.141592653598793/180]]];
integrator DisplacementControl 2 1 $du;
} else {
set du [expr $du*[tcl::mathfunc::sin [expr $Drtn*3.141592653598793/180]]];
integrator DisplacementControl 2 2 $du;
}
set ok 0;
set temp 1;
while {$temp <= $nstep && $ok == 0} {
incr temp 1;
set ok [analyze 1]
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch
set ok [analyze 1]
algorithm Newton
}
if {$ok != 0} {
puts "Trying KrylovNewton .."
test EnergyIncr 1.0e-10 100 0
algorithm KrylovNewton
set ok [analyze 1]
test EnergyIncr 1.0e-10 100 0
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 100
set ok [analyze 1]
algorithm Newton
}
}; # end while loop
}
wipe

marafini.f
Posts: 272
Joined: Fri Nov 13, 2020 1:52 pm

Re: Triple Friction Pendulum Element

Post by marafini.f » Fri Sep 17, 2021 11:31 am

Dear Al-Haaj,

Dr. Petracca made two webinars on this topic.
#12 and # 19
https://asdeasoft.net/?webinar


Normally when performing an eigenvalue analysis on systems like the friction pendulum, nonlinearities are taken into account by using an elastic spring with effective stiffness. Try watching the videos, it is explained there.

Enjoy your modelling.
Francesca :geek:

Al-Haaj
Posts: 2
Joined: Fri Sep 17, 2021 8:49 am

Re: Triple Friction Pendulum Element

Post by Al-Haaj » Sat Sep 18, 2021 3:39 pm

Dear marafini.f
Thank you for the responce

marafini.f
Posts: 272
Joined: Fri Nov 13, 2020 1:52 pm

Re: Triple Friction Pendulum Element

Post by marafini.f » Wed Sep 22, 2021 7:48 am

You are welcome.

Post Reply