!
pip install openseespy opsvis matplotlib
# -*- coding: utf-8 -*-
"""
Created on Mon May 12 01:17:47 2025
@author: daniel saavedra maldonado UMSA
Ref: Prof. Michael Scott
"""
import [Link] as ops
import opsvis as opsv
import [Link] as plt
[Link]()
# CREAR MODELO
[Link]('basic', '-ndm', 2, '-ndf', 2)
#===========================================================================
# CREAR NODOS
#===========================================================================
[Link](1, 0., 0.)
[Link](2, 0., 0.5)
[Link](3, 0., 1.0)
[Link](4, 0., 1.5)
[Link](5, 0., 1.75)
[Link](6, 0.4, 0.)
[Link](7, 0.4, 0.5)
[Link](8, 0.4, 1.0)
[Link](9, 0.4, 1.5)
[Link](10, 0.4, 1.75)
[Link](11, 0.8, 0.)
[Link](12, 0.8, 0.5)
[Link](13, 0.8, 1.0)
[Link](14, 0.8, 1.5)
[Link](15, 0.8, 1.75)
[Link](16, 1.25, 0.)
[Link](17, 1.25, 0.5)
[Link](18, 1.25, 1.0)
[Link](19, 1.25, 1.5)
[Link](20, 1.25, 1.75)
# - plot model
opsv.plot_model()
[Link]()
#===========================================================================
# CREAR MATERIAL
#===========================================================================
[Link]('ElasticIsotropic', 1, 150000, 0.45)
#===========================================================================
# CREAR ELEMENTOS
#===========================================================================
[Link]('quad', 1, 1, 6, 7, 2, 1, 'PlaneStress', 1)
[Link]('quad', 2, 2, 7, 8, 3, 1, 'PlaneStress', 1)
[Link]('quad', 3, 3, 8, 9, 4, 1, 'PlaneStress', 1)
[Link]('quad', 4, 4, 9, 10, 5, 1, 'PlaneStress', 1)
[Link]('quad', 5, 6, 11, 12, 7, 1, 'PlaneStress', 1)
[Link]('quad', 6, 7, 12, 13, 8, 1, 'PlaneStress', 1)
[Link]('quad', 7, 8, 13, 14, 9, 1, 'PlaneStress', 1)
[Link]('quad', 8, 9, 14, 15, 10, 1, 'PlaneStress', 1)
[Link]('quad', 9, 11, 16, 17, 12, 1, 'PlaneStress', 1)
[Link]('quad', 10, 12, 17, 18, 13, 1, 'PlaneStress', 1)
[Link]('quad', 11, 13, 18, 19, 14, 1, 'PlaneStress', 1)
[Link]('quad', 12, 14, 19, 20, 15, 1, 'PlaneStress', 1)
#===========================================================================
# CONDICIONES DE BORDE
#===========================================================================
[Link](1, 1, 1)
[Link](6, 1, 1)
[Link](11, 1, 1)
[Link](16, 1, 1)
[Link](2, 17, 1, 2)
[Link](3, 18, 1, 2)
[Link](4, 19, 1, 2)
[Link](5, 20, 1, 2)
#===========================================================================
# CARGAS
#===========================================================================
[Link]('Linear', 1)
[Link]('Plain', 1, 1)
[Link](5, 150, -50.)
[Link](20, 0., -50.)
#===========================================================================
# ANALYSIS
#===========================================================================
[Link]('Static')
[Link](1)
[Link]()
u_desplaz__extizq = [Link](5, -1)
u_desplaz__extder = [Link](20, -1)
R_1 = [Link](1, -1)
R_6 = [Link](6, -1)
R_11 = [Link](11, -1)
R_16 = [Link](16, -1)
#===========================================================================
# GRAFICOS
#===========================================================================
opsv.plot_model()
[Link]('equal')
[Link]('x [m]')
[Link]('y [m]')
[Link]('Discretizacion')
opsv.plot_load()
[Link]('x [m]')
[Link]('y [m]')
[Link]('Cargas en el modelo')
opsv.plot_defo(unDefoFlag=1)
[Link]('equal')
[Link]('x [m]')
[Link]('y [m]')
[Link]('Modelo deformado')
# Graficar esfuerzos
for jstr in ['sxx', 'syy', 'sxy', 'vmis']:
[Link]()
opsv.plot_stress(jstr)
[Link]('x [m]')
[Link]('y [m]')
[Link](f'{jstr}')
[Link]()