Mostrando entradas con la etiqueta ingeniería. Mostrar todas las entradas
Mostrando entradas con la etiqueta ingeniería. Mostrar todas las entradas

martes, 12 de agosto de 2025

Free CAD: Dibujo asistido por computador. Open Sourse

  FreeCAD

Es una aplicación libre de diseño asistido por computadora en tres dimensiones, ingeniería asistida por computadora, para la asistencia en ingeniería mecánica y el diseño de elementos mecánicos. Está basado en Open CASCADE y programado en los lenguajes C++ y Python. Es software CAD de código abierto que permite la simulación y modelado paramétrico, útil en el diseño mecánico. 
 
 
 

Libertad para construir lo que quieras

FreeCAD es un modelador 3D paramétrico de código abierto hecho principalmente para diseñar objetos de la vida real de cualquier tamaño. El modelado paramétrico le permite, modificar fácilmente su diseño volviendo atràs en el historial del modelo y cambiando sus parámetros. 

Crea 3D desde 2D y viceversa

FreeCAD te permite dibujar formas 2D con restricciones de geometría y usarlas como base para construir otros objetos. Contiene muchos componentes para ajustar las dimensiones o extraer detalles de diseño de modelos 3D para crear dibujos listos para producción de alta calidad.

For professional design needs...

Diseñado para sus necesidades

FreeCAD está diseñado para adaptarse a una amplia gama de usos, incluyendo el diseño de productos, la ingeniería mecánica y la arquitectura. Tanto si eres uno o una aficionada, un programador, un usuario experimentado de CAD, un estudiante o profesor, te sentirás como en casa con FreeCAD. novedades.

Y muchas más características geniales

FreeCAD cuenta con todas las herramientas adecuadas para tus necesidades. Obtienes herramientas modernas de análisis de elementos finitos (FEA), CFD experimental, BIM, entornos de trabajo de geodatos y de mecanizado, un módulo de simulación de robot que te permite estudiar movimientos de robot y muchas más características. FreeCAD es realmente una navaja suiza de herramientas de ingeniería de uso general .

¿Quieres contribuir a FreeCAD?

FreeCAD es un proyecto real de código abierto y si desea ayudar a corregir errores, implementar nuevas características interesantes o trabajar en la documentación, te invitamos a unirte a nosotros y crear un software que beneficie a toda la comunidad .


 

sábado, 26 de julio de 2025

Articulo MTBCF: tiempo medio entre fallas criticas

 

Comprender el tiempo medio entre fallas críticas (MTBCF)

Un parámetro crítico en ingeniería de confiabilidad, mide el tiempo operativo esperado transcurrido entre fallas críticas en un sistema o equipo.

El tiempo medio entre las fallas críticas (MTBCF), un parámetro crítico en la ingeniería de confiabilidad, mide el tiempo operativo esperado entre las fallas críticas en un sistema o equipo. Las fallas críticas son eventos que deshabilitan un sistema, lo que inhibe que entregue su función o servicio previsto. Comprender y evaluar MTBCF es esencial para mejorar la confiabilidad del sistema. Pero, ¿cómo acumulamos los datos necesarios para calcular esta métrica vital? Un enfoque eficiente y práctico es agregar un punto de datos a cada registro de orden de trabajo que identifique si fue una falla crítica. 
 
 
Luz de punto negro  
 

Fallas críticas y órdenes de trabajo

Las órdenes de trabajo se usan comúnmente para documentar y administrar tareas de mantenimiento. Por lo general, incluyen información como la descripción de la tarea, la fecha y la hora de la solicitud, el equipo involucrado, el personal asignado y el estado de finalización. Simplemente agregando un punto de datos en cada orden de trabajo que marca si la tarea de mantenimiento se activó por una falla crítica, se puede establecer un registro integral y sistemático de tales eventos.

Calcular MTBCF utilizando datos de orden de trabajo

Una vez que el sistema de orden de trabajo está configurado para registrar fallas críticas, calcular el MTBCF se vuelve directo al aplicar el método apropiado:

  1. El tiempo de operación total se divide por el número de fallas críticas durante ese período. El tiempo de funcionamiento encapsula la duración cuando el sistema está activamente en servicio: operación normal, espera o tiempos de inactividad, excluyendo el tiempo de reparación o inactividad. El número de fallas críticas se deriva de los puntos de datos marcados en las órdenes de trabajo. Esta cifra resultante, típicamente expresada en horas, proporciona una expectativa estadística de los intervalos entre fallas críticas sucesivas.

  2. El tiempo medio entre las órdenes de trabajo planteadas, que sirve como un proxy para las fallas críticas, se calcula para evaluar la confiabilidad del sistema. Es importante tener en cuenta que el contexto y la consistencia en la aplicación de esta métrica son cruciales. En los sistemas que operan de manera bastante consistente, el uso de órdenes de trabajo como proxy para los tiempos de falla puede ser un enfoque práctico y efectivo para estimar esta métrica. Proporciona una tendencia clara de frecuencia de falla, ofreciendo ideas valiosas para la planificación del mantenimiento y la mejora de la confiabilidad.

Beneficios de incorporar puntos de datos de falla crítica en órdenes de trabajo

  1. Precisión de datos mejorado : los datos de falla crítica integrados en las órdenes de trabajo proporcionan un recuento más preciso de tales incidentes, lo que lleva a cálculos de MTBCF más confiables.

  2. Planificación de mantenimiento : al realizar un seguimiento de la frecuencia y la naturaleza de las fallas críticas, los horarios de mantenimiento se pueden ajustar en consecuencia para evitar fallas inesperadas del sistema, lo que mejora el tiempo de actividad del sistema y la prestación de servicios.

  3. Gestión de riesgos : un registro histórico de fallas críticas ayuda en la evaluación de riesgos, permitiendo mejores estrategias para mitigar las consecuencias de las posibles fallas.

  4. Análisis de eficiencia : las ideas sobre la aparición de fallas críticas pueden conducir a decisiones más informadas sobre las actualizaciones del sistema, los reemplazos y la eficiencia general del sistema.

 

Desafíos y soluciones

Si bien la incorporación de puntos de datos de falla crítica en órdenes de trabajo proporciona numerosas ventajas, también presenta algunos desafíos. El personal debe estar adecuadamente capacitado para identificar y registrar correctamente fallas críticas. Los criterios estandarizados para lo que constituye una falla crítica debe establecerse claramente para garantizar informes consistentes.

Además, la calidad del análisis depende en gran medida de la calidad de los datos de falla recopilados. Este problema puede mitigarse revisando y limpiando de manera rutinaria los datos para identificar cualquier anomalía o inconsistencia.

Conclusión

El tiempo medio entre fallas críticas (MTBCF) proporciona información valiosa sobre la confiabilidad y el rendimiento de un sistema. Al incorporar un punto de datos de falla crítica en cada orden de trabajo, las organizaciones pueden rastrear de manera más precisa y eficiente estos eventos. A pesar de los posibles desafíos, con los sólidos procesos de capacitación y gestión de datos, este método puede mejorar significativamente la evaluación de la confiabilidad del sistema y la planificación estratégica de los horarios de mantenimiento.

 

sábado, 5 de julio de 2025

Python para ingenieros estructurales

 

20 de noviembre de 2024

5 poderosas bibliotecas de python que todo ingeniero estructural debe conocer

Luis Maldonado de la Torre

by Luis Maldonado de la Torre 

Python, conocido por su simplicidad y versatilidad, se ha vuelto cada vez más popular entre los ingenieros que buscan optimizar sus procesos, automatizar tareas repetitivas y mejorar la precisión de sus análisis. En este blog, exploraremos mis 5 bibliotecas de Python favoritas para el análisis estructural. Ya sea que esté trabajando con análisis dinámicos complejos o simplemente busque calcular las propiedades geométricas de una sección, ¡hay una herramienta para usted!  

¿Qué es una biblioteca de Python?

Una biblioteca de Python es una colección de herramientas predefinidas que incluyen funciones, clases y módulos diseñados para resolver tareas específicas sin necesidad de codificar todo desde cero, ahorrándonos tiempo, porque en la programación, no hay necesidad de reinventar la rueda.

Además, estas bibliotecas proporcionan flexibilidad y personalización debido a su de código abierto , lo que nos permite explorar, modificar y adaptar sus funcionalidades de acuerdo con las necesidades específicas de cada proyecto. También se destacan por su facilidad de uso , con documentación clara y una comunidad activa que hace que aprender y aplicarlos directamente, incluso para aquellos que no son expertos en programación. 

Algunos ejemplos de bibliotecas populares de Python que puede conocer son Numpy, Matplotlib, Plotly y Pandas. Estos paquetes son ampliamente utilizados por los ingenieros pero tienen un límite común. No están diseñados para la ingeniería sino para el análisis de datos.

Sin embargo, en este artículo, quiero compartir los que aún no conoce que sean puramente para ingenieros. ¡Vamos a sumergirnos!

1. Modelado y análisis estructurales con OpenSePy

Análisis con OpenSePy 02.png 

Análisis con OpenSePy 03.png 

Opensees es un poderoso software de código abierto. Es ideal para modelar y analizar sistemas estructurales bajo cargas estáticas y dinámicas, especialmente en escenarios que involucran terremotos. Su capacidad para manejar análisis no lineales y avanzados lo hace particularmente útil para proyectos de ingeniería sísmica.

Ventajas:

  • Modelado avanzado: simula el comportamiento plástico de los materiales y permite un análisis lineal, por lo que es una herramienta versátil para todo tipo de proyectos estructurales.
  • Análisis dinámico: admite el análisis de la historia de tiempo, el análisis modal espectral y otros análisis dinámicos con alta precisión.
  • Comunidad activa: Opensees tiene una gran base de usuarios que comparte ejemplos, modelos y soluciones a problemas complejos.
# Veamos un ejemplo de aplicación en Google Colab gracias a PPI
>>!pip install openseespy
Collecting openseespy
  Downloading openseespy-3.7.1.2-py3-none-any.whl.metadata (2.3 kB)
Collecting openseespylinux>=3.7.1.2 (from openseespy)
  Downloading openseespylinux-3.7.1.2-py3-none-any.whl.metadata (1.2 kB)
Downloading openseespy-3.7.1.2-py3-none-any.whl (5.3 kB)
Downloading openseespylinux-3.7.1.2-py3-none-any.whl (58.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.1/58.1 MB 16.9 MB/s eta 0:00:00
Installing collected packages: openseespylinux, openseespy
Successfully installed openseespy-3.7.1.2 openseespylinux-3.7.1.2
!pip install opsvis
 
Collecting opsvis
  Downloading opsvis-1.2.30-py3-none-any.whl.metadata (1.1 kB)
Requirement already satisfied: openseespy in /usr/local/lib/python3.11/dist-packages (from opsvis) (3.7.1.2)
Requirement already satisfied: openseespylinux>=3.7.1.2 in /usr/local/lib/python3.11/dist-packages (from openseespy->opsvis) (3.7.1.2)
Downloading opsvis-1.2.30-py3-none-any.whl (54 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.7/54.7 kB 3.6 MB/s eta 0:00:00
Installing collected packages: opsvis
Successfully installed opsvis-1.2.30
 
>>import openseespy.opensees as ops 
>>import opsvis as opsv 
>>import matplotlib.pyplot as plt 
>>import numpy as np 
>>ops.wipe() 
>>ops.model('basic', '-ndm', 2, '-ndf', 3) 
>>m = 100             # Mass (kg) 
>>h = 3               # Story height (m) 
>>L = 5               # Bay width (m) 
>>A = 0.09            # Column cross-sectional area (m2) 
>>Ic = 0.000675       # Column moment of inertia (m4) 
>>Iv = 10e10          # Rigid beam moment of inertia (m4) 
>>E = 20e9            # Modulus of elasticity (GPa) 

>># Definition of nodes and masses 
>>ops.node(1, 0, 0) 
>>ops.node(2, L, 0) 
>>ops.node(3, 0, 1*h, '-mass', m, 0, 0) 
>>ops.node(4, L, 1*h, '-mass', m, 0, 0) 
>>ops.node(5, 0, 2*h, '-mass', m/2, 0, 0) 
>>ops.node(6, L, 2*h, '-mass', m/2, 0, 0) 

>># support 
>>ops.fix(1, 1, 1, 1)  # Fixed 
>>ops.fix(2, 1, 1, 1)  # Fixed 

>>ops.geomTransf('Linear', 1) 

>># Column 
>>ops.element('elasticBeamColumn', 1, 1, 3, A, E, 2*Ic, 1) 
>>ops.element('elasticBeamColumn', 2, 2, 4, A, E, 2*Ic, 1) 
>>ops.element('elasticBeamColumn', 3, 3, 5, A, E, 1*Ic, 1) 
>>ops.element('elasticBeamColumn', 4, 4, 6, A, E, 1*Ic, 1) 

>># Beam 
>>ops.element('elasticBeamColumn', 5, 3, 4, A, E, Iv, 1) 
>>ops.element('elasticBeamColumn', 6, 5, 6, A, E, Iv, 1) 

>># Calculation of vibration periods 
>>NumModes = 2 
>>eigen = np.array(ops.eigen(NumModes)) 
>>ω = eigen**0.5 
>>T = 2*np.pi/ω 

>>for i in range(NumModes): 
>>    opsv.plot_mode_shape(i+1, endDispFlag=0) 
>>    plt.title("$T_{%i}$: %.4f sec" % (i+1, T[i])) 
>>plt.show() ```

 

 

2. Análisis FEM accesible con Pynite 

Anaylsis con pynite 02.png 

Pynite es una biblioteca de python liviana que permite el análisis de elementos finitos de una manera simple y accesible. Su objetivo principal es proporcionar una herramienta que logre un buen equilibrio entre la simplicidad y la eficiencia para los ingenieros estructurales que no necesitan un solucionador técnicamente complejo.

Pynite puede realizar un análisis estático 3D y 2D, análisis P-δ para estructuras de cuadros y manejar diferentes tipos de cargas: cargas de puntos, cargas distribuidas, cargas nodales y combinaciones de carga.

Ventajas:

  • Facilidad de uso : Pynite tiene una curva de aprendizaje corta, por lo que cualquier ingeniero con conocimiento básico de programación puede usarlo.
  • Análisis eficiente : perfecto para proyectos donde se requieren simplicidad y velocidad.
  • Resultados inmediatos : rápidamente genera diagramas de estrés y deformación, lo que le permite visualizar el comportamiento estructural al instante.

3. Calcule las propiedades de la sección transversal con las propiedades de secciones 

Sección Properties 02.png  

SectionProperties permite el cálculo de las propiedades transversales utilizando el método de elementos finitos (FEM), como área, centroide, momentos de inercia, tensiones de flexión y más, lo que lo convierte en una herramienta esencial para ingenieros que trabajan con concreto, acero o elementos madereros. Además, admite trabajar con .dxf y .3dm (rhino), que es útil para importar geometrías de otros programas de modelado.

Una de las características impresionantes de SectionProperties es su capacidad para generar mallas precisas de secciones transversales. Además, proporciona opciones de exportación que permiten guardar geometrías y propiedades calculadas en diferentes formatos, lo que permite la integración en otros flujos de trabajo.

Ventajas :

  • Flexibilidad : permite la definición de secciones complejas, incluidas formas compuestas e irregulares.
  • Visualización gráfica : proporciona una interfaz gráfica para visualizar las distribuciones de estrés y deformación, lo que facilita la comprensión del comportamiento estructural de las secciones analizadas.
  • Velocidad : realiza cálculos avanzados en segundos, ahorrando tiempo durante la fase de diseño preliminar y mejorando la eficiencia en el desarrollo del proyecto.
  • Accesibilidad y código abierto : a diferencia de otras herramientas comerciales, SectionProperties es de código abierto y tiene una API disponible, lo que lo hace ideal para los investigadores y los ingenieros que necesitan personalizar su flujo de trabajo.

 Veamos ahora un ejemplo en Google Colab, Gracias a PPI

>>! pip install sectionproperties
Collecting sectionproperties
  Downloading sectionproperties-3.9.0-py3-none-any.whl.metadata (7.3 kB)
Collecting cytriangle>=2.0.0 (from sectionproperties)
  Downloading cytriangle-2.0.0.tar.gz (336 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 336.4/336.4 kB 7.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: matplotlib>=3.9.2 in /usr/local/lib/python3.11/dist-packages (from sectionproperties) (3.10.0)
Requirement already satisfied: more-itertools>=10.5.0 in /usr/local/lib/python3.11/dist-packages (from sectionproperties) (10.7.0)
Requirement already satisfied: numpy>=1.26.4 in /usr/local/lib/python3.11/dist-packages (from sectionproperties) (2.0.2)
Requirement already satisfied: rich>=13.9.4 in /usr/local/lib/python3.11/dist-packages (from rich[jupyter]>=13.9.4->sectionproperties) (13.9.4)
Requirement already satisfied: scipy>=1.14.1 in /usr/local/lib/python3.11/dist-packages (from sectionproperties) (1.15.3)
Requirement already satisfied: shapely>=2.0.7 in /usr/local/lib/python3.11/dist-packages (from sectionproperties) (2.1.1)
Collecting numpy>=1.26.4 (from sectionproperties)
  Using cached numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (62 kB)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (4.58.4)
Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (1.4.8)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (24.2)
Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (11.2.1)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.9.2->sectionproperties) (2.9.0.post0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.11/dist-packages (from rich>=13.9.4->rich[jupyter]>=13.9.4->sectionproperties) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.11/dist-packages (from rich>=13.9.4->rich[jupyter]>=13.9.4->sectionproperties) (2.19.2)
Requirement already satisfied: ipywidgets<9,>=7.5.1 in /usr/local/lib/python3.11/dist-packages (from rich[jupyter]>=13.9.4->sectionproperties) (7.7.1)
Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (6.17.1)
Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.2.0)
Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (5.7.1)
Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.6.10)
Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (7.34.0)
Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.0.15)
Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.11/dist-packages (from markdown-it-py>=2.2.0->rich>=13.9.4->rich[jupyter]>=13.9.4->sectionproperties) (0.1.2)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.7->matplotlib>=3.9.2->sectionproperties) (1.17.0)
Requirement already satisfied: debugpy>=1.0 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.8.0)
Requirement already satisfied: jupyter-client>=6.1.12 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (6.1.12)
Requirement already satisfied: matplotlib-inline>=0.1 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.1.7)
Requirement already satisfied: nest-asyncio in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.6.0)
Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (5.9.5)
Requirement already satisfied: pyzmq>=17 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (24.0.1)
Requirement already satisfied: tornado>=6.1 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (6.4.2)
Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (75.2.0)
Collecting jedi>=0.16 (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties)
  Downloading jedi-0.19.2-py2.py3-none-any.whl.metadata (22 kB)
Requirement already satisfied: decorator in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.4.2)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.7.5)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.0.51)
Requirement already satisfied: backcall in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.2.0)
Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.9.0)
Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.11/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (6.5.7)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /usr/local/lib/python3.11/dist-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.8.4)
Requirement already satisfied: jupyter-core>=4.6.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (5.8.1)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.1.6)
Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (25.1.0)
Requirement already satisfied: nbformat in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (5.10.4)
Requirement already satisfied: nbconvert>=5 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (7.16.6)
Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.8.3)
Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.18.1)
Requirement already satisfied: prometheus-client in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.22.1)
Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.3.1)
Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.11/dist-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.7.0)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.11/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.2.13)
Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.11/dist-packages (from jupyter-core>=4.6.0->jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.3.8)
Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.11/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.2.4)
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.13.4)
Requirement already satisfied: bleach!=5.0.0 in /usr/local/lib/python3.11/dist-packages (from bleach[css]!=5.0.0->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (6.2.0)
Requirement already satisfied: defusedxml in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.7.1)
Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.3.0)
Requirement already satisfied: markupsafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.0.2)
Requirement already satisfied: mistune<4,>=2.0.3 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.1.3)
Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.10.2)
Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.5.1)
Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.11/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (2.21.1)
Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.11/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.24.0)
Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.11/dist-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (21.2.0)
Requirement already satisfied: webencodings in /usr/local/lib/python3.11/dist-packages (from bleach!=5.0.0->bleach[css]!=5.0.0->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.5.1)
Requirement already satisfied: tinycss2<1.5,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from bleach[css]!=5.0.0->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.4.0)
Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (25.3.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (2025.4.1)
Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.36.2)
Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (0.26.0)
Requirement already satisfied: jupyter-server<3,>=1.8 in /usr/local/lib/python3.11/dist-packages (from notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.16.0)
Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.17.1)
Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (2.7)
Requirement already satisfied: typing-extensions>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.14.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.11/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (2.22)
Requirement already satisfied: anyio>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (4.9.0)
Requirement already satisfied: websocket-client in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.8.0)
Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.11/dist-packages (from anyio>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (3.10)
Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9,>=7.5.1->rich[jupyter]>=13.9.4->sectionproperties) (1.3.1)
Downloading sectionproperties-3.9.0-py3-none-any.whl (112 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 112.9/112.9 kB 9.7 MB/s eta 0:00:00
Using cached numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl (16.9 MB)
Downloading jedi-0.19.2-py2.py3-none-any.whl (1.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 49.6 MB/s eta 0:00:00
Building wheels for collected packages: cytriangle
  Building wheel for cytriangle (pyproject.toml) ... done
  Created wheel for cytriangle: filename=cytriangle-2.0.0-cp311-cp311-manylinux_2_35_x86_64.whl size=1237594 sha256=e0ee93786649d8d407a4c59b28696bad82913137d83f00ae5c181770f35604bd
  Stored in directory: /root/.cache/pip/wheels/d9/52/63/2e5a154198119771769a1600d36b6555bffe0314b2a04ac6b0
Successfully built cytriangle
Installing collected packages: numpy, jedi, cytriangle, sectionproperties
  Attempting uninstall: numpy
    Found existing installation: numpy 2.0.2
    Uninstalling numpy-2.0.2:
      Successfully uninstalled numpy-2.0.2
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
cupy-cuda12x 13.3.0 requires numpy<2.3,>=1.22, but you have numpy 2.3.1 which is incompatible.
numba 0.60.0 requires numpy<2.1,>=1.22, but you have numpy 2.3.1 which is incompatible.
tensorflow 2.18.0 requires numpy<2.1.0,>=1.26.0, but you have numpy 2.3.1 which is incompatible.
Successfully installed cytriangle-2.0.0 jedi-0.19.2 numpy-2.3.1 sectionproperties-3.9.0
WARNING: The following packages were previously imported in this runtime:
  [numpy]
You must restart the runtime in order to use newly installed versions.
>>import sectionproperties.pre.library.primitive_sections as sections

>>from sectionproperties.analysis.section import Section

>>import matplotlib.pyplot as plt


>># Create outer circular section (diameter = 10)

>>outer_geometry = sections.circular_section(d=10, n=100)


>># Create inner circular section (hole) and shift it (diameter = 4, offset by 2 in x, 1 in y)

>>inner_geometry = sections.circular_section(d=4, n=100)

>>inner_geometry = inner_geometry.shift_section(x_offset=2, y_offset=1)


>># Subtract inner geometry from outer geometry to form a hollow section

>>geometry = outer_geometry - inner_geometry


>># Plot the resulting hollow section

>>geometry.plot_geometry()


>># Generate mesh for the section

>>geometry.create_mesh(mesh_sizes=[1])


>># Perform section analysis and display results

>>section = Section(geometry, time_info=True)

>>section.display_mesh_info()

>>section.plot_mesh(materials=False)

>>section.calculate_geometric_properties()

>>section.calculate_warping_properties()

>>section.calculate_plastic_properties()

>>section.plot_centroids()

>>section.display_results()

 
Mesh Statistics:
- 2036 nodes
- 918 elements
- 1 region

 
╭────────────────────────────────────────────── Geometric Analysis ───────────────────────────────────────────────╮
                                                                                                                 
   ✅ Geometric analysis complete                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.4253 s ] 
                                                                                                                 
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

╭─────────────────────────────────────────────── Warping Analysis ────────────────────────────────────────────────╮
                                                                                                                 
   ✅ Warping analysis completed                 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 1.2523 s ] 
   ✅ 2036x2036 stiffness matrix assembled       ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.5176 s ] 
   ✅ Warping function solved (direct)           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.0191 s ] 
   ✅ Shear function vectors assembled           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.1980 s ] 
   ✅ Shear functions solved (direct)            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.0418 s ] 
   ✅ Shear and warping integrals assembled      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.1538 s ] 
   ✅ Shear deformation coefficients assembled   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.1427 s ] 
   ✅ Monosymmetry integrals assembled           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.1256 s ] 
                                                                                                                 
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

╭─────────────────────────────────────────────── Plastic Analysis ────────────────────────────────────────────────╮
                                                                                                                 
   ✅ Plastic analysis complete                  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% [ 0.0574 s ] 
                                                                                                                 
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
 
     Section Properties      
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Property           Value ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ area        6.593005e+01 │
│ perimeter   3.141076e+01 │
│ qx         -1.255810e+01 │
│ qy         -2.511621e+01 │
│ ixx_g       4.651203e+02 │
│ iyy_g       4.274460e+02 │
│ ixy_g      -2.511621e+01 │
│ cx         -3.809524e-01 │
│ cy         -1.904762e-01 │
│ ixx_c       4.627283e+02 │
│ iyy_c       4.178779e+02 │
│ ixy_c      -2.990025e+01 │
│ zxx+        8.914949e+01 │
│ zxx-        9.621084e+01 │
│ zyy+        7.765873e+01 │
│ zyy-        9.046842e+01 │
│ rx          2.649240e+00 │
│ ry          2.517579e+00 │
│ i11_c       4.776784e+02 │
│ i22_c       4.029278e+02 │
│ phi        -1.534349e+02 │
│ z11+        9.556281e+01 │
│ z11-        9.556281e+01 │
│ z22+        8.811666e+01 │
│ z22-        7.427927e+01 │
│ r11         2.691697e+00 │
│ r22         2.472134e+00 │
│ j           7.861955e+02 │
│ x_se       -1.068935e+00 │
│ y_se       -5.344649e-01 │
│ x1_se       7.691864e-01 │
│ y2_se      -2.093882e-06 │
│ x_st       -1.068935e+00 │
│ y_st       -5.344649e-01 │
│ gamma       2.014705e+02 │
│ a_sx        4.774900e+01 │
│ a_sy        4.403138e+01 │
│ a_s11       4.913163e+01 │
│ a_s22       4.291766e+01 │
│ beta_x+    -1.142929e+00 │
│ beta_x-     1.142929e+00 │
│ beta_y+    -2.383527e+00 │
│ beta_y-     2.383527e+00 │
│ beta_11+   -4.187765e-06 │
│ beta_11-    4.187765e-06 │
│ beta_22+    2.706659e+00 │
│ beta_22-   -2.706659e+00 │
│ x_pc       -6.297811e-01 │
│ y_pc       -5.522453e-01 │
│ x11_pc     -5.632947e-01 │
│ y22_pc     -2.816474e-01 │
│ sxx         1.497765e+02 │
│ syy         1.374368e+02 │
│ s11         1.558461e+02 │
│ s22         1.344723e+02 │
│ sf_xx+      1.680060e+00 │
│ sf_xx-      1.556753e+00 │
│ sf_yy+      1.769754e+00 │
│ sf_yy-      1.519169e+00 │
│ sf_11+      1.630824e+00 │
│ sf_11-      1.630824e+00 │
│ sf_22+      1.526071e+00 │
│ sf_22-      1.810361e+00 │
└───────────┴───────────────┘
 

 

4. Análisis detallado de la sección de concreto reforzado con concreteproperties 

Concreteproperties 02.png 

Concreteproperties 03.png 

Las concretas de propiedades facilitan el análisis detallado de secciones de concreto reforzadas , incluidas compuestas de concreto y acero , así como pretensado .

A diferencia de SectionProperties, Concreteproperties se especializa en secciones de concreto reforzadas y su análisis detallado. Esta herramienta no solo permite el cálculo de propiedades geométricas, como el área transversal, momentos de inercia, centroide, rigidez axial y más, sino que también realiza análisis avanzados como de curvatura e diagramas , que se adaptan específicamente al comportamiento de concreto reforzado en varias condiciones de carga. Esto lo convierte en la opción ideal cuando se requiere un análisis detallado del comportamiento no lineal del concreto , incluyendo grietas, capacidad de flexión final y rigidez efectiva bajo cargas de servicio.

Ventajas :

  • Versatilidad : Concreteproperties admite una amplia gama de materiales, desde concreto (confinado y no confinado) y acero hasta material pretensado, lo que lo hace adaptable para diferentes tipos de proyectos.
  • Análisis especializado : proporciona herramientas para realizar un análisis profundo de secciones concretas, desde la rigidez inicial hasta la capacidad de carga máxima y las condiciones de servicio.
  • Cumplimiento del código : incluye módulos específicos para validar diseños de acuerdo con estándares como AS3600 y pautas de evaluación como NZS3101 , asegurando el cumplimiento de los estándares reconocidos.
  • Visualización clara : genera gráficos detallados que ayudan a comprender el comportamiento estructural, incluidas las distribuciones de estrés y los diagramas de curvatura de momento.
>>! pip install concreteproperties
 
>>import matplotlib.pyplot as plt

>>from concreteproperties.design_codes.nzs3101 import NZS3101

>>from concreteproperties.design_codes.as3600 import AS3600

>>from sectionproperties.pre.library.concrete_sections import concrete_rectangular_section

>>from concreteproperties.concrete_section import ConcreteSection

>>from concreteproperties.results import MomentInteractionResults

>>from concreteproperties.results import MomentCurvatureResults


>># Select a design code

>>design_code = NZS3101()

>># design_code = AS3600()


>># Materials

>>concrete_40 = design_code.create_concrete_material(compressive_strength=40)

>>steel_500 = design_code.create_steel_material(steel_grade="500E") # steel for design code NZS3101


>># steel_500 = design_code.create_steel_material()                          # steel for design code AS3600

>>geom_col = concrete_rectangular_section(

>>   b=600, d=600,

>>   dia_top=20, area_top=314.16, n_top=4,

>>   dia_bot=20, area_bot=314.16, n_bot=4,

>>   dia_side=20, area_side=314.16, n_side=2,

>>   c_bot=47, c_side=47, c_top=47,

>>   n_circle=8,

>>   conc_mat=concrete_40, steel_mat=steel_500)

>>conc_sec_col = ConcreteSection(geom_col)

>>conc_sec_col.plot_section()

>>design_code.assign_concrete_section(conc_sec_col)

>>f_mi_res, mi_res, phis = design_code.moment_interaction_diagram()

>>ax = MomentInteractionResults.plot_multiple_diagrams(

>>     [f_mi_res, mi_res], ["Factored", "Unfactored"], fmt="-", render=False)


>># design load cases

>>n_stars = [4000e3, 5000e3, -500e3, 1000e3]

>>m_stars = [200e6, 400e6, 100e6, 650e6]

>>marker_styles = ["x", "+", "o", "*"]


>># check to see if combination is within diagram and plot result

>>for idx in range(len(n_stars)):
>>  case = f_mi_res.point_in_diagram(n=n_stars[idx], m=m_stars[idx])

>>  print("Case {num}: {status}".format(

>>  num=idx + 1, status="OK" if case else "FAIL"))

>>  ax.plot(m_stars[idx] / 1e6, n_stars[idx] / 1e3, "k" + marker_styles[idx],

>>         markersize=10, label=f"Case {idx + 1}")

>>ax.legend(loc="lower right")

>>plt.show()


>># Moment-Curvature Analysis

>>moment_curvature_results = conc_sec_col.moment_curvature_analysis()

>>MomentCurvatureResults.plot_results(moment_curvature_results, fmt="-r")
 

 

 

 

5. Análisis estructural con anaestructiva 

 

Anastruct es una biblioteca de pitón liviana diseñada para realizar un análisis estructural lineal de marcos y armaduras en 2D, utilizando el método de elementos finitos, lo que permite a los ingenieros obtener rápidamente resultados claros y precisos sin complicaciones.

Anastruct ofrece un conjunto completo de herramientas para analizar reacciones, momentos de flexión, fuerzas de corte, fuerzas axiales y desplazamientos. Además, admite nodos no lineales y no linealidad geométrica , lo que mejora su capacidad para modelar sistemas con un comportamiento complejo.

Ventajas :

  • Visualización clara : la anastructación genera gráficos detallados, que incluyen líneas de momento de flexión, fuerzas axiales, fuerzas de corte y desplazamientos, lo que facilita la interpretación y comunicación de resultados.
  • Facilidad de uso : con una configuración directa, la anastructación es ideal para los ingenieros que buscan una herramienta rápida y accesible para cálculos estructurales 2D.
  • Flexibilidad en la definición de la sección : ofrece una base de datos de perfiles de acero como HEA e IPE, así como la opción de definir propiedades geométricas para cada elemento creado.

Anaestructiva 02.png 

>>from anastruct import SystemElements 
>>ss = SystemElements(EA=2e4, EI=6e3) 

>>ss.add_element([[0, 0], [0, 3]]) 
>>ss.add_element([[4, 0], [4, 3]]) 
>>ss.add_element([[8, 0], [8, 3]]) 
>>ss.add_element([[0, 3], [0, 6]]) 
>>ss.add_element([[4, 3], [4, 6]]) 
>>ss.add_element([[0, 3], [4, 3]]) 
>>ss.add_element([[4, 3], [8, 3]]) 
>>ss.add_element([[0, 6], [4, 6]]) 
>>ss.add_support_fixed(1) 

>># Add rotational spring support at node 3 
>>ss.add_support_spring(3, translation=3, k=6e3) 
>>ss.add_support_spring(5, translation=2, k=3e3) 

>># Add loads 
>>ss.q_load(q=-6, element_id=[6, 7, 8]) 
>>ss.point_load(node_id=[2, 7], Fx=8) 
>>ss.solve() 
>>ss.show_structure() 
>>ss.show_reaction_force() 
>>ss.show_axial_force() 
>>ss.show_shear_force() 
>>ss.show_bending_moment() 
>>ss.show_displacement()

 AnaStructu 01 (salida) .png 

API de software comercial

Además de estas bibliotecas de código abierto, muchos programas de análisis estructural comerciales ofrecen API (interfaz de programación de aplicaciones) que puede usar con Python para automatizar los procesos. Algunos de los más conocidos son:

  • RFEM (Dlubal)
  • Etabs (CSI)
  • Ansys
  • Abaqus
  • Tekla

En los próximos blogs, exploraremos cómo usar estas API para crear flujos de trabajo eficientes y automatizar tareas repetitivas en grandes proyectos de ingeniería.

¿Qué sigue?

Usar Python es un cambio de juego en ingeniería estructural. Si domina las habilidades para automatizar su trabajo con Python, se destaca entre la multitud. En lugar de lidiar con tareas repetitivas, Python le permite pasar más tiempo creando soluciones innovadoras.

Si desea que sus automatizaciones de Python sean más accesibles, puede usar VIKTOR para convertirlas en aplicaciones web intuitivas y compartibles que racionalizan aún más su flujo de trabajo. Con Viktor, puede integrarse con cualquier software de terceros y biblioteca de Python, aumentar la eficiencia y la colaboración dentro de los equipos de ingeniería, y ofrecer soluciones óptimas en muy poco tiempo.

¿Listo para ofrecer un mejor diseño estructural en menos tiempo? Aprende más.