Documente Academic
Documente Profesional
Documente Cultură
PROYECTO ESPECIAL
BOGOTÁ D.C.
27 De Mayo De 2014
1
TABLA DE CONTENIDO
1. DESCARGA ........................................................................................................... 3
2. INSTALACION...................................................................................................... 4
3. MANEJO DEL PROGRAMA ................................................................................. 5
3.1. INTERACTIVO ....................................................................................................... 5
3.2. EJECUTAR ARCHIVO DE ENTRADA EN EL INDICADOR OPENSEES ............ 5
4. ALGUNOS COMANDOS DE ENTRADA............................................................... 5
4.1. CREACIÓN DEL MODELO ................................................................................... 5
4.2. NODOS .................................................................................................................... 5
4.3. MATERIALES ......................................................................................................... 7
4.4. SECCIONES .......................................................................................................... 10
4.5. ELEMENTOS ........................................................................................................ 11
4.6. GRABADORES...................................................................................................... 12
4.7. CARGAS ................................................................................................................ 12
4.7.1. PATRONES DE CARGA .................................................................................................... 12
4.7.2. ANÁLISIS Y DEFINICIÓN DE FUNCIONES ................................................................. 13
4.7.3. EJECUCIÓN DE ANÁLISIS .............................................................................................. 14
4.7.4. CARGAS LATERALES ...................................................................................................... 15
5. EJEMPLOS ......................................................................................................... 16
5.1. EJEMPLO 1 ........................................................................................................... 16
5.2. EJEMPLO 2 ........................................................................................................... 19
5.3. EJEMPLO 3 ........................................................................................................... 26
5.4. EJEMPLO 4 ........................................................................................................... 31
6. REFERENCIAS................................................................................................... 34
2
OPEN SEES
1. DESCARGA
Para descargar e instalar OpenSees se requiere que el usuario descargue tanto los OpenSees
y paquetes Tcl / Tk. Los OpenSees y paquetes Tcl / Tk ambos pueden ser descargados de los
OpenSees binarios página del http://opensees.berkeley.edu, allí encontraras el enlace
Download, al dar clic te llevara a la siguiente pagina
3
Imagen 2: Opciones de descarga de Open Sees
Debe descargar tanto el OpenSees2.4.3.exe como el archivo tcl/tk 8.5.14 según la versión de
su ordenador.
2. INSTALACION
El primer paso es instalar el Tcl/Tk, hacer es doble clic en su icono y seguir las instrucciones.
Cuando pregunte al usuario la ruta de instalación, se debe cambiar C:\tcl la cual aparece por
defecto por C:\Program Files\Tcl ya que esa es la recomendación directa de la página
http://opensees.berkeley.edu
Luego de haber instalado el Tcl/Tk, basta con abrir el ejecutable de Open Sees y se podrá
empezar a trabajar.
4
3. MANEJO DEL PROGRAMA
Este método es el más comúnmente utilizado. Un archivo externo que contiene los comandos
de entrada se puede invocar en el programa (inputFile.tcl) y se ejecutará en OpenSees usando
el comando source.
Comando [wipe].- Este comando es usado para limpiar la memoria antes de empezar a
generar un nuevo modelo. Es una práctica correcta colocarlo al inicio de cada aplicación.
Comando [set].- Este comando es usado para asignar un valor a una variable. Por ejemplo,
si se quiere asignar el valor de 5 a la variable “altura”, se debe escribir: set altura 5
Comando [expr].- Este comando es usado para evaluar una expresión aritmética. Por
ejemplo, si se quiere sumar la variable altura más 2, se debe escribir: expr $altura + 2
Comando [Basic Model Builder]. - Hasta la fecha, sólo hay un generador de modelos
disponibles, constructor modelo básico. El modelo de constructor define el número de
dimensiones (NDM) y grados de libertad por nodo (NDF):
4.2. NODOS
En este punto, se debe decidir qué unidades se utilizarán, ya que Open Sees no las define, en
todo momento el usuario del programa debe verificar que los datos ingresados al programa
estén en las unidades en las cuales se desea trabajar. Para cada uno de los nodos se le debe
5
asignar un número, al igual que a los elementos, de esta forma Open Sees reconocerá el
modelo en general.
Un ejemplo de la asignación de números de nodo y elemento se define en la siguiente figura:
Comando [node] - Este comando es usado para construir un nudo. Este asigna las
coordenadas y las masas al nudo. En un problema 2D sólo las coordenadas x e y deben ser
definidos con el comando node.
node 1 0 0
node 2 5 0
node 3 0 4
node 4 5 4
1
Imagen Extraída de: http://opensees.berkeley.edu/wiki/index.php/Getting_Started_with_OpenSees_--_Nodes
6
Comando [mass].- Este comando es usado para asignar la masa a un nudo. Masas nodales
pueden o bien ser definidos dentro del comando de nodo, o la pueden añadir con el comando
de masas.
Comando [fix].- Este comando es usado para definir las restricciones en los nudos
correspondientes a los apoyos.
Retomando el ejemplo de la figura anterior, limitados con tres grados de libertad por nodo:
fix 1 1 1 1
fix 2 1 1 1
fix 3 0 0 0
fix 4 0 0 0
4.3. MATERIALES
7
Concrete04: Este modelo es usado para construir un material uniaxial con
degradación lineal de rigidez carga-descarga de acuerdo con el trabajo de Karsan-
Jirsa. Este material considera además un esfuerzo a tensión con un descenso
exponencial.
8
Donde:
$matTag: etiqueta que identifica al material
$fpc: Resistencia a la compresión a los 28 días (compresión es negativa).
$epsc0: Deformación del concreto en el esfuerzo máximo
$fpcu: Esfuerzo de fractura del concreto
$epsU: Deformación del concreto al esfuerzo de fractura
Comando [Concrete02].- Este comando es usado para construir un material uniaxial de
Concreto con esfuerzo de tensión, considera un suavizado lineal en la zona de tensión.
uniaxialMaterial Concrete02 $matTag $fpc $epsc0 $fpcu $epscu $lambda $ft $Ets
Donde:
$matTag: etiqueta que identifica al material
$fpc: Resistencia a la compresión a los 28 días.
$epsc0: Deformación del concreto en la resistencia a la compresión.
$fpcu: Esfuerzo de fractura del concreto
$epscu: Deformación del concreto al esfuerzo de fractura
$lambda: coeficiente entre la pendiente descarga al $epscu y la pendiente inicial del esfuerzo
de tensión.
$ft: Esfuerzo de tensión
$Ets: Resistencia a tensión (pendiente de la rama lineal de tensión).
Es importante resaltar que los parámetros de resistencia y deformación a compresión deben
ser definidos como negativos; mientras los parámetros de resistencia y deformación a tensión
del concreto son considerados positivos.
Comando [Steel01].- Este comando es usado para construir un material uniaxial bilineal de
Acero con endurecimiento cinemático y endurecimiento isotrópico opcional descrito por una
ecuación no lineal.
9
4.4. SECCIONES
patch rect: Permite construir una sección (parche) de forma rectangular, para esta
instrucción se necesita definir las coordenadas de dos vértices opuestos.
layer straight: Esta instrucción es utilizada para construir las capas de refuerzo de
acero.
10
Presentamos el Ejemplo de los más utilizados:
4.5. ELEMENTOS
geomTransf Linear 1
11
$transfTag: Identificador para la transformación de coordenadas
4.6. GRABADORES
recorder Node <-file $fileName> <-time> <-node ($node1 $node2 ...)> <-nodeRange
$startNode $endNode> <-region $RegionTag> <-node all> -dof ($dof1 $dof2 ...) $respType
recorder Element <-file $fileName> <-time> <-ele ($ele1 $ele2 ...)> <-eleRange $startEle
$endEle> <-region $regTag> <-ele all> ($arg1 $arg2 ...)
4.7. CARGAS
Los patrones de carga son definidos usando el comando pattern. Tres tipos de patrón de carga
están disponibles actualmente:
a. Pattern plain: este patrón se utiliza para definir la siguiente:
i. cargas nodales, como cargas de gravedad y las cargas laterales (o
desplazamientos nodales de carga controlada)
ii. limitaciones de un solo punto, como el control de desplazamiento en un
nodo (normalmente utilizados para un desplazamiento constante a un nodo)
12
iii. cargas de elementos, tales como cargas de gravedad distribuidas a lo largo
del elemento (esta es una nueva opción, que todavía necesita la
documentación).
b. UniformExcitation Pattern: este tipo de patrón impone un registro de aceleración
definida por el usuario a todos los nodos fijos, en una dirección específica.
c. MultipleSupport Pattern: este tipo de patrón impone un registro definido por el
usuario de desplazamiento en los nodos especificados, en una dirección especificada,
o un registro de movimiento de tierra.
Comando [numberer]: Esta instrucción construye un objeto para numeración de los grados
de libertad. Éste determina la asignación entre el número de ecuaciones y los grados de
libertad, como los grados de libertad son numerados. Para ello se tienen dos opciones:
Plain: Usa la numeración dada por el usuario.
RCM: Vuelve a numerar los grados de libertad para minimizar el ancho de banda de
la matriz usando el algoritmo reverso de Cuthill-McKee
Comando [system]: Este comando es usado para construir un Sistema de Ecuaciones lineal
y un objeto de solución lineal.
Comando [test]: Este comando es usado para construir un objeto para prueba de
convergencia. Algunos algoritmos de solución requieren pruebas de convergencia para
determinar si la convergencia ha sido alcanzada al final de un paso de iteración.
13
Comando [algorithm]: Este comando es usado para construir un objeto para determinar el
algoritmo de solución, el cual determina la secuencia de pasos tomados para resolver la
ecuación no lineal.
Linear: Usa la solución de la primera iteración y continúa.
Newton: Usa la tangente en la iteración actual para iterar la convergencia.
Modified Newton: Usa la tangente a la primera iteración para iterar la convergencia
Comando [integrator]: Este comando se usa para construir un objeto Integrador. Éste
determina el significado de los términos en el sistema de ecuaciones.
Newmark: Método desarrollado por Newmark, es necesario definir los parámetros α
y β.
HHT: Método de Hilbert-Hughes-Taylor.
Central Difference: Aproxima la velocidad y la aceleración centrando diferencias
finitas de desplazamiento.
Comando [analysis]: Este comando es usado para construir un objeto de Análisis, el cual
define el tipo de análisis que será realizado, los cuales pueden ser:
Análisis Estático: Resuelve el problema Q=K*q, sin matrices de masa o
amortiguamiento.
Análisis Transient: Resuelve un análisis dependiente del tiempo. El paso de tiempo
en este análisis en constante.
Análisis Transient Variable: Resuelve el análisis dependiente del tiempo. El paso de
tiempo en este análisis es variable.
14
El análisis se ejecuta con el comando analyze. Este comando mueve el análisis presentado
por el número especificado de pasos.
analyze 10
15
5. EJEMPLOS
5.1. EJEMPLO 1
2 3 3
1 2
1 4
Columnas:
Son cuadradas de 50 cm y 3 m de altura.
Vigas:
Tienen una altura de 60 cm, ancho de 50 cm y una longitud de 4 metros.
Para este modelo se pide:
1) Analizar el periodo de la estructura considerando únicamente el peso propio de la
estructura
2) Luego de aplicar una carga lateral de 5 toneladas, identificar la reacción en X del
nodo 1 y los desplazamientos de la cubierta.
Datos necesarios.
En la carpeta anexa con el nombre de Ejemplo 1, se presenta con detalle los cálculos de los
datos necesarios para la solución del problema, tales como:
Masa en cada nodo: 0.238532 ton*s2/m
Área Viga: 0.3 m4
Área Columna: 0.25 m4
Inercia Viga: 0.0090 m4
Inercia Columna: 0.00521
16
A continuación se presenta el código empleado, el cual se encuentra guardado en la carpeta
anexa a este ejemplo en formato tcl para usar en Open Sees
Nota: las líneas que comienzan con # son líneas de comentarios.
17
constraints Plain
# Create the integration scheme, the LoadControl scheme using steps of 1.0
integrator LoadControl 1.0
18
set Reaccion1x [expr [lindex $Reaccion1 0]]
puts "El valor de la reacción en X es:"
puts "$Reaccion1x"
Para fines académicos realizamos el anterior ejercicio en el programa Sap 2000, para
comparar que tanto varían los resultados, y se encontró que la aproximación en las respuestas
es por muy poca diferencia.
Los resultados del análisis realizado en Sap 2000 se encuentran en la carpeta anexa Ejemplo
1.
5.2. EJEMPLO 2
El siguiente ejemplo fue tomado directo de la página de Open Sees, éste ejemplo fue
analizado y se tomó como objeto de estudio para poder realizar el ejemplo 1.
El modelo se puede ver en la siguiente figura:
2
Imagen Tomada de: http://opensees.berkeley.edu/wiki/index.php/Elastic_Frame_Example
19
El código de programación se puede ver en la carpeta anexa Ejemplo 2 con el nombre de
ElasticFrame.tcl, o se puede descargar directamente de la página de Open Sees.
#
# set some parameter
#
set PI [expr 2.0 * asin(1.0)]
set g 386.4
set ft 12.0
set Load1 1185.0;
set Load2 1185.0;
set Load3 970.0;
20
set w3 [expr $Load3/(90*$ft)]
# ------------------------------
# Start of model generation
# ------------------------------
# Create nodes
# ------------
# Create nodes & add to Domain - command: node nodeId xCrd yCrd <-mass $massX
$massY $massRz>
# NOTE: mass in optional
node 1 0.0 0.0
node 2 360.0 0.0
node 3 720.0 0.0
node 4 1080.0 0.0
node 5 0.0 162.0 -mass $m1 $m1 0.0
node 6 360.0 162.0 -mass $m1 $m1 0.0
node 7 720.0 162.0 -mass $m1 $m1 0.0
node 8 1080.0 162.0 -mass $m1 $m1 0.0
node 9 0.0 324.0 -mass $m2 $m2 0.0
node 10 360.0 324.0 -mass $m2 $m2 0.0
node 11 720.0 324.0 -mass $m2 $m2 0.0
node 12 1080.0 324.0 -mass $m2 $m2 0.0
node 13 0.0 486.0 -mass $m3 $m3 0.0
node 14 360.0 486.0 -mass $m3 $m3 0.0
node 15 720.0 486.0 -mass $m3 $m3 0.0
node 16 1080.0 486.0 -mass $m3 $m3 0.0
# Set the boundary conditions - command: fix nodeID xResrnt? yRestrnt? rZRestrnt?
fix 1 1 1 1
fix 2 1 1 1
fix 3 1 1 1
fix 4 1 1 1
21
# Define geometric transformations for beam-column elements
geomTransf Linear 1; # beams
geomTransf PDelta 2; # columns
# Define elements
# Create elastic beam-column - command: element elasticBeamColumn eleID node1 node2
A E Iz geomTransfTag
#create a Linear TimeSeries (load factor varies linearly with time): command timeSeries
Linear $tag
timeSeries Linear 1
22
# Create a Plain load pattern with a linear TimeSeries:
# command pattern Plain $tag $timeSeriesTag { $loads }
pattern Plain 1 1 {
eleLoad -ele 13 14 15 -type -beamUniform -$w1
eleLoad -ele 16 17 18 -type -beamUniform -$w2
eleLoad -ele 19 20 21 -type -beamUniform -$w3
}
# ---------------------------------
# Create Analysis for Gravity Loads
# ---------------------------------
# Create the integration scheme, the LoadControl scheme using steps of 1.0
integrator LoadControl 1.0
# ---------------------------------
# Perform Gravity Analysis
# ---------------------------------
analyze 1
# ---------------------------------
23
# Check Equilibrium
# ---------------------------------
set node1Rxn [nodeReaction 1]; # nodeReaction command returns nodal reactions for
specified node in a list
set node2Rxn [nodeReaction 2]
set node3Rxn [nodeReaction 3]
set node4Rxn [nodeReaction 4]
# ---------------------------------
# Lateral Load
# ---------------------------------
timeSeries Linear 2
pattern Plain 2 2 {
load 13 220.0 0.0 0.0
load 9 180.0 0.0 0.0
load 5 90.0 0.0 0.0
}
# ---------------------------------
# Create Recorder
# ---------------------------------
24
recorder Element -file EleForces.out -ele 1 4 7 10 forces
# ---------------------------------
# Perform Lateral Analysis
# ---------------------------------
analyze 1
# ---------------------------------
# Check Equilibrium
# ---------------------------------
reactions
set node1Rxn [nodeReaction 1]; # nodeReaction command returns nodal reactions for
specified node in a list
set node2Rxn [nodeReaction 2]
set node3Rxn [nodeReaction 3]
set node4Rxn [nodeReaction 4]
# ---------------------------------
# Check Eigenvalues
# ---------------------------------
25
puts "\nEigenvalues:"
set eigenValue [lindex $eigenValues 0]
puts "T[expr 0+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 1]
puts "T[expr 1+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 2]
puts "T[expr 2+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 3]
puts "T[expr 3+1] = [expr 2*$PI/sqrt($eigenValue)]"
set eigenValue [lindex $eigenValues 4]
puts "T[expr 4+1] = [expr 2*$PI/sqrt($eigenValue)]"
5.3. EJEMPLO 3
Columna:
Cuadrada de 0.5 m de lado, longitud de 6 m, refuerzo principal con 16 barras de 25 mm
de diámetro (véase la Figura 4), recubrimiento (hasta el eje de las barras de refuerzo
principal) de 0.05 m, Concreto de 28 MPa de esfuerzo resistente a la compresión, acero
de refuerzo con esfuerzo de fluencia de 420 MPa (esfuerzo de rotura de 560 MPa y con
deformación de rotura de 14%), zonas de confinamiento con estribos tipo “Hoop” (como
los definidos en XTRACT) de 10 mm de diámetro cada 11 cm.
26
#Unidades Kg, cm y segundos
proc MomentCurvature {secTag axialLoad maxK {numIncr 100} } {
# Definir 2 nodos (0,0)
node 1 0.0 0.0
node 2 0.0 0.0
# Fijar
fix 1 1 1 1
fix 2 0 1 0
# Crear grabadora
recorder Node -file section$secTag.out -time -node 2 -dof 3 disp
27
# Utilice el control de los desplazamientos en el nodo 2 para el análisis de la sección
integrator DisplacementControl 2 3 $dK 1 $dK $dK
# Crear el modelo
# --------------------
model basic -ndm 2 -ndf 3
# ACERO
set fy 4200; # Esfuerzo de Fluencia
set E 2100000.0; # Modulo de Elasticidad
# tag fy E0 b
uniaxialMaterial Steel01 3 $fy $E 0.01
# Secciones de la Columna
# ------------------------------------------
# Parametros
set colWidth 50
set colDepth 50
set cover 5
set As 5.07; # area de Barra No. 8
28
section Fiber 1 {
# Concreto confinado
patch rect 1 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-
$cover]
# Acero de Refuerzo
layer straight 3 5 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr
$cover-$z1]
layer straight 3 2 $As [expr ($y1-$cover)/2.0] [expr $z1-$cover] [expr ($y1-$cover)/2.0]
[expr $cover-$z1]
layer straight 3 2 $As 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
layer straight 3 2 $As [expr ($cover-$y1)/2.0] [expr $z1-$cover] [expr ($cover-$y1)/2.0]
[expr $cover-$z1]
layer straight 3 5 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr
$cover-$z1]
}
29
Este código se encuentra disponible en el archivo MCurvatura.tcl que se encuentra en la
carpeta anexa Ejemplo 3.
70
60
50
M (Ton-m)
40
30
20
10
0
0.0000 0.0200 0.0400 0.0600 0.0800 0.1000 0.1200 0.1400 0.1600 0.1800
Curvatura 1/m
M-Fi Xtract
70
60
50
M (ton-m)
40
30
20
10
0
0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18
Curvatura 1/m
30
5.4. EJEMPLO 4
Tomando la figura 2 y los datos del ejemplo número 1, se desea Inducir una señal sísmica en
el pórtico.
La señal escogida corresponde al sismo del Centro, la cual se encuentra anexa en la carpeta
de los ejemplos.
Primero calculamos las variables necesarias para el cálculo de la respuesta sísmica, tales
como la masa, entre otros.
31
#timeSeries Linear 1;
set W 10;
pattern Plain 1 Linear {
eleLoad -ele 3 -type -beamUniform -$W;
}
#por definicion dejamos las sigueintes condiciones de analisis
# Create the system of equation
system BandGeneral;
# Create the integration scheme, the LoadControl scheme using steps of 1.0
integrator LoadControl 0.1; #Aplico 10% de carga en cada paso
#Analizamos en un 1 paso
analyze 10;
loadConst -time 0.0; #Reinicia el tiempo y congela Cargas
#Obtenemos los valores propios con eigen
set eigenValues [eigen 1]
#Con lindex extraemos el valor propio 0 (primer valor)
set eigenValue [lindex $eigenValues 0]
#Calculamos el periodo y mostramos con puts
puts "T[expr 0+1] = [expr 2*3.1416/sqrt($eigenValue)]"
#Analsis Dinamico
#Creamos el patron de carga
set accelSeries "Series -dt 0.02 -filePath CENTRO1.prn -factor 1";
pattern UniformExcitation 2 1 -accel $accelSeries;
set xdamp 0.05
32
rayleigh 0. 0. 0. [expr 2*$xdamp/pow([eigen 1],0.5)]; #Amortiguamiento
Desplazamiento Nodo 3
3.00E-04
2.00E-04
1.00E-04
Desplazamiento (m)
0.00E+00
-1.00E-04
-2.00E-04
-3.00E-04
-4.00E-04
-5.00E-04
Tiempo (s)
33
6. REFERENCIAS
34