Guía_1_1_Sympy_Civil: lista de prompts para que Copilot genere una app multipágina en Streamlit con SymPy para Ingeniería Civil en GitHub Codespaces. No incluyo código, solo prompts listos para pegar.
App multipágina en Streamlit + SymPy (Codespaces + Copilot)
Construir una aplicación con carpeta pages/ y tres
páginas orientadas a análisis básico de estructuras: viga, cercha plana
y cable. Resolución simbólica con SymPy y visualización
en Streamlit.
Indica a Copilot mantener esta estructura:
.
├─ app.py
├─ pages/
│ ├─ 1_ Viga_apoyada_reacciones_y_diagramas.py
│ ├─ 2_ Cercha_plana_metodo_de_nudos.py
│ └─ 3_ Cable_catenaria_tensiones_y_flecha.py
├─ utils/
│ └─ structural_helpers.py
├─ data/
│ └─ ejemplos.csv
├─ tests/
│ └─ test_utils.py
├─ requirements.txt
├─ README.md
└─ .streamlit/
└─ config.toml
“Crea
requirements.txtcon: streamlit, sympy, numpy, pandas, plotly, scipy. Crea.streamlit/config.tomlcon tema claro legible. Configura.venvcomo intérprete en Codespaces. Instala dependencias y confirma versiones de Python y paquetes. No generes aún archivos de páginas.”
app.py“Genera
app.pycon título ‘Ingeniería Civil — Estructuras con SymPy’. Incluye resumen del proyecto, lista de páginas disponibles, sección ‘Cómo usar’, verificador de versiones desympyystreamlitenst.sidebar, e hipervínculo adata/ejemplos.csv. No implementes cálculos aquí.”
utils/structural_helpers.py“Crea
utils/structural_helpers.pycon utilidades:
symbols_safe()para crear símbolos con nombres LaTeX legibles.solve_positive(system, vars_target)que usesympy.solvefiltrando soluciones reales.piecewise_load_to_expr(definicion)para convertir cargas distribuidas a expresiones por tramos.integrate_shear_moment(w_expr)que derive V(x) y M(x) desde carga w(x).plot_piecewise(expr, x, dominio)helper para graficar funciones por tramos conplotly.- Validadores físicos: longitudes>0, módulos elásticos>0, áreas>0, unidades informativas. Documenta con docstrings y maneja excepciones sin
Casos: cargas puntuales, distribuidas uniformes y triangulares por tramos.
“Crea
pages/1_ Viga_apoyada_reacciones_y_diagramas.pyque:
Entradas: longitud L, tipo de apoyos (simple-simple por defecto), lista de cargas: puntuales {P, posición a}, distribuidas w(x) por tramos (uniforme
w0, triangularw(x)=k·x+b), momentos aplicados, peso propio opcional.Funcionalidad:
- Ensamblar equilibrio global para hallar reacciones simbólicas.
- Construir w(x) por tramos y obtener V(x) y M(x) mediante integración simbólica con condiciones por salto.
- Identificar posiciones de V=0 y máximos de |M|.
Salidas: expresiones simbólicas de reacciones, V(x), M(x); evaluación numérica con parámetros dados; gráficos por tramos de V y M; tabla de máximos y posiciones.
Exportar
.csvcon entradas y resultados.Validaciones: equilibrio estático, sumatoria de reacciones positiva si cargas bajan, advertencias cuando existan cargas fuera del rango [0,L].
Usa
utils/structural_helpers.pyyplotly.”
Nudos, barras, cargas y apoyos; solución simbólica de esfuerzos axiales.
“Crea
pages/2_ Cercha_plana_metodo_de_nudos.pyque:
Entradas:
- Geometría: nodos con coordenadas (x,y) y conectividad de barras.
- Apoyos: tipo y restricciones (p. ej., pasador y rodillo).
- Cargas: puntuales en nodos.
Funcionalidad:
- Calcular reacciones de apoyo por equilibrio global.
- Formular para cada nudo ∑Fx=0 y ∑Fy=0, construir sistema simbólico y resolver fuerzas axiales en barras (tensión (+) y compresión (−)).
- Detectar mecanismos o indeterminación geométrica simple cuando el sistema no tenga solución única.
Salidas: tabla con esfuerzos de cada barra y su signo, esfuerzos máximos, y representación gráfica sencilla: color de barra según tensión/compresión y grosor proporcional a |N|.
Exportar
.csvcon nodos, barras, cargas, reacciones y esfuerzos.Validaciones: número de ecuaciones = número de incógnitas en sistemas isostáticos; advertencias si EDOF no cierra.
Incluye ejemplos tipo Pratt o Howe en
data/ejemplos.csv.”
Tendido entre apoyos a distintas alturas, carga distribuida por peso propio.
“Crea
pages/3_ Cable_catenaria_tensiones_y_flecha.pyque:
Entradas: separación horizontal entre apoyos L, diferencia de altura Δh (positivo si apoyo derecho más alto), peso por unidad horizontal w, flecha máxima objetivo opcional f_obj, tensión horizontal en el punto más bajo H opcional.
Modelos:
- Catenaria exacta: y(x)=a·cosh((x−x0)/a)+C con
a=H/w.- Parábola aproximada para flechas pequeñas como opción rápida.
Objetivos:
- Calcular perfil, flecha máxima, tensiones en apoyos (T_left, T_right) y en el punto bajo.
- Resolver H para cumplir una f_obj dada.
Salidas: deducción simbólica de relaciones geométricas, tabla de resultados, gráfico del perfil (catenaria vs parabólica si se selecciona), verificación de alturas de apoyo.
Exportar
.csvcon parámetros y resultados.Validaciones: L>0, w>0; avisos si la diferencia de alturas impide solución con la flecha objetivo.
Usa
sympypara resolver yplotlypara graficar.”
data/ejemplos.csv“Crea
data/ejemplos.csvcon 8–12 filas:
- Viga: combinaciones de cargas puntuales y distribuidas por tramos.
- Cercha: uno o dos ejemplos con nodos y barras (pequeños), y cargas nodales.
- Cable: distintos L, Δh, w y flechas objetivo. Incluye encabezados claros y una fila comentada con unidades.”
README.md“Genera
README.mdcon: propósito, requisitos, instalación y ejecución local y en Codespaces, descripción de cada página con ecuaciones base y supuestos, guía de entrada de datos, exportación de resultados, resolución de problemas típicos y referencias breves (estática, análisis de estructuras).”
“Añade
tests/test_utils.pyconpytestque valide:
integrate_shear_momentproduce expresiones finitas para casos simples.- Sistemas de nudos de cercha devuelven esfuerzos con signos consistentes en ejemplos de
data/ejemplos.csv.- Página de cable calcula flecha y tensiones positivas y coherentes. Solo pruebas rápidas sin gráficos.”
“Configura tarea para
streamlit run app.pyen el puerto recomendado y expón el puerto público. Añade al README instrucciones breves de ejecución, recarga y diagnóstico const.statusost.info.”
“Agrega al README sección ‘Despliegue’: conectar repo, seleccionar
app.py, manejo de dependencias, limpieza de caché, checklist previo y notas sobre límites de memoria/tiempo.”
“Verifica que cada página:
- Muestre derivaciones simbólicas con
sympy.latexost.latex.- Tenga validaciones de entrada con unidades en etiquetas.
- Genere tablas y gráficos de sensibilidad cuando aplique.
- Permita exportar
.csv. Homogeneiza estilo visual y textos.”