Documentos de Académico
Documentos de Profesional
Documentos de Cultura
net/publication/357575931
CITATIONS READS
3 4,494
2 authors:
All content following this page was uploaded by Luis Velasco on 05 January 2022.
Cada número de estas Series se edita con la aprobación técnica del Comité
Editorial del Instituto, basada en la evaluación de árbitros competentes en el tema,
adscritos a instituciones del país y/o el extranjero.
SERIE MANUALES
Abarca manuales útiles para resolver problemas asociados con la práctica profe-
sional o textos que describen y explican el estado del arte o el estado de la
práctica en ciertos temas. Incluye normas, manuales de diseño y de laboratorio,
reglamentos, comentarios a normas y bases de datos.
Serie
SD 61 / 2020
SD 61
Docencia ABRIL, 2020
Publicación arbitrada
Serie
DOCENCIA
Publicación arbitrada
Las Series del Instituto de Ingeniería describen los resultados de algunas de las
investigaciones más relevantes de esta institución. Con frecuencia son trabajos
in extenso de artículos que se publican en revistas especializadas, memorias de
congresos, etc.
Cada número de estas Series se edita con la aprobación técnica del Comité Editorial
del Instituto, basada en la evaluación de árbitros competentes en el tema, adscritos
a instituciones del país y/o el extranjero. INTRODUCCIÓN AL ANÁLISIS
SERIE DOCENCIA
Está dedicada a temas especializados de cursos universitarios para facilitar a
estudiantes y profesores una mejor comprensión de ciertos temas importantes de
los programas de estudio.
SERIE MANUALES
Abarca manuales útiles para resolver problemas asociados con la práctica
profesional o textos que describen y explican el estado del arte o el estado de la
práctica en ciertos temas. Incluye normas, manuales de diseño y de laboratorio,
reglamentos, comentarios a normas y bases de datos.
SD-61
ABRIL, 2020
Publicación arbitrada
ISBN 978-607-30-3085-4
INTRODUCCIÓN AL ANÁLISIS
ESTRUCTURAL CON OPENSEES
Serie Docencia 61
Abril 2020
1
Estudiante
2
Investigador Asociado
Introducción al análisis estructural con OpenSees
Serie Docencia 61
D.R.© 2020 Universidad Nacional Autónoma de México
ISBN 978-607-30-3085-4
Dedicatoria
A mi familia y amigos
Héctor Guerrero Bobadilla
v
Prefacio
Ciudad Universitaria, Cd Mx
Febrero 2020
Luis Ivan Velasco Enriquez y
Héctor Guerrero Bobadilla
vi
Agradecimientos
Resumen
Este libro presenta una introducción al análisis estructural usando el programa Opensees.
Este programa ha cobrado mucha popularidad en la comunidad internacional por su
eficiencia para realizar simulaciones sísmicas. El documento inicia con una introducción al
lenguaje TCL, que es el lenguaje usado por el programa Opensees. Después se realizan
algunos ejemplos de estructuras sujetas a cargas estáticas y dinámicas. Se incluyen también
ejemplos con comportamiento elástico e inelástico. Por último, el libro explica cómo modelar
estructuras equipadas con disipadores de energía sísmica.
Abstract
This book presents an introduction to structural analysis using OpenSees. This program has
taken great popularity in international community due to its efficiency for carrying out
seismic simulations. The document starts explaining simple commands in TCL language,
which is the programing language used by OpenSees. Afterwards, some examples of
structures are analyzed under static and dynamic loads. Examples that consider elastic and
inelastic behavior are included as well. Finally, the book explains modelling of structures
equipped with seismic energy dissipaters.
Índice
1. Introducción .............................................................................................................. 1
2. OpenSees y lenguaje TCL......................................................................................... 3
2.1 Orígenes de OpenSees ......................................................................................... 3
2.2 Ambiente de OpenSees ........................................................................................ 4
2.3 Interfaz de OpenSees ........................................................................................... 4
2.4 Descarga de OpenSees ......................................................................................... 5
2.5 Conocimientos básicos del lenguaje Tcl ............................................................... 6
2.6 Procedimientos .................................................................................................. 10
2.7 Introducción de comandos en OpenSees............................................................. 10
2.8 Visualización del modelo 1.08 ........................................................................... 11
2.9 Ayudas disponibles en línea ............................................................................... 12
2.10 Organización del documento .............................................................................. 13
3. Modelado y análisis estático de una armadura ...................................................... 15
3.1 Descripción del modelo ..................................................................................... 15
3.2 Descripción del código....................................................................................... 16
3.3 Comandos adicionales empleados ...................................................................... 19
4. Determinación de los modos y frecuencias de un marco de concreto ................... 23
4.1 Descripción del modelo ..................................................................................... 23
4.2 Descripción del código....................................................................................... 24
4.3 Comandos adicionales empleados ...................................................................... 26
5. Análisis dinámico lineal de una columna ............................................................... 31
5.1 Descripción del modelo ..................................................................................... 31
x
1. Introducción
Este libro se escribe con la finalidad de introducir a los nuevos usuarios de OpenSees
en el modelado y análisis de estructuras por medio de esta herramienta. Debido a que el
manual está dirigido a nuevos usuarios, el contenido aquí presentado resulta ser básico y se
recomienda consultar el manual en línea del programa para aclaraciones y discusiones más
profundas sobre las posibilidades y limitaciones de éste. Es importante indicar que algunos
de los ejemplos discutidos en este documento son procedentes de la página en línea.
Este documento inicia con una introducción a OpenSees y al lenguaje Tcl. Se presenta
el ambiente de OpenSees explicando sus características y ventajas. Se indica la manera de
evaluar expresiones matemáticas, de establecer variables y de definir estructuras de control
básicas en lenguaje Tcl. Esta sección permite al lector familiarizarse con el modelado en
OpenSees y brinda los conocimientos elementales para el manejo del lenguaje Tcl.
A pesar que el código de OpenSees fue definido originalmente en lenguaje C++, los
usuarios deben de combinar el uso de comandos preestablecidos, los cuales llaman
procedimientos para la definición y análisis del modelo, con instrucciones en TCL (del inglés
Tool Command Language) para el uso del programa. Por este motivo, es necesario contar
con un conocimiento fundamental del lenguaje TCL para un manejo básico de OpenSees.
Recorder
ModelBuilder. Es la parte del programa donde se definen los elementos para construir
el modelo, es decir, define nodos, restricciones, masas, materiales, secciones, elementos,
patrones de carga, etc. Una vez creado, el modelo se almacena en el objeto Domain y éste, a
su vez, lo provee a los objetos Analysis y Recorder.
Analysis. Determina el estado del modelo para cada instante de tiempo, t. Este se
compone por diferentes objetos que definen el tipo de análisis que realizará el programa.
Recorder. Este objeto crea y guarda el registro de los diferentes estados del modelo
durante su análisis.
CypressEditor (Shojaie, 2018), que es un editor de texto especialmente diseñado para ser
utilizado con OpenSees.
Una vez que el usuario se registra en el sitio, éste podrá descargar dos archivos
necesarios para la instalación y operación de OpenSees. El primero contiene el ejecutable del
6
programa y el segundo las librerías de Tcl. La descripción completa del proceso de descarga
junto con sus consideraciones se encuentra en la página en línea (OpenSees, 2010).
Almacenar líneas de texto. Las líneas de texto también pueden ser almacenadas en
variables. Para almacenar texto o valores numéricos se utiliza el comando set. Esta función
es especialmente útil ya que puede ser utilizada para almacenar, por ejemplo, rutas a
diferentes carpetas de la computadora, en las que se podrían almacenar el modelo a analizar
o la información procedente de los análisis.
Manejo de vectores. Para definir un vector se utiliza el comando list seguido por los
valores que componen al vector. Al igual que con el comando expr, para guardar la lista en
una variable, es necesario definir el vector entre corchetes.
Para obtener valores de un vector se utiliza el comando lindex seguido por el vector
de interés y la posición del valor deseado. Es importante indicar que los elementos del vector
se enumeran empezando desde el 0.
Ciclo for. Para definir un ciclo for es necesario definir la variable de control con el
valor inicial del ciclo. Posteriormente, se establece la condicionante del ciclo y su
9
incremento. Los comandos a realizar en cada ciclo deberán están contenidos entre llaves
dentro del ciclo for.
Es importante dejar un espacio de separación entre las llaves que delimitan los
elementos del ciclo for.
If. Para definir un condicional if, sólo es necesario definir la condicionante seguida
de los comandos a realizar. Ambos elementos, condicionante y comando, deberán estar
delimitados por llaves y con un espacio de separación entre estas.
# if {Condición} {Instrucciones}
2.6 Procedimientos
Otra de las grandes ventas de OpenSees es el uso de procedimientos, que son un
bloque de comandos agrupados para realizar una tarea específica. Como ejemplo, en las
siguientes líneas se presenta la definición de un procedimiento y su llamado. Se inicia con la
palabra reservada proc, seguida del nombre del procedimiento (en este caso “Periodo”) y los
parámetros que usa en su tarea (en este caso “m” y “k”). Después se define un bloque de
instrucciones que son ejecutadas cuando se llama a la última línea, es decir: “Periodo 1 1”.
proc Periodo {m k} {
if {$m <= 0} {
puts "La masa debe ser mayor que cero.";
} elseif {$k<=0} {
puts "La rigidez debe ser mayor que cero.";
} else {
set T [expr 2*3.1416*($m/$k)**0.5];
return $T;
}
}
# cerrar las llaves de los proc para indicar a Opensees el fin de éste.
Periodo 1 1
Para llamar un archivo de texto con los comandos que componen al modelo es
necesario utilizar el comando source seguido de la ruta que contiene el archivo de texto y el
nombre del archivo con su respectiva extensión. Es importante indicar que la extensión del
archivo de texto deberá ser .tcl, de otra manera el programa no lo reconocerá.
# source RutaCarpeta/NombreArchivo.tcl
11
(x,y)
u
n
prp 0 0 50;
vup 0 1 0;
vpn 0 0 1;
display 1 2 10;
set ViewScale 5;
La Figura 2.4 muestra una captura de pantalla del resultado que se obtiene al utilizar
el comando recorder display. Se recomienda probar diferentes valores en los sub-comandos
descritos para tener un mejor entendimiento de sus funciones.
Figura 2.4 Representación gráfica de un modelo generado por el comando recorder display
El modelo a analizar es una armadura con dos apoyos fijos y uno móvil. La sección
transversal de las barras de la cuerda inferior (en color gris) cuenta con un área de 10 cm2 ; el
área del resto de las barras (en color negro) es igual a 5 cm2. En la armadura actúan dos cargas
en el Nodo 7, una vertical de 20 kN y una horizontal de 10 kN.
4 6
2
8 9
4 10 5 11 6 7 3m
1 2 3 7
1 10 kN
3 5
20 kN
4m 4m 4m
Nótese (línea 6 del código) que al inicio de cada modelo se inserta el comando wipe
para borrar todo elemento que se encuentre almacenado en la memoria de OpenSees.
El comando fix, presente en las líneas 24 a 26, define los apoyos de la armadura. De
la Figura 3.1 se observa que ésta tiene tres apoyos, dos fijos y uno móvil. Al usar el comando
fix se debe de indicar la etiqueta del nodo que tendrá la restricción seguida por los grados de
libertad restringidos (X, Y y Giro). Este comando considera un valor igual a 0 como libre y
un valor igual a 1 como fijo. Como sólo se indicaron dos grados de libertad por nodo, se
brindan los estados (libre o restringido) únicamente de los desplazamientos horizontales y
verticales.
En la línea 31 del código se define el material del cual estarán conformadas las barras
de la armadura. Como se indicó antes, no se consideran no linealidades mecánicas en la
armadura; por lo que se utiliza el comando uniaxialMaterial Elastic, el cual sólo requiere de
dos parámetros: 1) la etiqueta con la cual se guarda el material, y 2) su módulo de elasticidad.
Para este caso se utiliza un módulo de elasticidad igual a 200 GN/m2 = 200 x 109 N/m2.
etiqueta del elemento que se está definiendo, sus nodos inicial y final, el área transversal de
la sección y la etiqueta del material (ya existente) que lo compone.
Factor
cFactor
Tiempo
Figura 3.2 Variación del factor de carga en función del tiempo considerada por el comando
timeSeries Linear, adaptada de (OpenSees, 2018)
Una vez definido el objeto timeSeries, se procede a definir las cargas actuantes sobre
la armadura, para esto se utiliza el comando pattern Plain. Para definir este comando se
1
Debido a su estructura tan sencilla es fácil pasarlo por alto, sin embargo, sin este objeto, el programa no será
capaz de realizar ningún análisis al modelo construido ya que desconocerá cómo aplicar las cargas.
18
requiere indicar al programa la etiqueta con la que se identifica al patrón de cargas seguido
de la etiqueta del objeto timeSeries previamente definido. Este comando requiere de manera
adicional el definir, entre llaves, las cargas asociadas a él. Las cargas pueden ser puntuales o
distribuidas. En este caso, al tener cargas puntuales actuando en el Nodo 7 de la armadura,
se emplea el comando load; mismo que requiere la etiqueta del nodo donde actúan las cargas,
seguido por los valores de las cargas actuantes.
En las líneas 71 y 72 se definen los archivos de salida. En este caso para el Nodo 7 y
el Elemento 3.
Al contar ahora con el modelo y las cargas actuantes sobre él, se pude proceder a
definir el análisis estático. En OpenSees, un análisis se conforma por diferentes elementos
que son definidos por el usuario. Estos elementos son: System, Numberer, Contraints, Test,
Integrator, Algorithm, Analysis y Analyze. A continuación, se ofrece una breve descripción
de la función de estos elementos. Para una descripción más detallada se recomienda consultar
la guía en línea del programa (OpenSees, 2018).
El objeto numberer enumera los grados de libertad del modelo. En este caso se empleó
el comando numberer RCM.
cual requiere la tolerancia que debe alcanzar el programa seguido por el número de
iteraciones máximas para alcanzar dicha tolerancia.
El objeto algorithm define los pasos a seguir para resolver las ecuaciones no lineales
durante el análisis. En este caso se empleó el comando algorithm Newton.
- wipe
- model BasicBuilder -ndm [dimensiones del modelo] -ndf [grados de libertad por
nodo]
Nodos:
Materiales:
Elemento:
Cargas:
Archivos de salida:
- recorder Node [-file Archivo -time -node $nodo -dof $DOFs $ tipoResp.]
- recorder Element [-file Archivo -time -ele $elemento $tipoRespuesta]
Análisis:
- system BandGeneral
- numberer RCM
- constraints Plain
- test NormDispIncr [Tolerancia] [Máximo número de iteraciones]
- integrator LoadControl [Factor incremento de carga]
- algorithm Newton
- analysis Static
- analyze [Pasos totales del análisis]
21
1 #-------------------------------------------------------------------------
2 # Modelado y análisis estático de una armadura.
3 # Unidades del modelo: [N,m]
4 #-------------------------------------------------------------------------
5
6 wipe;
7 model BasicBuilder -ndm 2 -ndf 2;
8
9 # Se establecen los nodos del modelo y sus respectivas restricciones.
10 # Solo se brindan dos coordenadas ya que el modelo es en 2D.(ID nodo, X, Y)
11 node 1 0.0 0.0
12 node 2 0.0 3.0
13 node 3 4.0 0.0
14 node 4 4.0 3.0
15 node 5 8.0 0.0
16 node 6 8.0 3.0
17 node 7 12.0 0.0
18
19 # Se definen los apoyos de la estructura, observe que existen dos apoyos
20 # diferentes, dos fijos en los nodos 1 y 3, y uno móvil en el nodo 5.
21 # 1 - Grado de libertad restringido.
22 # 0 - Grado de libertad no restringido.
23 # (Fx, Fy, M)
24 fix 1 1 1
25 fix 3 1 1
26 fix 5 0 1
27
28
29 # Se define el material de los elementos de la armadura.
30 set TagMaterial 1
31 uniaxialMaterial Elastic $TagMaterial 200e9
32
33
34 # Se definen los elementos de la armadura.
35 # Barras del tirante inferior.
36 # Área del elemento = 0.001 m2 = 10 cm2
37 element truss 1 1 3 0.001 $TagMaterial
38 element truss 2 3 5 0.001 $TagMaterial
39 element truss 3 5 7 0.001 $TagMaterial
40
41
42 # Resto de los elementos de la armadura.
43 # Área del elemento = 0.0005 m2 = 5 cm2
44 element truss 4 1 2 0.0005 $TagMaterial
45 element truss 5 3 4 0.0005 $TagMaterial
46 element truss 6 5 6 0.0005 $TagMaterial
47 element truss 7 7 6 0.0005 $TagMaterial
48 element truss 8 2 4 0.0005 $TagMaterial
49 element truss 9 4 6 0.0005 $TagMaterial
50 element truss 10 1 4 0.0005 $TagMaterial
51 element truss 11 3 6 0.0005 $TagMaterial
22
m
5 6
6
4m
EIc 2 4 EIc
2m
3 4
5
4m
2EIc 1 3 2EIc
1 2
8m
Figura 4.1 Esquema del marco analizado en el ejemplo, adaptada de (Chopra, 1995)
24
Los nodos del modelo y sus respectivas restricciones se definen en las líneas 25 a 34.
Obsérvese que en este caso los nodos 1 y 2 se encuentran empotrados, por lo que sus tres
grados de libertad se encuentran restringidos.
En este modelo se utilizan elementos elásticos para las trabes y columnas. Para crear
estos elementos es necesario primero definir su transformada geométrica, la cual establece la
relación entre el sistema de coordenadas del elemento con el sistema de coordenadas global
del modelo. En este caso se utilizó el comando geomTransf Linear1, misma que no considera
efectos P–Delta ni grandes deformaciones en el análisis. Este comando se encuentra en la
línea 46 del código. En la Figura 4.2 se muestra la forma en que difieren las coordenadas
locales de diferentes elementos con respecto al sistema de coordenadas globales.
Los elementos del modelo se definen en las líneas 51 a 58 por medio del comando
element elasticBeamColumn. Éste requiere, además de la etiqueta del elemento y los nodos
inicial y final, el área de la sección transversal del elemento, seguido del módulo de
1
Otro error es común olvidarse del objeto geomTransf, por su estructura simple. Pero de manera similar al
objeto timeSeries, éste cumple una función esencial en algunos modelos.
25
z z
y
x y
Coordenadas
x locales
z
y Y
X
Z
Coordenadas
globales
Es importante mencionar que no se tienen cargas actuantes sobre el modelo, pues para
realizar un análisis modal, sólo es necesario definir su geometría y sus masas actuantes.
Para realizar el análisis modal, se ejecuta el comando eigen. Este comando requiere
el número de eigenvalores a calcular (en este caso se solicitan dos). Los eigenvalores del
modelo (𝜔𝑖2 ) son guardados en un vector. Esto se realiza en la línea 63 del código. En la
línea 66 se crea un vector denominado “T”. En éste se almacenan los periodos de la estructura
de manera posterior.
2𝜋
𝑇𝑖 = (4.1)
√(𝜔𝑖2 )
26
Elementos:
Análisis:
1 #---------------------------------------------------------------------
2 # Modos de marco de cortante.
3 # Problema tomado del libro Dynamics of Structures de Anil K. Chopra.
4 # Unidades del modelo: [N,m]
5 #---------------------------------------------------------------------
6
7 wipe;
8 model BasicBuilder -ndm 2 -ndf 3; # Se indican 3 grados de libertad para
9 cada nodo.
10
11 # Se definen valores del modelo.
12 set m 4500.0; # Masa actuante en el modelo.
13 set h 4.0; # Altura de entrepiso.
14 set A 0.09; # Área transversal de la columna.
15 set Ic 0.000675; # Inercia de la sección de la columna.
16 set Iv 10e12; # Inercia de la sección de la viga. Se asigna un valor
17 # alto para considerarla rígida.
18 set E [expr 20e9]; # Módulo de elasticidad del material del elemento.
19 set NumModos 2; # Se define el número de modos de vibrar a obtener.
20 set pi 3.1416;
21 set carpeta Resultados; # Se define el nombre de la carpeta donde se
22 guardarán los resultados.
23
24 # Se definen los nodos de la estructura. (ID nodo, X, Y)
25 node 1 0.0 0.0
26 node 2 [expr 2*$h] 0.0
27 node 3 0.0 $h
28 node 4 [expr 2*$h] $h
29 node 5 0.0 [expr 2*$h]
30 node 6 [expr 2*$h] [expr 2*$h]
31
32 # Se definen los apoyos de la estructura.
33 fix 1 1 1 1; # Las columnas del marco se encuentran empotradas.
34 fix 2 1 1 1
35
36 # Se definen las masas actuantes en los niveles del marco.
37 # (ID nodo, Masa actuante en X, Masa actuante en Y, Masa actuante alrededor
38 del eje Z).
39 mass 3 [expr $m] 0.0 0.0
40 mass 4 [expr $m] 0.0 0.0
41 mass 5 [expr $m/2] 0.0 0.0
42 mass 6 [expr $m/2] 0.0 0.0
43
44 # Se define la transformación de coordenadas.
45 set geomLinear 1
46 geomTransf Linear $geomLinear
47
48 # Se definen los elementos del marco. Se consideran elementos con propiedades
49 mecánicas generales.
50 # Elementos columna.
51 element elasticBeamColumn 1 1 3 $A $E [expr 2*$Ic] $geomLinear
29
103 viewWindow -6 6 -6 6;
104 display -1 2 100;
105
106 recorder display "Forma del modo 2" 10 360 350 350 -wipe
107 prp 5 5 50;
108 vup 0 1 0;
109 vpn 0 0 1;
110 viewWindow -6 6 -6 6
111 display -2 2 100
31
P=m∙g
2 m
1 h
Los parámetros definidos entre las líneas 10 a 18 se utilizan para construir el modelo
más adelante. Debido a que en este ejemplo se crean diversos archivos de resultados, se
define una variable llamada “carpeta”, la cual contiene el nombre de la carpeta donde se
almacenarán los archivos de resultados.
De manera similar a los ejemplos anteriores, se comienza por definir los nodos del
modelo (líneas 21 y 22). En este caso sólo dos son necesarios. El Nodo 1 corresponde al
empotramiento y el Nodo 2 al extremo libre de la columna. Adicionalmente, la masa actuante
en la parte superior de la columna se define al momento de crear el nodo 2 por medio de la
adición del comando –mass. En la línea 25 se ejecuta el comando fix para empotrar el nodo
inferior de la columna.
Nótese que se utilizan tres modalidades del comando recorder, es decir: recorder
Node, recorder Element y recorder Drift. Los primeros dos, como su nombre lo indica,
generan el registro de datos relacionados con los nodos y los elementos especificados. En
este ejemplo se solicitaron los desplazamientos en el extremo libre de la columna y las
33
reacciones en la base. Para el caso del “recorder Element”, se indicó al programa que
registrara las fuerzas actuantes sobre el elemento columna. Por último, el registro drift guarda
la distorsión de entrepiso de la columna, siendo este parámetro igual a la diferencia de los
desplazamientos relativos existentes entre el Nodo 2 y el Nodo 1, dividido por la distancia
vertical que los separa. Nótese que existen más registros posibles que los cuatro aquí
mostrados, por lo que se recomienda recurrir a la manual del programa para consultar otros
registros de interés. 1
1
También es posible guardar los archivos en formato “.xml”. Los archivos “.xml” presentan líneas de texto con
información del contenido del registro.
34
Para finalizar el ejemplo se procede a realizar el análisis dinámico. Los comandos que
componen dicho análisis se encuentran entre las líneas 99 a 106. En la línea 105 se utiliza el
comando analysis Transient para indicar que el análisis a realizar es dinámico y en la 106 se
emplea el comando analyze seguido del número de puntos a considerar y el paso de tiempo.
0.04
0.03
Desplazamiento, m
0.02
0.01
0
-0.01
-0.02
-0.03
-0.04
0 20 40 60 80 100 120 140 160
Tiempo, s
- loadConst –time[Tiempo]
- pattern UniformExcitation [Etiqueta del patrón] [Dirección en la que se aplicará] –
accel {Series –dt [diferencial de tiempo] –filePath [Nombre del archivo]} –factor
[Factor de escala o de conversión].
Archivos de salida:
- Recorder Node –file [Nombre del archivo] –node [Etiqueta nodo existente] –dof
[Grados de libertad a considerar] [Tipo de registro solicitado]
- Recorder Element –file [Nombre del archivo] –ele [Etiqueta elemento existente]
[Tipo de registro solicitado]
- Recorder Drift –file [Nombre del archivo] –iNode [Nodos i] –jNode [Nodos j] –
dof [Grado de libertad de los desplazamientos relativos] –perpDirn [Dirección que
se utilizara para calcular separación entre nodos i y j]
Amortiguamiento:
36
Análisis:
- eigen –fullGenLapack
- system UmfPack
- numberer RCM
- constraints Plain
- test NormDispIncr [Tolerancia] [Máximo número de iteraciones]
- integrator Newmark [Gamma] [Beta]
- algorithm Newton
- analysis Transient
- analyze [Pasos totales del análisis] [paso de tiempo]
37
1 #---------------------------------------------------------------------
2 # Análisis dinámico lineal de una columna.
3 # Unidades del modelo [N,m,s]
4 #---------------------------------------------------------------------
5
6 wipe;
7 model BasicBuilder -ndm 2 -ndf 3;
8
9 # Se definen valores del modelo.
10 set h 12.0; # Altura de la columna.
11 set m 50000; # Masa actuante en la estructura.
12 set A 1.0; # Área transversal de la columna.
13 set I 0.0833; # Inercia de la sección de la columna.
14 set E 20e9; # Módulo de elasticidad del material de la columna.
15 set carpeta ResultadosEx3; # Se define el nombre de la carpeta donde se
16 guardarán los resultados.
17 set pi 3.1416
18 set g 9.81; # Aceleración de la gravedad.
19
20 # Se definen los nodos de la columna.
21 node 1 0.0 0.0
22 node 2 0.0 $h -mass $m 0.0 0.0
23
24 # Se define el empotramiento de la columna.
25 fix 1 1 1 1
26
27 # Se define la transformación de coordenadas.
28 set geomLinear 1
29 geomTransf Linear $geomLinear
30
31 # Se define el elemento columna.
32 element elasticBeamColumn 1 1 2 $A $E $I $geomLinear
33
34 # Se definen los registros del análisis.
35 file mkdir $carpeta; # Carpeta donde se almacenarán los resultados.
36
37 # Desplazamiento del nodo superior.
38 recorder Node -file $carpeta/DespTop.out -time -node 2 -dof 1 2 3 disp;
39 # Reacciones de la base.
40 recorder Node -file $carpeta/ReaccionBase.out -time -node 1 -dof 1 2
41 3 reaction;
42 # Distorsión de entrepiso.
43 recorder Drift -file $carpeta/Drift.out -time -iNode 1 -jNode 2 -dof 1 -
44 perpDirn 2 ;
45 # Fuerzas en la columna.
46 recorder Element -file $carpeta/SolicitacionesCol.out -time -ele 1 force;
47
48 # Se define las cargas actuantes sobre la estructura.
49 set timeLinear 1
50 timeSeries Linear $timeLinear
51 pattern Plain 1 $timeLinear {
38
El marco estará compuesto por perfiles en cajón para las columnas y perfiles “I” para
las vigas. En este ejemplo sí se consideran efectos no lineales. Las unidades del modelo son
t (toneladas fuerza) y cm.
El modelo a analizar consta de un marco de acero de tres niveles y dos crujías. Las
crujías tienen 7 m de ancho cada una. La altura de entrepiso del modelo es igual a 3.5 m. Para
las columnas del primer nivel se emplean perfiles en cajón cuadrados de 35 cm por lado y un
espesor de placa de 5/8”. Para las columnas del segundo nivel se utilizan perfiles en cajón de
las mismas dimensiones, pero con un espesor de placa de 1/2”. Las vigas del modelo están
conformadas por perfiles W16x57. Se considera una carga distribuida de 1.03 y 1.17 t/m para
el entrepiso y la azotea, respectivamente. En la Figura 6.1 se muestra el marco analizado en
este ejemplo.
42
41 43
5 6
31 32 33 350 cm
32
31 33
3 4
21 22 23 350 cm
22
21 23
1 2
11 12 13 350 cm
11 12 13
700 cm 700 cm
Entre las líneas 9 a 12 se definen parámetros que facilitan la creación del modelo y su
posterior modificación en caso de ser necesario.
Los nodos con sus respectivas restricciones se definen de la línea 16 a la 32. Para
simular comportamiento de diafragmas rígidos en los niveles, se utiliza el comando
equalDOF que impone desplazamientos iguales de un nodo (nodo maestro) a otro (nodo
esclavo). Para usar este comando se indica al programa la etiqueta del nodo maestro seguido
43
aquella del nodo esclavo y, por último, el grado de libertad sobre el cual los desplazamientos
de ambos nodos serán iguales. Esto se hace en las líneas 36 a 41.
Ep
Esfuerzo
E
Deformación
Figura 6.2 Curva esfuerzo – deformación de un material definido con el comando uniaxialMaterial
Steel02, adaptada de (OpenSees, 2018)
Una vez que los materiales han sido definidos, se procede a construir las secciones de
los elementos del modelo. Para hacer esto se utiliza el comando section Fiber el cual permite
crear las secciones de elementos por medio de fibras. Las fibras son elementos finitos,
44
t
1.82
35 41.66
1.09
35 18.08
OR 35 x 35 x t IPE 16
Para construir las secciones mostradas en la Figura 6.3 se utilizan los comandos patch
quad, patch circ y patch rect; los cuales crean regiones de elementos fibra. Es importante
indicar que estos comandos deben ser definidos entre el espacio delimitado por las llaves del
comando section Fiber para relacionar las figuras que forman con la sección que se está
construyendo. De manera general estos comandos requieren que se especifique el material
que compondrá a las fibras y el número de éstas. En lo particular, el comando patch quad
permite definir un área poligonal especificando las coordenadas de cada uno de sus vértices;
por otra parte, el comando patch circ construye segmentos circulares; y por último, el
comando patch rect define áreas rectangulares especificando únicamente las coordenadas de
dos vértices opuestos. Para conocer más a detalle el funcionamiento de dichos comandos se
recomienda recurrir al manual en línea del programa (OpenSees, 2018).
Una vez definidas las secciones, es posible proceder a la definición de los elementos
estructurales que integran el modelo. En este ejemplo se utilizó el comando element
forceBeamColumn; que requiere la etiqueta del elemento, las etiquetas de sus nodos inicial y
final, el número de subdivisiones que tendrá el elemento, la etiqueta de su sección transversal,
45
Por otra parte, para el análisis estático no lineal es necesario crear un patrón de cargas
laterales. Esto se hace entre las líneas 181 a la 185. Los valores de las cargas laterales se
pueden definir a partir de una distribución triangular, una distribución relativa a las masas, o
proporcional al modo fundamental de vibrar.
𝒘𝒍 𝒘𝒍𝟐
Etiqueta 𝑽= 𝑴=
𝟐 𝟏𝟐
nodo
[t] [t ∙ cm]
21 -14.42 -420.58
22 -28.84 0.0
Entre-pisos
23 -14.42 420.58
31 -14.42 -420.58
32 -28.84 0.0
33 -14.42 420.58
41 -16.38 -477.75
Azotea
42 -32.76 0.0
43 -16.37 477.75
46
El análisis estático no lineal puede ser realizado por medio de dos diferentes métodos,
el primero consiste en utilizar el comando integrator DisplacementControl, mientras que en
el segundo se emplea el comando integrator LoadControl. El primer comando busca crear
un desplazamiento determinado en un nodo de control definido por el usuario a través de la
aplicación sucesiva de las cargas laterales creadas con anterioridad. El segundo no considera
el desplazamiento lateral de la estructura y sólo aplica las cargas laterales un número N de
veces, siendo N un valor definido por el usuario. En este ejemplo se utilizó el comando
integrator DisplacementControl; indicando al programa que debe aplicar un desplazamiento
en el nodo 41 igual a 75 cm. En la Figura 6.4 se muestra la curva cortante basal –
desplazamiento obtenida del análisis. De las líneas 205 a 216 se muestran, en comentarios,
cuáles serían las líneas a ejecutar para un análisis controlado por carga (LoadControl).
40
35
30
Cortante basal, t
25
20
15
10
5
0
0 20 40 60 80
Desplazamiento nodo superior, cm
Materiales:
Secciones:
Elementos:
Análisis:
- system UmfPack
- numberer RCM
- constraints Plain
- test NormDispIncr [Tolerancia] [Máximo número de iteraciones]
- integrator LoadControl [Factor de incremento] [Iteraciones] [Mínimo factor de
incremento] [Máximo factor de incremento]
- integrator DisplacementControl [Node de control] [Grado de libertad del
desplazamiento controlado] [Incremento del desplazamiento] [Iteraciones]
- algorithm Newton
- analysis Static
- analyze [Veces que se aplicarán las cargas laterales]
48
1 #-------------------------------------------------------------------------
2 # Análisis pushover de un marco compuesto por perfiles metálicos.
3 # Unidades del modelo: [ton,cm,s]
4 #-------------------------------------------------------------------------
5 wipe;
6 model BasicBuilder -ndm 2 -ndf 3;
7
8 # Introducción de variables.
9 set E 2038.9; # Módulo de elasticidad del acero
10 set Li 700.0; # Ancho de crujía.
11 set hi 350.0; # Altura de entrepiso.
12 set carpeta ResultadosEx4; # Se define el nombre de la carpeta donde se
13 guardarán los resultados.
14
15 # Se definen los nodos de la estructura.
16 node 11 0.0 0.0
17 node 12 $Li 0.0
18 node 13 [expr 2.0*$Li] 0.0
19 node 21 0.0 $hi
20 node 22 $Li $hi
21 node 23 [expr 2*$Li] $hi
22 node 31 0.0 [expr 2*$hi]
23 node 32 $Li [expr 2*$hi]
24 node 33 [expr 2*$Li] [expr 2*$hi]
25 node 41 0.0 [expr 3*$hi]
26 node 42 $Li [expr 3*$hi]
27 node 43 [expr 2*$Li] [expr 3*$hi]
28
29 # Se definen los apoyos de la estructura.
30 fix 11 1 1 1
31 fix 12 1 1 1
32 fix 13 1 1 1
33
34 # Se simulan diafragmas rígidos por medio de nodos esclavos.
35 # NodTag NodTag Dof
36 equalDOF 21 22 1
37 equalDOF 22 23 1
38 equalDOF 31 32 1
39 equalDOF 32 33 1
40 equalDOF 41 42 1
41 equalDOF 42 43 1
42
43 # Se definen los materiales del modelo
44 # Comando Material Tag Fy E b R0 cR1 cR2 a1 a2 a3
45 a4
46 uniaxialMaterial Steel02 3600 2.530 $E 1e-9 20 0.925 0.15 0.0001 0.0001
47 0.0001 0.0001
48 uniaxialMaterial Steel02 5000 3.515 $E 1e-9 20 0.925 0.15 0.0001 0.0001
49 0.0001 0.0001
50
51
49
205 # set loadSteps 34; Debe ser entero para ingresarlo en el comando analyze.
206
207 # constraints Plain;
208 # numberer RCM;
209 # system UmfPack;
210 # test NormDispIncr 1.0e-3 500 0;
211 # algorithm Newton;
212 # integrator LoadControl 0.1 2 0.1 1;
213 # analysis Static
214 # analyze $loadSteps;
215
216 # puts "Análisis Pushover realizado"
53
El marco consta de tres niveles y tres crujías. La altura de entrepiso del modelo es
igual a 3.5 m. El ancho de las crujías es de 8m. Las columnas del marco tienen 12 varillas
del #8, estribos del #3 a cada 15 cm y recubrimiento de 6 cm. Las trabes tienen 4 varillas del
#8, estribos del #2 a cada 15 cm y un recubrimiento de 6 cm. Para la azotea se considera una
carga linealmente distribuida 𝜔𝑎 = 11 𝑘𝑁/𝑚 y para los entrepisos 𝜔𝑒 = 9 𝑘𝑁/𝑚. El
concreto tiene un 𝑓´𝑐 = 35 𝑀𝑃𝑎. El marco será sometido a la componente Este-Oeste del
movimiento sísmico del terremoto de Michoacán, México, del 19/sept/1985, registrado en la
estación SCT (Instituto de Ingeniería, 2018). En la Figura 7.1 se muestra el esquema del
marco analizado en este ejemplo.
31 32
30 33
312 322 332
3.5
311 321 331 341
m
21 22
20 23
212 222 232
3.5
211 221 231 241
m
11 12
10 13
112 122 132
3.5
111 121 131 141
m
0 1 2 3
8m 8m 8m
Entre las líneas 10 a 23 se definen parámetros que facilitarán la creación del modelo.
Se aclara que este modelo permite definir el número de crujías y niveles que tendrá marco,
además de sus respectivas dimensiones. A pesar de que se permite definir las dimensiones de
las columnas y trabes, es necesario ingresar datos adicionales para la correcta definición de
los elementos.
conexiones viga – columna. De la línea 30 a 50 se crean los nodos que compondrán el marco.
Las etiquetas de los nodos del marco, con excepción de los de la base, se nombran de acuerdo
a la siguiente nomenclatura $i$j, donde $i y $j son el nivel y la crujía donde se ubica el nodo,
respectivamente.
Para crear las secciones de concreto de este ejemplo es necesario definir primero los
materiales que las compondrán. El acero de las varillas longitudinales se define entre las
líneas 72 a 75. Nótese que el comando unialxialMaterial MinMax establece las
deformaciones límite que una fibra de acero puede soportar antes de fallar. Al ser necesario
considerar el incremento de resistencia del concreto debido al confinamiento brindado por
los estribos, tres tipos distintos de concretos deben ser definidos: 1) el concreto sin confinar
exterior a los estribos, 2) el concreto confinado de las columnas, y 3) el concreto confinado
de las vigas. Las propiedades mecánicas del concreto confinado se pueden determinar
utilizando el modelo de Mander (Mander, et al., 1988). Los tres diferentes tipos de concreto
se crean utilizando el comando uniaxialMaterial Concrete02. Los cuatro materiales
mencionados anteriormente se definen entre las líneas 72 a 97. La Figura 7.2 muestra
esquemáticamente el comportamiento mecánico de un material Concrete02.
56
Las secciones de los elementos de concreto se definen entre las líneas 100 a 218 por
medio del comando section fiberSec. Dichas secciones se crean definiendo el núcleo de
concreto con el material de concreto confinado, posteriormente, utilizando el material del
concreto sin confinar, se define el recubrimiento de la sección, ambos elementos de la sección
se construyen utilizando el comando patch rect. Por último, se empela el comando fiber para
definir cada una de las varillas que conforman el refuerzo de longitudinal de las secciones.
La Figura 7.3 muestra un esquema de las secciones utilizadas en este ejemplo.
30 30
30 20
COLUMNAS TRABES
E#3@15 cm, E#2@15 cm,
12#8 4#8
Rec. 6 cm Rec. 6 cm
Figura 7.3 Esquema de las secciones transversales de los elementos (dimensiones en cm)
57
Los elementos que conforman al modelo se definen de la línea 226 a la 241. Las
etiquetas de los elementos se definen de la siguiente manera $i$j$e, donde $i y $j son el nivel
y la crujía donde se encuentra el elemento, respectivamente, y $e es el valor para diferenciar
columnas de vigas. Se usa 1 para columnas y 2 para vigas.
De la línea 244 a 255 se genera la ventana con la representación gráfica del modelo y
se determina el periodo de la estructura. En este caso se obtuvo un periodo fundamental 𝑇 =
0.86 𝑠. Este valor podría considerarse alto para un marco de tres niveles, pero se decidió
mantener con la finalidad de obtener demandas significativas en la estructura durante el
análisis dinámico.
Las cargas gravitacionales y los archivos de resultados que se generan de los análisis
se definen de la línea 258 a 285. El análisis estático por cargas gravitacionales se define y se
realiza entre las líneas 299 a 306, al finalizar éste análisis se utiliza el comando loadConst
para establecer las cargas existentes como constantes en los análisis posteriores.
0.30
0.20
Desplazamiento, m
0.10
0.00
-0.10
-0.20
-0.30
0 20 40 60 80 100 120 140 160 180 200 220
Tiempo, s
Materiales:
59
Secciones:
Elementos:
1 # ------------------------------------------------------------------------
2 # Análisis dinámico no lineal de un marco de concreto.
3 # Unidades del modelo: [N,m,s]
4 # ------------------------------------------------------------------------
5
6 wipe;
7 model BasicBuilder -ndm 2 -ndf 3;
8
9 # Se definen valores para crear el modelo.
10 set Nniveles 3;
11 set Ncrujias 3;
12 set L 8.0; # Ancho de crujía
13 set H 3.5; # Altura de entrepiso.
14 set wa 11000; # Carga azotea [N/m]
15 set we 9000; # Carga entrepiso [N/m]
16 set hcol 0.30; # Altura columna.
17 set bcol 0.30; # Base columna.
18 set hviga 0.30; # Altura viga.
19 set bviga 0.20; # Base viga.
20 set carpeta ResultadosEx5; # Se define el nombre de la carpeta donde se
21 guardarán los resultados.
22 set g 9.81; # Aceleración de la gravedad.
23 set pi 3.1416;
24
25 # Se definen las masas de cada nodo.
26 set ma [expr $wa*$L/$g/2.0]; # Masa nodo exterior azotea.
27 set me [expr $we*$L/$g/2.0]; # Masa nodo exterior entrepiso.
28
29 # Se definen los nodos de la estructura.
30 for {set i 0} {$i <= $Nniveles} {incr i} {
31 for {set j 0} {$j <= $Ncrujias} {incr j} {
32 if {$i == 0} {
33 node $j [expr $j*$L] 0.0;
34 } else {
35 if {$i == $Nniveles} {
36 if {$j == 0 || $j == $Ncrujias} {
37 node $i$j [expr $j*$L] [expr $i*$H] -mass $ma 0.0 0.0
38 } else {
39 node $i$j [expr $j*$L] [expr $i*$H] -mass [expr 2.0*$ma] 0.0 0.0
40 }
41 } else {
42 if {$j == 0 || $j == $Ncrujias} {
43 node $i$j [expr $j*$L] [expr $i*$H] -mass $me 0.0 0.0
44 } else {
45 node $i$j [expr $j*$L] [expr $i*$H] -mass [expr 2.0*$me] 0.0 0.0
46 }
47 }; # Segundo else.
48 }; # Primer else.
49 }; # Segundo for.
50 }; # Primer for.
51
61
3 4
3
1 2 h
1 2
Entre las líneas 12 a 26 se definen parámetros que facilitan la creación del modelo y
su posterior modificación en caso de ser necesario.
𝑚
𝑇 = 2𝜋√ 𝐾 (8.1)
69
donde:
𝑇 es el periodo de la estructura.
𝑚 es la masa actuante.
𝐾 es la rigidez lateral.
12𝐸𝐼𝑐 𝐸𝐼𝑐
𝐾= ∑ 3
= 24 3 (8.2)
ℎ ℎ
𝑐𝑜𝑙𝑢𝑚𝑛𝑎𝑠
donde:
𝐸 es el módulo de elasticidad.
𝐼𝑐 es el momento de inercia de la columna.
ℎ es la altura del marco.
3𝐸𝐼𝑐 𝐸𝐼𝑐
𝐾= ∑ 3
=6 3 (8.3)
ℎ ℎ
𝑐𝑜𝑙𝑢𝑚𝑛𝑎𝑠
Claramente, entre estos dos extremos existen una infinidad de valores de rigidez para
la viga del marco. Para esos casos, la rigidez lateral del marco se calcula de la siguiente
forma:
70
24𝐸𝐼𝑐 12𝜌 + 1
𝐾= (8.4)
ℎ3 12𝜌 + 4
𝐼𝑏
𝜌= (8.5)
4𝐼𝑐
24
18
K/( EIc /h 3 )
12
6
0
0.001 0.01 0.1 1 10 100
ρ
Figura 8.2 Rigidez lateral del marco en función de 𝜌, adaptada de (Chopra, 1995)
100
Fuerza axial, kN
50
-50
-100
-20 -10 0 10 20
Desplazamiento, mm
De las líneas 73 a 81 se definen los archivos de resultados que se desean generar del
análisis. Posteriormente, de la línea 84 a 88, se define el amortiguamiento de la estructura,
indicando al programa que sólo tome en cuenta la matriz de masa del modelo para determinar
el amortiguamiento de Rayleigh.
El ejemplo se finaliza realizando el análisis dinámico. Esto ocurre entre las líneas 91
a 117. Para observar los efectos producidos por el amortiguador viscoso en la respuesta
dinámica del marco, se realizaron dos análisis, uno del marco sin reforzar y otro del marco
reforzado con el amortiguador viscoso. La Figura 8.4 muestra la comparación del registro de
desplazamientos del Nodo 4 de los dos análisis realizados. Obsérvese que la adición del
amortiguador viscoso mejora el desempeño estructural del marco, lográndose una reducción
en la respuesta máxima de más del 60% en comparación con el caso sin refuerzo.
72
80
Desplazamiento laterla, mm
Sin refuerzo
60
Con refuerzo
40
20
0
-20
-40
-60
-80
0 20 40 60 80 100
Tiempo, s
Figura 8.4 Comparación de desplazamientos laterales: marco sin y reforzado con amortiguador
viscoso.
Elementos:
1 #--------------------------------------------------------------------------
2 # Análisis dinámico de un marco reforzado con amortiguador viscoso.
3 #
4 # Problema creado por: Sarven Akcelyan & Dimitrios G. Lignos
5 # Unidades del modelo [KN,mm,s]
6 #--------------------------------------------------------------------------
7
8 wipe;
9 model BasicBuilder -ndm 2 -ndf 3;
10
11 # Se crea la carpeta que almacenará los resultados.
12 set Output ResultadosEx6;
13 file mkdir $Output;
14
15 # Parámetros del marco.
16 set L 5000.; # Ancho de crujía.
17 set h 3000.; # Altura del marco.
18 set W 1000.; # Peso actuante, para definir la masa.
19 set g 9810.; # Gravedad en mm/s2.
20 set m [expr $W/$g]; # Se define la masa actuante.
21 set Tn 0.7; # Periodo de la estructura.
22 set pi [expr acos(-1.0)];
23 # Propiedades del amortiguador
24 set Kd 25.; # Rigidez axial.
25 set Cd 20.7452; # Coeficiente de amortiguamiento.
26 set ad 0.35; # Exponente a
27
28
29 # Se definen los nodos del modelo.
30 node 1 0. 0. ;
31 node 2 $L 0. ;
32 node 3 0. $h ;
33 node 4 $L $h ;
34
35 # Se definen las condiciones de apoyo.
36 fix 1 1 1 1;
37 fix 2 1 1 1;
38
39 # Se restringen los nodos de la viga
40 equalDOF 3 4 1 ; # GDL .
41
42 # Se asignan las masas.
43 mass 3 [expr 0.5*$m] 0. 0. ;
44 mass 4 [expr 0.5*$m] 0. 0. ;
45
46 # Se definen las propiedades de las columnas y la viga.
47 set K [expr pow(2*$pi/$Tn,2)*$m];
48 set E 200.0;
49 set Ic [expr $K*pow($h,3)/(24*$E)]; # (K=24EIc/h^3)
50 set Ib [expr 1e12*$Ic];
51 set A [expr 1e12];
74
Como se puede apreciar, los CRPs cuentan con dos diferentes secciones transversales.
En los extremos se encuentran las secciones elásticas que actúan como conexiones. El área
transversal de estas secciones es mayor que el área central del núcleo para garantizar que
siempre trabajen en su intervalo elástico. La relación entre el área del núcleo y el área de las
conexiones es de 1 a 4 para este ejemplo. Esto significa que las conexiones del CPR tendrán
78
un área transversal cuatro veces más grande que el área de su núcleo. De la misma figura se
observa que, en este ejemplo, la longitud del núcleo será igual a un tercio de la longitud total
del disipador. Para definir las conexiones del CRP con el marco se definen dos nodos
adicionales; los cuales se considerarán articulados.
Mortero
Material
B’ antiadherente
L/3 L/3 L/3 Corte B – B´
3 4
3
24
43
23
1 2 h
22 42
21 41
1 2
Entre las líneas 12 a 28 se definen los valores que facilitarán la creación del modelo
y su posterior modificación en caso de ser necesario. Entre estos valores también se define la
relación de áreas y longitudes del CRP, además del área transversal de su núcleo, en cm2.
En este ejemplo es necesario definir el material que compone al núcleo del disipador.
Como se mencionó antes, el esfuerzo de fluencia del acero es 𝑓𝑦 = 250 𝑀𝑃𝑎. Entre las líneas
55 a 58 se crea el material del disipador con los comandos uniaxialMaterial Steel02 y
uniaxialMaterial MinMax. Entre las líneas 61 a 65 se definen las propiedades de las columnas
y la viga del marco. Para modelar el CRP es necesario construir las secciones transversales
de las conexiones y del núcleo. Esto ocurre entre las líneas 68 a 87. Los elementos que
conforman el modelo se crean entre las líneas 96 a 106. Obsérvese que se utilizan elementos
elasticBeamColumn para las columnas y la viga, mientras que para crear el núcleo y las
conexiones del CRP se utilizan elementos forceBeamColumn. Este último tipo de elemento
considera comportamiento inelástico.
80
Una vez que el modelo ha sido construido se procede a definir los diferentes archivos
de resultados que se generarán durante el análisis. Esto ocurre entre las líneas 111 y 124.
80
Sin refuerzo
Desplazamiento lateral, mm
60
Con refuerzo
40
20
0
-20
-40
-60
-80
0 20 40 60 80 100
Tiempo, s
Figura 9.3 Comparación de desplazamientos laterales: marco sin refuerzo y reforzado con CRP
40
30
20
Fuerza axial, kN
10
0
-10
-20
-30
-40
-10 -5 0 5 10
Desplazamiento, mm
1 #--------------------------------------------------------------------------
2 # Análisis dinámico de un marco reforzado con contraventeo restringido al pandeo.
3 #
4 # Ejemplo basado en el problema creado por Sarven Akcelyan & Dimitrios G. Lignos.
5 # Unidades del modelo [KN,mm,s]
6 #--------------------------------------------------------------------------
7
8 wipe;
9 model BasicBuilder -ndm 2 -ndf 3;
10
11 # Se crea la carpeta que almacenará los resultados.
12 set Output ResultadosEx7;
13 file mkdir $Output;
14
15 # Parámetros del marco.
16 set L 5000.; # Ancho de crujía.
17 set h 3000.; # Altura del marco.
18 set W 1000.; # Peso actuante, para definir la masa.
19 set g 9810.; # Gravedad en mm/s2.
20 set m [expr $W/$g]; # Se define la masa actuante.
21 set Tn 0.7; # Periodo de la estructura.
22 set pi [expr acos(-1.0)];
23
24 # Propiedades del contraventeo restringido.
25 set Lratio [expr 1.0/3.0]; # Relación longitud núcleo / longitud total del
26 disipador < 1.0
27 set Aratio 0.25; # Relación área del núcleo / área conexiones
28 set fa [expr 1.0]; # Área del núcleo del disipador, en cm2.
29
30 # Se definen los nodos del modelo.
31 node 1 0. 0. ;
32 node 2 $L 0. ;
33 node 3 0. $h -mass [expr 0.5*$m] 0. 0. ;
34 node 4 $L $h -mass [expr 0.5*$m] 0. 0. ;
35
36 # Se definen las condiciones de apoyo.
37 fix 1 1 1 1;
38 fix 2 1 1 1;
39
40 # Se definen los nodos del contraventeo restringido.
41 node 21 0.0 0.0
42 node 22 [expr $L*(1-$Lratio)/2.0] [expr $h*(1-$Lratio)/2.0]
43 node 23 [expr $L*(1+$Lratio)/2.0] [expr $h*(1+$Lratio)/2.0]
44 node 24 $L $h
45
46 # Se crea una articulación en los nodos que conectan con el marco.
47 equalDOF 1 21 1 2;
48 equalDOF 4 24 1 2;
49
50 # Se define el material del disipador.
51 set steelTagBRBs 1000
83
3 4
3
23
42
22
1 2 h
21 41
1 2
tiene un periodo fundamental igual a 1.5 s. Basándose en estos datos se determina el momento
de inercia de las columnas.
Entre las líneas 12 a 28 se definen los valores que facilitarán la creación del modelo
y su posterior modificación en caso de ser necesario. Entre estos valores también se define el
área transversal del contraventeo, su longitud y su flecha inicial.
Adicionalmente, se crean dos nodos en las mismas coordenadas que los nodos 1 y 4.
Los desplazamientos laterales y verticales de los nodos creados (41 y 43) son vinculados para
modelar una conexión articulada entre el marco y el contraventeo (líneas 46 y 47).
89
3 0.008Lc
22
100
β α
Lc
100
Sección transversal
del CPR
Figura 10.2 Posición del Nodo 22 considerando pandeo inicial del contraventeo (cotas de la sección
en mm)
Entre las líneas 60 a 64 se definen las propiedades de las columnas y la viga del marco.
Por simplicidad en la modelación de este ejemplo, se decidió considerar un contraventeo con
una sección transversal en cajón cuadrada uniforme a todo lo largo del elemento. La creación
de dicha sección transversal se realiza entre las líneas 70 a 76. Los elementos que conforman
el modelo se crean entre las líneas 89 a 97. Obsérvese que se utilizan elementos
elasticBeamColumn para las columnas y la viga, mientras que para crear el contraventeo se
utilizan elementos forceBeamColumn. Siguiendo las recomendaciones de la referencia [12],
se utiliza una transformada geométrica corrotacional para el contraventeo y se le indica al
programa que considere ocho subdivisiones en el elemento.
Una vez que el modelo ha sido construido se definen los diferentes archivos de
resultados que se generarán durante el análisis, esto ocurre entre las líneas 102 y 115.
representación gráfica del modelo (líneas 136 a 140) y se realiza el análisis dinámico (líneas
143 a 151).
400
Sin refuerzo
300
Desplazamiento laterla, mm
Con refuerzo
200
100
0
-100
-200
-300
-400
0 20 40 60 80 100
Tiempo, s
Figura 10.3 Comparación de desplazamientos laterales del marco con y sin refuerzo con contraventeo
convencional.
500
400
Fuerza axial, kN
300
200
100
0
-100
-100 -50 0 50 100
Desplazamiento, mm
1 #--------------------------------------------------------------------------
2 # Análisis dinámico de un marco reforzado con un contraventeo convencional.
3 #
4 # Ejemplo basado en el problema creado por Sarven Akcelyan & Dimitrios G. Lignos.
5 # Unidades del modelo [KN,mm,s]
6 #--------------------------------------------------------------------------
7
8 wipe;
9 model BasicBuilder -ndm 2 -ndf 3;
10
11 # Se crea la carpeta que almacenará los resultados.
12 set Output ResultadosEx8;
13 file mkdir $Output;
14
15 # Parámetros del marco.
16 set L 5000.; # Ancho de crujía.
17 set h 3000.; # Altura del marco.
18 set W 10000.; # Peso actuante, para definir la masa.
19 set g 9810.; # Gravedad en mm/s2.
20 set m [expr $W/$g]; # Se define la masa actuante.
21 set Tn 2.0; # Periodo de la estructura.
22 set pi [expr acos(-1.0)];
23
24 # Propiedades del contraventeo convencional.
25 set Lc [expr ($L**2+$h**2)**0.5]; # Longitud contraventeo convencional.
26 set alfa [expr atan($h/$L)]; # Ángulo de la diagonal.
27 set beta [expr $pi/2.0 - $alfa]; # Ángulo complementario.
28 set pandeo [expr 0.008*$Lc]; # Pandeo inicial.
29
30 # Se definen los nodos del modelo.
31 node 1 0. 0. ;
32 node 2 $L 0. ;
33 node 3 0. $h -mass [expr 0.5*$m] 0.01 0. ;
34 node 4 $L $h -mass [expr 0.5*$m] 0.01 0. ;
35
36 # Se definen las condiciones de apoyo.
37 fix 1 1 1 1;
38 fix 2 1 1 1;
39
40 # Se definen los nodos del contraventeo convencional.
41 node 21 0.0 0.0
42 node 22 [expr $L/2.0-$pandeo*cos($beta)] [expr $h/2.0+$pandeo*sin($beta)]
43 node 23 $L $h
44
45 # Se crea una articulación en los nodos que conectan con el marco.
46 equalDOF 1 21 1 2;
47 equalDOF 4 23 1 2;
48
49 # Se define el material del contraventeo.
50 set steelTag 1000
51 set fy 0.345;
93
52 set Es 200.0;
53 uniaxialMaterial Steel02 [expr $steelTag+1] $fy $Es 0.003 25.0 0.925 0.15
54 0.05 1.0 0.05 1.0 0.0;
55 uniaxialMaterial MinMax [expr $steelTag+2] [expr $steelTag+1] -min -
56 0.05 -max 0.05
57 uniaxialMaterial Fatigue $steelTag [expr $steelTag+2]
58
59 # Se definen las propiedades de las columnas y la viga.
60 set K [expr pow(2*$pi/$Tn,2)*$m];
61 set E 200.0;
62 set Ic [expr $K*pow($h,3)/(24*$E)]; # (K=24EIc/h^3)
63 set Ib [expr 1.0e6*$Ic];
64 set A [expr 1.0e6];
65
66 # Se crean las secciones que conforman el contraventeo.
67 set Contraventeo 1001;
68
69 # Se define la sección del núcleo del contraventeo.
70 set nFibers 6;
71 section fiberSec $Contraventeo {
72 patch rect $steelTag 10 4 -50.00 -50.00 -47.00 50.00
73 patch rect $steelTag 4 10 -47.00 47.00 47.00 50.00
74 patch rect $steelTag 10 4 -50.00 47.00 50.00 50.00
75 patch rect $steelTag 4 10 -47.00 -50.00 47.00 -47.00
76 }
77
78 # Se crea la transformada geométrica.
79 set TransfLin 1;
80 set TransfCor 2;
81
82 geomTransf Linear $TransfLin;
83 geomTransf Corotational $TransfCor;
84
85 # Se definen los elementos.
86 set nPC 8;
87
88 # Columna.
89 element elasticBeamColumn 1 1 3 $A $E $Ic $TransfLin;
90 element elasticBeamColumn 2 2 4 $A $E $Ic $TransfLin;
91
92 # Viga.
93 element elasticBeamColumn 3 3 4 $A $E $Ib $TransfLin;
94
95 # Contraventeo convencional.
96 element forceBeamColumn 41 21 22 $nPC $Contraventeo $TransfCor;
97 element forceBeamColumn 42 22 23 $nPC $Contraventeo $TransfCor;
98
99 puts "Modelo construido"
100
101 # Se definen los registros del marco.
102 recorder Node -file $Output/Disp.out -time -node 4 -dof 1 disp;
94
El primer paso es indicar al programa las direcciones de las carpetas que contienen el
modelo a analizar y dónde los datos obtenidos serán almacenados. Esto ocurre entre las líneas
6 a 11.
96
Para realizar el análisis dinámico incremental se utilizan dos ciclos for para llamar a
cada uno de los datos de las listas antes mencionadas y así crear las carpetas donde se
guardarán los resultados y realizar los análisis correspondientes. La Figura 11.1 se muestra
el diagrama de flujo del ciclo utilizado en este ejemplo para realizar el análisis dinámico
incremental.
97
i=0
No Si Definir registro i
i <= N registros
Cont = 1
No Si
Cont = 1
No Si
i=i+1 j <= N intensidades
Definir intensidad
y análisis j
Realizar análisis
Terminar
ciclo
Almacenar datos
No Si
j=j+1 ¿Hay fallo? Cont = 0
Figura 11.1 Diagrama de flujo del código utilizado para realizar el análisis dinámico incremental
98
1 #--------------------------------------------------------------------------
2 # Análisis Dinámico Incremental (IDA).
3 # Unidades del modelo: Sin unidades.
4 #--------------------------------------------------------------------------
5
6 set dir "IDA"; # En esta variables se indica la dirección
7 del modelo a analizar. Utilizar "/" para
8 indicar la ruta.
9 set Resultados "Resultados"; # En esta variable se indica la dirección
10 donde se guardaran los resultados.
11 set Carpetas [list "SCT"]; # Lista con los nombres de las carpetas donde
12 se almacenarán los resultados de los
13 análisis, una carpeta por registro sísmico.
14
15 set nRegistros 1; # Se da el número de registros sísmicos a
16 utilizar.
17 set Registros [list "SCT18509.txt"]; # Se crea una lista con los nombres de
18 los archivos de los registros de
19 aceleraciones.
20 set dts [list 0.01]; # Lista con los diferenciales de tiempo de los
21 registros de aceleraciones, respetando el
22 orden dado en la lista files.
23 set nPuntos [list 15000]; # Se crea una lista con el número de puntos
24 que tiene cada registro de aceleraciones.
25
26 set nFactores 10; # Se indica el número de intensidades sísmicas
27 que se considerarán en el análisis.
28 set factores [list 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5];
29 # Se crea una lista de los factores con los que se escalarán los registros
30 de aceleraciones para obtener las intensidades sísmicas deseadas. Ingresar
31 factores de menor a mayor intensidad sísmica.
32
33 set dampings [list 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.10];
34 # Se crea una lista con los porcentajes de amortiguamiento que se considerará
35 para cada intensidad sísmica.
36
37 for {set ir 0} {$ir <= [expr $nRegistros-1]} {incr ir} {
38 # Este ciclo "for" llama los datos del registro de aceleraciones empleado en
39 el análisis.
40
41 set AccelDataFile [lindex $Registros $ir];
42 # Se llama al primer registro de aceleraciones y se almacena en la variable
43 "AccelDataFile". Esta variable deberá utilizarse en el archivo del análisis
44 dinámico para indicar qué registro de aceleraciones usar en el análisis.
45 set dt [lindex $dts $ir]; # Se llama el diferencial de tiempo
46 del registro.
47 set Npuntos [lindex $nPuntos $ir]; # Se llama el número de puntos del
48 registro.
49
50 set cont 1; # Esta variable funciona como un fusil, mientras su valor
51 sea igual a 1, OpenSees realizará el análisis dinámico con el registro actual,
99
12. Conclusiones
Los ejemplos mostrados en este libro dan a los lectores los conocimientos básicos
para analizar estructuras por medio del programa OpenSees. Sin embargo, la información
aquí brindada no garantiza un correcto manejo del programa. Como se observó a lo largo de
este libro, la estructura de OpenSees permite a los usuarios poseer un profundo control sobre
los parámetros de los análisis que se realizan. Esta característica es de gran ayuda para los
investigadores, lamentablemente, también representa un inconveniente para los usuarios con
menor experiencia en el área de estructuras. Por lo anterior, se recomienda a los usuarios del
programa estar muy bien informados sobre los procesos mecánicos que toman lugar en la
estructura analizada, de tal manera que puedan tomarlos en cuenta y así garantizar que sus
modelos proporcionan resultados confiables.
103
Referencias