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.txt
con: streamlit, sympy, numpy, pandas, plotly, scipy. Crea.streamlit/config.toml
con tema claro legible. Configura.venv
como 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.py
con 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 desympy
ystreamlit
enst.sidebar
, e hipervínculo adata/ejemplos.csv
. No implementes cálculos aquí.”
utils/structural_helpers.py
“Crea
utils/structural_helpers.py
con utilidades:
symbols_safe()
para crear símbolos con nombres LaTeX legibles.solve_positive(system, vars_target)
que usesympy.solve
filtrando 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.py
que:
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
.csv
con 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.py
yplotly
.”
Nudos, barras, cargas y apoyos; solución simbólica de esfuerzos axiales.
“Crea
pages/2_ Cercha_plana_metodo_de_nudos.py
que:
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
.csv
con 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.py
que:
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
.csv
con parámetros y resultados.Validaciones: L>0, w>0; avisos si la diferencia de alturas impide solución con la flecha objetivo.
Usa
sympy
para resolver yplotly
para graficar.”
data/ejemplos.csv
“Crea
data/ejemplos.csv
con 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.md
con: 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.py
conpytest
que valide:
integrate_shear_moment
produce 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.py
en el puerto recomendado y expón el puerto público. Añade al README instrucciones breves de ejecución, recarga y diagnóstico const.status
ost.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.latex
ost.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.”