Search found 1 match

by giovannib
Tue Feb 16, 2016 12:25 pm
Forum: Feature Requests/Future Directions
Topic: Flat Slider Bearing
Replies: 0
Views: 6832

Flat Slider Bearing

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