Flat Slider Bearing

A forum dedicated to feature requests and the future direction of OpenSees, i.e. what would you like, what do you need, what should we explore

Moderators: silvia, selimgunay, Moderators

Post Reply
giovannib
Posts: 1
Joined: Tue Feb 16, 2016 11:39 am

Flat Slider Bearing

Post by giovannib »

Hi,
could someone help me to define the following topics related to the "MODELLO TELAIO ELASTICO" (related to the precast building with supported beam on the coulomns )?:
1) tag in Friction Model Coulomb;
2)eleTag of Flat Slider Bearing;
3)-P $matTag, -Mz $matTag
4) Is it correct to model the friction as per below?
set attFittE [expr 1.0e8]; #N M
set attFittFy [expr 10.0*$kN];
set mtAttFitt 3; #Attrito
uniaxialMaterial ElasticPP $mtAttFitt $attFittE [expr $attFittFy/$attFittE]; #uniaxialMaterial ElasticPP $matTag $E $epsyP


#############################
# MODELLO DEL TELAIO ELASTICO
#############################

wipe

#create ModelBuilder#
model basic -ndm 2 -ndf 3; #dimensione del problema e numero di gradi di libertà

#file esterni#
source units.tcl;
source parametriDinamica.tcl;

#geometria elementi#
set luceTr 19.0
set altezzaPil 6.0
set altezzaTamp 6.0; #altezza tamponatura
set dampRatio 0.05
set massaTrave 5360.0; #Per unità di lunghezza kg/m (solo carico aggiuntivo = CARICHI SOPRA LA TRAVE);
set densCls 2500.0; #kg/m3; =25 kN/m3
set densTamp 1200.0;# kg/m3
set segmentiPil 10
set segmentiTrave 10
set segmentiTamp 10

#Modulo elastico cls (iniziale)#
set Ec,fess [expr 17610*$MPa];# rigidezza della sezione fessurata di elementi in c.a. (pilastri o elementi verticali); § 7.2.6 NTC: 35220 MPa/2 = 17610 MPa
set Ec [expr 35220.0*$MPa]; # modulo elastico per elementi in c.a.p.

#Sezione tamponature
set sezTampBase [expr 30*$cm]
set sezTampAlt [expr 1200*$cm]
set massaTamp [expr $sezTampBase*$sezTampAlt*$densTamp]; #kg/m

#Sezione pilastri#
set sezPBase [expr 60.0*$cm]; #Base
set sezPAlt [expr 60.0*$cm]; #Altezza
set massaPilastro [expr $sezPBase*$sezPAlt*$densCls]; #kg/m

#sezione trave#
set sezTBase [expr 45.0*$cm]; #Base SEZIONE RETTANGOLARE
set sezTAlt [expr 126.0*$cm]; #Altezza EQUIVALENTE
set massaTrave [expr $massaTrave + $sezTBase*$sezTAlt*$densCls];

#Materiali#
set attFittE [expr 1.0e8]; #N M
set attFittFy [expr 10.0*$kN];
set mtAttFitt 3; #Attrito
uniaxialMaterial ElasticPP $mtAttFitt $attFittE [expr $attFittFy/$attFittE]; #uniaxialMaterial ElasticPP $matTag $E $epsyP

set cls 1; #calcestruzzo
set fpc [expr 41.5*$MPa]
set fpcu [expr 29.05*$MPa];# il 30% di fpc
set epsc0 0.002725; #The initial slope for this model is (2*$fpc/$epsc0)
set epsU 0.01090; # ho messo 4 volte epsc0 come in Example 4 InputFile: 3-D RC frame subjected to earthquake base excitation
uniaxialMaterial Concrete01 $cls -$fpc -$espc0 -$fpcu -$epsU

#Calcolo proprietà elementi#
#Pilastro
set sezPArea [expr $sezPBase*$sezPAlt];
set sezPJ [expr $sezPBase*$sezPAlt*$sezPAlt*$sezPAlt/12.0];
#Trave
set sezTArea [expr $sezTBase*$sezTAlt];
set sezTJ [expr $sezTBase*pow($sezTAlt,3.0)/12.0]

#ASSEGNAZIONE MASSE#
#Tamponatura sx
set hSegTamp [expr $altezzaTamp/$segmentiTamp]; #altezza segmento tamponatura
for {set i 5} {$i<=$segmentiTamp} {incr i} {
node [expr $i+1] 0.0 [expr $i*$hSegTamp]
puts "Nodo [expr $i+1] 0.0 [expr $i*$hSegTamp]"
if {$i==0 || $i==$segmentiTamp} {
set massaNodo [expr $massaTamp*$hSegTamp/2.0]
} else {
set massaNodo [expr $massaTamp*$hSegTamp];
}
mass [expr $i+1] $massaNodo $massaNodo 0.0
}

#Tamponatura dx
for {set i 5} {$i<=$segmentiTamp} {incr i} {
node [expr $i+2+$segmentiTamp] $luceTr [expr $i*$hSegTamp]
puts "Nodo [expr $i+2+$segmentiTamp] $luceTr [expr $i*$hSegTamp]"
if {$i==5 || $i==$segmentiPil} {
set massaNodo [expr $massaTamp*$hSegTamp/2.0]
} else {
set massaNodo [expr $massaTamp*$hSegTamp]
}
mass [expr $i+2+$segmentiPil] $massaNodo $massaNodo 0.0
}

#Pilastro sx
set hSegPil [expr $altezzaPil/$segmentiPil]; #Altezza segmento pilastro
for {set i 0} {$i<=$segmentiPil} {incr i} {
node [expr $i+1] 0.0 [expr $i*$hSegPil]; # queste sono le coordinate nodali: 0.0 è la X l'altra [expr $i*$hSegPil] è la Y = 0.0.
puts "Nodo [expr $i+1] 0.0 [expr $i*$hSegPil]"; #il comando puts scrive la stringa;
if {$i==0 || $i==$segmentiPil} {
set massaNodo [expr $massaPilastro*$hSegPil/2.0]; # assegna la massa al nodo iniziale e finale
} else {
set massaNodo [expr $massaPilastro*$hSegPil]; # assegna la massa ai nodi intermedi
}
mass [expr $i+1] $massaNodo $massaNodo 0.0
}

#Pilastro dx
for {set i 0} {$i<=$segmentiPil} {incr i} {; #for{condizione iniziale} {test} {incremento} {corpo del ciclo}
node [expr $i+2+$segmentiPil] $luceTr [expr $i*$hSegPil]; #è questa riga che definisce il numero del nodo e la posizione X Y
puts "Nodo [expr $i+2+$segmentiPil] $luceTr [expr $i*$hSegPil]";
if {$i==0 || $i==$segmentiPil} {
set massaNodo [expr $massaPilastro*$hSegPil/2.0]
} else {
set massaNodo [expr $massaPilastro*$hSegPil]
}
mass [expr $i+2+$segmentiPil] $massaNodo $massaNodo 0.0
}

set lSegTrave [expr $luceTr/$segmentiTrave];
puts "Massa trave: $massaTrave kg/m"

#trave
for {set i 0} {$i<=$segmentiTrave} {incr i} {
node [expr $i+3+2*$segmentiPil] [expr $i*$lSegTrave] $altezzaPil;
puts "Nodo [expr $i+3+2*$segmentiPil] [expr $i*$lSegTrave] $altezzaPil";
if {$i==0 || $i==$segmentiTrave} {
set massaNodo [expr $massaTrave*$lSegTrave/2.0]
} else {
set massaNodo [expr $massaTrave*$lSegTrave]
}
mass [expr $i+3+2*$segmentiPil] $massaNodo $massaNodo 0.0

}

#Numerazione NODI modello# ok
set nTagTopPilSx [expr $segmentiPil+1]; #nodo 11
set nTagTopPilDx [expr 2+2*$segmentiPil]; #nodo 22
set nTagBasePilSx 1;
set nTagBasePilDx [expr $segmentiPil+2]; #nodo 12
set nTagTraveSx [expr 3+2*$segmentiPil]; #nodo 23
set nTagTraveDx [expr 3+2*$segmentiPil+$segmentiTrave]; #nodo 33

#Vincoli esterni#
# tag X Y fi,x
fix $nTagBasePilSx 1 1 1; #nodo 1 0 uncostrained, 1 constraints
fix $nTagBasePilDx 1 1 1; #nodo 12 0 uncostrained, 1 constraints



#Assegnazione elementi#
geomTransf Linear 1

#element elasticBeamColumn $eleTag $iNode $jNode $A $E $Iz $transfTag; for{condizione iniziale} {test} {incremento} {corpo del ciclo}
for {set i 1} {$i<=$segmentiPil} {incr i} {
element elasticBeamColumn $i [expr $nTagBasePilSx+($i-1)] [expr $nTagBasePilSx+$i] $sezPArea $Ec $sezPJ 1
puts "PILASTRO $i [expr $nTagBasePilSx+($i-1)] [expr $nTagBasePilSx+$i]";
}

for {set i 1} {$i<=$segmentiPil} {incr i} {
element elasticBeamColumn [expr $i+$segmentiPil] [expr $nTagBasePilDx+($i-1)] [expr $nTagBasePilDx+$i] $sezPArea $Ec $sezPJ 1
puts "PILASTRO [expr $i+$segmentiPil] [expr $nTagBasePilDx+($i-1)] [expr $nTagBasePilDx+$i]"
}

for {set i 1} {$i<=$segmentiTrave} {incr i} {
element elasticBeamColumn [expr $i+$segmentiPil*2] [expr $nTagTraveSx+($i-1)] [expr $nTagTraveSx+$i] $sezTArea $Ec $sezTJ 1
puts "TRAVE [expr $i+$segmentiPil*2] [expr $nTagTraveSx+($i-1)] [expr $nTagTraveSx+$i]"
}

#ELEMENTI# equalDOF $rNodeTag $cNodeTag $dof1 $dof2; element zeroLength $eleTag $iNode $jNode -mat $matTag1 $matTag2
set etPilSx 1; # ?
set etPilDx [expr $segmentiPil+1]; #elemento 11 ?
set etAFSx [expr $segmentiPil*2+$segmentiTrave+1]; #Attrito Sx; elemento 31
set etAFDx [expr $segmentiPil*2+$segmentiTrave+2]; #Attrito Dx; elemento 32
equalDOF $nTagTopPilSx $nTagTraveSx 1 2; #nodo 11-23; impone che la traslazione X e Y del nodo $nTagTraveSx sia uguale a $nTagTopPilSx
equalDOF $nTagTopPilDx $nTagTraveDx 1 2; #nodo 22-33
element zeroLength $etAFSx $nTagTopPilSx $nTagTraveSx -mat $mtAttFitt -dir 1; # nodo 11 - 23; elemento 31
element zeroLength $etAFDx $nTagTopPilDx $nTagTraveDx -mat $mtAttFitt -dir 1; # nodo 22 - 33; elemento 32

#ATTRITO#
#Coulomb's Law of Friction states that kinetic friction is independent of the sliding velocity
#element flatSliderBearing $eleTag $iNode $jNode $frnMdlTag $kInit -P $matTag -Mz $matTa
#frictionModel Coulomb tag mu

frictionModel Coulomb 0.10
frictionModel Coulomb $etAFDx 0.10
set Kint 1000;#per attrito coulombiano dovrebbe andar bene
element flatSliderBearing $etAFSx $nTagTopPilSx $nTagTraveSx $Kint -P $mtAttFitt
element flatSliderBearing $etAFDx $nTagTopPilDx $nTagTraveDx $Kint -P $mtAttFitt

#Carichi Verticali#
pattern Plain 1 Linear {
load $nTagTraveSx 0.0 [expr -$massaTrave*$luceTr*9.81/2.0] 0.0
load $nTagTraveDx 0.0 [expr -$massaTrave*$luceTr*9.81/2.0] 0.0
}

#Analisi#
system BandGeneral

numberer Plain
constraints Transformation
test NormDispIncr 1.0e-12 10
integrator LoadControl 0.1
algorithm Newton
analysis Static; # # per l'analisi dei carichi verticali bisogna fare l'analisi statica
integrator LoadControl 0.1
analyze 10

#Carico laterale#
loadConst -time 0.0
timeSeries Linear 2
pattern Plain 2 2 {
load $nTagTraveSx 182000*$kg 0.0 0.0

}

#Perform the lateral load analysis
analyze 1

#Output,create a Recorder object#
#recorder Node <-file $fileName><-time> <-node ($node1 $node2 ...)>-dof ($dof1 $dof2 ...) $respType
#recorder Element <-file $fileName> <-time> <-ele ($ele1 $ele2 ...)> <-eleRange $startEle $endEle> <-region $regTag> <-ele all> ($arg1 $arg2 ...)
recorder Node -file NodesBase.txt -time -node $nTagBasePilSx $nTagBasePilDx -dof 1 reaction
recorder Node -file NodesBaseN.txt -time -node $nTagBasePilSx $nTagBasePilDx -dof 2 reaction
recorder Node -file NodesTop.txt -time -node $nTagTopPilSx $nTagTopPilDx $nTagTraveSx $nTagTraveDx -dof 1 disp
recorder Element -file PilSx.txt -time -ele $etPilSx force
recorder Element -file PilDx.txt -time -ele $etPilDx force

#AUTOVALORI della struttura
............

Qualcuno potrebbe gentilmente aiutarmi...
Grazie mille a tutti
Post Reply