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.


Guía — Ingeniería Civil

App multipágina en Streamlit + SymPy (Codespaces + Copilot)

1) Objetivo

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.

2) Estructura de proyecto

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

3) Prompt de entorno y dependencias

“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.”


4) Prompt para 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 de sympy y streamlit en st.sidebar, e hipervínculo a data/ejemplos.csv. No implementes cálculos aquí.”


5) Prompt para 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 use sympy.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 con plotly.
  • Validadores físicos: longitudes>0, módulos elásticos>0, áreas>0, unidades informativas. Documenta con docstrings y maneja excepciones sin print.”

6) Página 1 — Viga apoyada: reacciones y diagramas V–M

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, triangular w(x)=k·x+b), momentos aplicados, peso propio opcional.

  • Funcionalidad:

    1. Ensamblar equilibrio global para hallar reacciones simbólicas.
    2. Construir w(x) por tramos y obtener V(x) y M(x) mediante integración simbólica con condiciones por salto.
    3. 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 y plotly.”


7) Página 2 — Cercha plana: método de los nudos

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:

    1. Calcular reacciones de apoyo por equilibrio global.
    2. Formular para cada nudo ∑Fx=0 y ∑Fy=0, construir sistema simbólico y resolver fuerzas axiales en barras (tensión (+) y compresión (−)).
    3. 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.”


8) Página 3 — Cable: catenaria, tensiones y flecha

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:

    1. Catenaria exacta: y(x)=a·cosh((x−x0)/a)+C con a=H/w.
    2. 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 y plotly para graficar.”


9) Prompt para 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.”

10) Prompt para 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).”


11) Prompt de pruebas

“Añade tests/test_utils.py con pytest 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.”

12) Prompt de ejecución en Codespaces

“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 con st.status o st.info.”


13) Prompt de despliegue en Streamlit Community Cloud

“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.”


14) Prompt de revisión final

“Verifica que cada página:

  1. Muestre derivaciones simbólicas con sympy.latex o st.latex.
  2. Tenga validaciones de entrada con unidades en etiquetas.
  3. Genere tablas y gráficos de sensibilidad cuando aplique.
  4. Permita exportar .csv. Homogeneiza estilo visual y textos.”