Dynamic analysis

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

Moderators: silvia, selimgunay, Moderators

Post Reply
joserod
Posts: 1
Joined: Tue Sep 19, 2023 1:28 pm

Dynamic analysis

Post by joserod » Tue Sep 19, 2023 1:57 pm

Good afternoon, OpenSees community!
I need your help. I am conducting research in which I need to perform a dynamic analysis on a steel structure with HSS profiles. I am implementing concentrated plasticity, so I am using zero-length elements and a Bilin material. The goal of my algorithm is to obtain its hysteresis behavior. I want to mention that I am using the Smartanalyze tool. However, when I run the algorithm, it throws the following error. I have carefully reviewed the code in search of any errors but haven't been able to detect it. I hope you can assist me. Thank you in advance.

Note: I am attaching my code.



#-------------------------------------------------------------------------
# Análisis dinamico
# Units: [ton,cm,s]
#-------------------------------------------------------------------------
wipe all;
model BasicBuilder -ndm 2 -ndf 3;

# Introducción de variables.
set E 2038.9019; # Módulo de elasticidad del acero (ton/cm2)
set Li 100.0; # Ancho de crujía 1
set Li2 600.0; #Ancho de crujia 2
set Li3 200.0; #Ancho de crujia 3
set hi 270.0; # Altura de entrepiso 1
set hi2 265.0; # Altura de entrepiso 2
set carpeta dinamico;# Se define el nombre de la carpeta donde se guardarán los resultados.0
set g 981.0;
set pi 3.1415926535898;
set wa1 0.002521381; # Carga azotea [ton/cm]
set wa2 0.004857114; # Carga azotea [ton/cm]
set wa3 0.004184981; # Carga azotea [ton/cm]
set we2 0.014192917; # Carga entrepiso [ton/cm]
set we3 0.01438225; # Carga entrepiso [ton/cm]

#Se definen las masas de cada nodo
set ma1 [expr {(($wa1*$Li)/$g)/2.0}]; # Masa nodo exterior azotea
set ma2 [expr {(($wa2*$Li2)/$g)/2.0}]; # Masa nodo exterior azotea
set ma3 [expr {(($wa3*$Li3)/$g)/2.0}]; # Masa nodo exterior azotea
set me2 [expr {(($we2*$Li2)/$g)/2.0}]; # Masa nodo exterior entrepiso
set me3 [expr {(($we3*$Li3)/$g)/2.0}]; # Masa nodo exterior entrepiso

# Se definen los nodos de la estructura.
node 21 $Li 0.0
node 22 [expr $Li+$Li2] 0.0
node 24 $Li $hi -mass $me2 0.0 0.0
node 25 [expr $Li+$Li2] $hi -mass [expr {$me2+$me3}] 0.0 0.0
node 26 [expr $Li+$Li2+$Li3] $hi -mass $me3 0.0 0.0
node 27 0.0 [expr $hi+$hi2] -mass $ma1 0.0 0.0
node 28 $Li [expr $hi+$hi2] -mass [expr {$ma1+$ma2}] 0.0 0.0
node 29 [expr $Li+$Li2] [expr $hi+$hi2] -mass [expr {$ma2+$ma3}] 0.0 0.0
node 30 [expr $Li+$Li2+$Li3] [expr {$hi+$hi2}] -mass $ma3 0.0 0.0

set masatotal [expr {2*($ma1+$ma2+$ma3+$me2+$me3)}]
puts "Masa total = $masatotal"

set Wtotal [expr {$masatotal*$g}]
puts "Peso total = $Wtotal {Ton}"

# Se simulan diafragmas rígidos por medio de nodos esclavos.
# NodTag NodTag Dof
equalDOF 24 25 1
equalDOF 24 26 1
equalDOF 27 28 1
equalDOF 27 29 1
equalDOF 27 30 1

##################################################################################
##################################################################################

# Plastic hinges

node 121 $Li 0.0
node 122 [expr $Li+$Li2] 0.0
node 124 $Li $hi
node 224 $Li $hi
node 324 $Li $hi
node 125 [expr $Li+$Li2] $hi
node 225 [expr $Li+$Li2] $hi
node 325 [expr $Li+$Li2] $hi
node 425 [expr $Li+$Li2] $hi
node 126 [expr $Li+$Li2+$Li3] $hi
node 127 0.0 [expr $hi+$hi2]
node 128 $Li [expr $hi+$hi2]
node 228 $Li [expr $hi+$hi2]
node 328 $Li [expr $hi+$hi2]
node 129 [expr $Li+$Li2] [expr $hi+$hi2]
node 229 [expr $Li+$Li2] [expr $hi+$hi2]
node 329 [expr $Li+$Li2] [expr $hi+$hi2]
node 130 [expr $Li+$Li2+$Li3] [expr {$hi+$hi2}]


# Se definen los apoyos de la estructura.
fix 21 1 1 1;
fix 22 1 1 1;

##################################################################################
##################################################################################

# Propiedades de la estructura

geomTransf Linear 1000

set ACOLPB 34.1248;
set ACOLPA 25.9008;
set ATRABEENTREPISO 61.92;
set ATRABEAZOTEA 58.80;
set Izpb 903
set Izpa 708
set Izta 9610.916
set Izte 11289.6146
set Iypb 903
set Iypa 708
set Iyta 2161.04
set Iyte 2456.6254
set Fy 2.790006

# Se definen los elementos columna del primer nivel.
#element elasticBeamColumn $tag $inicial $final $area $E $Iz $Iy $secTag $transfTag $massDens -cMass
element elasticBeamColumn 11 121 124 $ACOLPB $E $Izpb 1000
element elasticBeamColumn 12 122 125 $ACOLPB $E $Izpb 1000

# Se definen los elementos columna del segundo nivel.
element elasticBeamColumn 13 324 128 $ACOLPA $E $Izpa 1000
element elasticBeamColumn 14 325 129 $ACOLPA $E $Izpa 1000

# Se definen los elementos viga del marco.
element elasticBeamColumn 2 224 425 $ATRABEENTREPISO $E $Izte 1000
element elasticBeamColumn 3 225 126 $ATRABEENTREPISO $E $Izte 1000
element elasticBeamColumn 4 127 328 $ATRABEAZOTEA $E $Izta 1000
element elasticBeamColumn 5 228 329 $ATRABEAZOTEA $E $Izta 1000
element elasticBeamColumn 6 229 130 $ATRABEAZOTEA $E $Izta 1000

##################################################################################
##################################################################################

#Se definen las articulaciones plasticas
#uniaxialMaterial Bilin $matTag $K0 as_Plus as_Neg My_Plus My_Neg Lamda_S Lamda_C Lamda_A Lamda_K c_S c_C c_A c_K theta_p_Plus theta_p_Neg theta_pc_Plus theta_pc_Neg Res_Pos Res_Neg theta_u_Plus theta_u_Neg D_Pos D_Neg

uniaxialMaterial Bilin 51 132187241.1 0.000538714 0.000538714 1276.4 -1276.4 0.121 0.121 0.121 0.121 1 1 1 1 0.009 0.009 0.099 0.099 0 0 0.108009656 0.108009656 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 52 22589551.18 0.008340692 0.008340692 1276 -1276.4 0.105 0.105 0.105 0.105 1 1 1 1 0.008 0.008 0.092 0.092 0 0 0.100056504 0.100056504 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 53 84412406.59 0.002606388 0.002606388 1276 -1276.4 1.236 1.236 1.236 1.236 1 1 1 1 0.024 0.024 0.286 0.286 0 0 0.310015121 0.310015121 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 54 90524822.7 0.002651345 0.002651345 1276 -1276.4 1.029 1.029 1.029 1.029 1 1 1 1 0.022 0.022 0.244 0.244 0 0 0.2660141 0.2660141 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 55 83665443.1 0.002493706 0.002493706 1276 -1276.4 0.686 0.686 0.686 0.686 1 1 1 1 0.018 0.018 0.225 0.225 0 0 0.243015256 0.243015256 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 56 84139749.51 0.002479649 0.002479649 1276 -1276.4 0.658 0.658 0.658 0.658 1 1 1 1 0.018 0.018 0.217 0.217 0 0 0.23501517 0.23501517 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 57 22030826.5 0.000538714 0.000538714 1276 -1276.4 0.121 0.121 0.121 0.121 1 1 1 1 0.009 0.009 0.099 0.099 0 0 0.108057937 0.108057937 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 58 67767454.21 0.008340692 0.008340692 1276 -1276.4 0.105 0.105 0.105 0.105 1 1 1 1 0.008 0.008 0.092 0.092 0 0 0.100018835 0.100018835 1 1 0
################################################################################################################################################################################################################################################################################################
uniaxialMaterial Bilin 59 66093620.55 0.000538714 0.000538714 1276 -1276.4 0.121 0.121 0.121 0.121 1 1 1 1 0.009 0.009 0.099 0.099 0 0 0.108019312 0.108019312 1 1 0
################################################################################################################################################################################################################################################################################################

#Se definen los zeroLength columnas PB
#element zeroLength $eleTag $iNode $jNode -mat $matTag1 -dir $dir1

element zeroLength 1121 21 121 -mat 53 -dir 6
element zeroLength 1122 22 122 -mat 54 -dir 6
element zeroLength 1124 24 124 -mat 53 -dir 6
element zeroLength 1125 25 125 -mat 54 -dir 6

#Se definen los zeroLength columnas PA

element zeroLength 1324 24 324 -mat 55 -dir 6
element zeroLength 1325 25 325 -mat 56 -dir 6
element zeroLength 1128 28 128 -mat 55 -dir 6
element zeroLength 1129 29 129 -mat 56 -dir 6

#Se definen los zeroLength vigas entrepiso

element zeroLength 1224 24 224 -mat 52 -dir 6
element zeroLength 1425 25 425 -mat 52 -dir 6
element zeroLength 1225 25 225 -mat 58 -dir 6
element zeroLength 1126 26 126 -mat 58 -dir 6

#Se definen los zeroLength vigas azotea

element zeroLength 1127 27 127 -mat 51 -dir 6
element zeroLength 1328 28 328 -mat 51 -dir 6
element zeroLength 1228 28 228 -mat 57 -dir 6
element zeroLength 1329 29 329 -mat 57 -dir 6
element zeroLength 1229 29 229 -mat 59 -dir 6
element zeroLength 1130 30 130 -mat 59 -dir 6

################################################################################################################################################
################################################################################################################################################

equalDOF 21 121 1 2
equalDOF 22 122 1 2
equalDOF 24 124 1 2
equalDOF 24 224 1 2
equalDOF 24 324 1 2
equalDOF 25 125 1 2
equalDOF 25 225 1 2
equalDOF 25 325 1 2
equalDOF 25 425 1 2
equalDOF 26 126 1 2
equalDOF 27 127 1 2
equalDOF 28 128 1 2
equalDOF 28 228 1 2
equalDOF 28 328 1 2
equalDOF 29 129 1 2
equalDOF 29 229 1 2
equalDOF 29 329 1 2
equalDOF 30 130 1 2

################################################################################################################################################
################################################################################################################################################


# Se determinan los periodos de la estructura:
set Numerodemodos 2
# <$solver> $numEigenvalues
set eigenvalores [eigen -fullGenLapack $Numerodemodos];;
# Se crea el vector "T" el cual almacenara los periodos de la estructura.
set T {}
puts "Los periodos de la estructura son:";
for {set i 0} {$i <= [expr $Numerodemodos-1]} {incr i} {
# Al vector "T", hasta ahora vacío, se le agregan los periodos de la estructura por medio del comando lappend.
# El comando lindex llama el valor localizado en la posición $i del vector "eigenvalores".
set T [lappend T [expr 2*$pi/([lindex $eigenvalores $i]**0.5)]]
puts "T[expr $i+1]: [lindex $T $i]"
}

#wipeAnalysis
#cargas gravitaciones
pattern Plain 1 Linear {
load 24 0.0 -4.257875021 -425.7875021
load 25 0.0 -5.696100028 377.8466685
load 26 0.0 -1.438225007 47.94083356
load 27 0.0 -0.126069043 -2.101150714
load 28 0.0 -1.5832033 -143.612275
load 29 0.0 -1.875632343 131.7634895
load 30 0.0 -0.418498086 13.94993619
}

# Se definen los registros del análisis.
file mkdir $carpeta; # Se crea la carpeta donde se almacenarán los resultados.

# Desplazamiento del nodo de control.
recorder Node -file $carpeta/DespNododeControl.out -time -node 28 -dof 1 disp;

# Reacciones en la base.
recorder Node -file $carpeta/ReaccionBase.out -time -node 121 122 -dof 1 reaction;

# Distorsiones de entrepiso.
recorder Drift -file $carpeta/Drift.out -time -iNode 21 24 -jNode 24 28 -dof 1 -perpDirn 2;

# Se define la ventana que permitirá visualizar el modelo.
recorder display "Plastichinges" 10 10 600 600 -wipe
prp 0 0 50
vup 0 1 0
vpn 0 0 1
display 1 2 10

set ViewScale 5;

# Se definen los parámetros del análisis estático.
system UmfPack
numberer RCM
constraints Plain
test NormDispIncr 1.0e-5 10 0;
integrator LoadControl 0.1
algorithm Newton
analysis Static
analyze 10
loadConst -time 0.0
puts "Análisis estático finalizado."

# Se define el amortiguamiento de la estructura.
set freqi [expr {(([lindex $eigenvalores 0])**0.5)}]
set freqj [expr {(([lindex $eigenvalores 1])**0.5)}]
set damp 0.02;
puts "Valores de omega: $freqi y $freqj"
rayleigh 0. 0. 0. [expr {$damp*((2.0)/($freqi+$freqj))}]

#Se crean los patrones de aceleraciones
set Factor 1; # El registro de aceleraciones esta en cm/s^2
set dt 0.01; #Diferencial de tiempo del acelerograma
set npts 20000; #Número de puntos del acelerograma
set AccelDataFile "SP2023original.txt"; #Se especifica el registro a utilizar
set DirX 1; #Dirección en la que se aplicaran las aceleraciones

set accelSeries "Series -dt $dt -filePath $AccelDataFile -factor $Factor";
pattern UniformExcitation 2 $DirX -accel $accelSeries

# Se realiza el análisis dinámico.
source SmartAnalyze.tcl
system BandGeneral
numberer Plain
constraints Transformation
integrator Newmark 0.5 0.25
SmartAnalyzeTransient $dt $npts

puts "Análisis Dinámico finalizado."

Post Reply