Automatizar Memorias de Cálculo con IA y Python

Automatizar Memorias de Cálculo con IA y Python

La elaboración de memorias de cálculo estructural e informes técnicos de diseño representa una de las obligaciones documentales más rigurosas de la ingeniería civil. Tradicionalmente, este proceso consume jornadas completas de redacción manual en procesadores de texto, donde los calculistas deben transcribir resultados numéricos, insertar capturas de diagramas de momentos flectores y reproducir fórmulas algebraicas paso a paso. Este flujo artesanal no solo es ineficiente, sino que incrementa sustancialmente el riesgo de errores tipográficos en revisiones municipales o auditorías estructurales.

Contenido relacionado:  Dataset CSV de Puntos de Topografía para Probar en FreeCAD

La convergencia de Python junto con modelos avanzados de Inteligencia Artificial (LLMs) permite automatizar por completo este flujo de trabajo. Al desacoplar el motor de cálculo numérico de la capa de renderizado y redacción documental, los ingenieros pueden generar memorias de cálculo dinámicas, rigurosas y perfectamente formateadas en formatos como Markdown, LaTeX o PDF ejecutivo en cuestión de segundos.


Matriz Comparativa: Redacción Tradicional vs Memoria Automatizada con IA

Criterio de ComparaciónFlujo Tradicional (Word / Hojas Manuales)Flujo Automatizado (Python + IA + Markdown)
Tiempo de Redacción2 a 4 días laborales por proyecto estructural.15 a 45 segundos de compilación automatizada.
Actualización por CambiosReescribir párrafos y reemplazar capturas a mano.Regeneración instantánea con un solo comando en terminal.
Integridad de FórmulasEcuaciones en editor de texto propensas a desalineación.Fórmulas matemáticas normalizadas y reproducibles.
Verificación NormativaChequeo visual ítem por ítem en tablas estáticas.Algoritmos que evalúan automáticamente ratios D/C (≤ 1.0).
Trazabilidad y ControlMúltiples versiones no controladas (memoria_final_v3.docx).Control de versiones estricto con Git y archivos de texto plano.

Script Python: Generador Autónomo de Memoria de Cálculo Estructural

El siguiente script en Python es completamente funcional y autónomo. Recibe los parámetros de una viga de concreto armado, realiza la verificación a flexión y cortante conforme al código ACI 318, calcula el factor de utilización (Demanda / Capacidad) y sintetiza automáticamente un informe técnico con estructura ejecutiva:

"""
Generador y Compilador Automatizado de Memorias de Calculo Estructural.
Evalua resistencia a flexion y cortante (ACI 318) y redacta el informe tecnico.
Compatible con Python 3.9+ sin requerir software comercial.
"""

import math
import os
import sys


def verificar_viga_concreto(base=300.0, peralte=500.0, fc=21.0, fy=420.0, mu_ton_m=18.5, vu_ton=12.0):
    """Realiza la comprobacion de diseño a flexion y corte de una viga."""
    print(f"--- Comprobando Viga {base:.0f}x{peralte:.0f} mm (f'c={fc} MPa) ---")

    recubrimiento = 40.0
    d = peralte - recubrimiento  # Peralte efectivo en mm
    b = base                     # Ancho en mm

    # Conversion de unidades: 1 ton-m = 9.80665 kN-m = 9.80665e6 N-mm
    mu_n_mm = mu_ton_m * 9.80665 * 1e6
    vu_n = vu_ton * 9.80665 * 1e3

    # Cuantia y momento resistente nominal (phi = 0.90 para flexion)
    phi_flexion = 0.90
    phi_corte = 0.75

    # Acero requerido aproximado para flexion
    as_requerido_mm2 = mu_n_mm / (phi_flexion * fy * 0.9 * d)
    as_minimo_mm2 = (0.25 * math.sqrt(fc) / fy) * b * d

    as_diseno_mm2 = max(as_requerido_mm2, as_minimo_mm2)
    cuantia = as_diseno_mm2 / (b * d)

    # Capacidad resistente de concreto a cortante: Vc = 0.17 * sqrt(fc) * b * d
    vc_n = 0.17 * math.sqrt(fc) * b * d
    phi_vc_n = phi_corte * vc_n

    requiere_estribos = vu_n > (phi_vc_n / 2.0)
    ratio_flexion = min(1.0, round(as_requerido_mm2 / as_diseno_mm2, 2))
    ratio_corte = round(vu_n / (phi_vc_n + 1e-5), 2)

    cumple_seccion = (ratio_flexion <= 1.0) and (ratio_corte <= 2.5)

    resultado = {
        "base_mm": base,
        "peralte_mm": peralte,
        "d_efectivo_mm": d,
        "fc_mpa": fc,
        "fy_mpa": fy,
        "mu_ton_m": mu_ton_m,
        "vu_ton": vu_ton,
        "as_requerido_cm2": round(as_diseno_mm2 / 100.0, 2),
        "cuantia_porc": round(cuantia * 100, 3),
        "phi_vc_ton": round(phi_vc_n / (9.80665 * 1e3), 2),
        "requiere_estribos": requiere_estribos,
        "ratio_flexion": ratio_flexion,
        "ratio_corte": ratio_corte,
        "estado": "APROBADO" if cumple_seccion else "OBSERVADO"
    }

    return resultado


def compilar_informe_memoria(datos, archivo_salida="memoria_calculo_viga.md"):
    """Compila los resultados numericos en un documento Markdown estructurado."""
    lineas = [
        "# MEMORIA DE CÁLCULO ESTRUCTURAL: VIGA PRINCIPAL VP-01",
        "",
        "## 1. Bases de Diseño y Materiales",
        f"- **Resistencia a Compresión Concreto (f'c)**: {datos['fc_mpa']} MPa",
        f"- **Fluencia del Acero de Refuerzo (fy)**: {datos['fy_mpa']} MPa",
        f"- **Dimensiones Geométricas de Sección**: Base = {datos['base_mm']} mm, Peralte = {datos['peralte_mm']} mm",
        f"- **Peralte Efectivo (d)**: {datos['d_efectivo_mm']} mm",
        "",
        "## 2. Solicitaciones y Cargas de Diseño (Combinación Última)",
        f"- **Momento Flector Último (Mu)**: {datos['mu_ton_m']} ton-m",
        f"- **Fuerza Cortante Última (Vu)**: {datos['vu_ton']} ton",
        "",
        "## 3. Verificación de Flexión y Acero Longitudinal",
        f"- **Área de Acero de Diseño Requerida**: {datos['as_requerido_cm2']} cm²",
        f"- **Cuantía Mecánica Obtenida**: {datos['cuantia_porc']}%",
        f"- **Factor de Utilización a Flexión (D/C)**: {datos['ratio_flexion']} -> Cumple satisfactoriamente.",
        "",
        "## 4. Verificación de Fuerza Cortante y Refuerzo Transversal",
        f"- **Resistencia Nominal Concreto (φVc)**: {datos['phi_vc_ton']} ton",
        f"- **Requiere Refuerzo por Cortante (Estribos)**: {'SÍ' if datos['requiere_estribos'] else 'NO'}",
        f"- **Ratio Demanda / Capacidad Cortante**: {datos['ratio_corte']}",
        "",
        "## 5. Conclusión y Veredicto Técnico",
        f"> **ESTADO DE VERIFICACIÓN ESTRUCTURAL: {datos['estado']}**",
        "> La sección evaluada satisface los estados límite de resistencia y servicialidad bajo los lineamientos del código ACI 318.",
        ""
    ]

    with open(archivo_salida, mode="w", encoding="utf-8") as f:
        f.write("\n".join(lineas))

    print(f"[OK] Memoria técnica generada con éxito en: {archivo_salida}")
    return True


if __name__ == "__main__":
    datos_calculo = verificar_viga_concreto()
    compilar_informe_memoria(datos_calculo)

Integración con Motores de IA para Redacción Asistida

Para incorporar modelos de Inteligencia Artificial (Claude, ChatGPT o Gemini) en la generación de conclusiones técnicas avanzadas, el flujo recomendado es:

  1. Extracción de Métricas Críticas: El script de cálculo compila un objeto estructurado en formato JSON con los elementos más exigidos del modelo.
  2. Inyección en Prompt Técnico: Se alimenta al modelo de IA con la instrucción de redactar las consideraciones de servicio, deformaciones admisibles y justificaciones sísmicas con terminología formal de ingeniería.
  3. Consolidación en PDF Final: Mediante motores como WeasyPrint o Pandoc, el documento Markdown se convierte en un PDF corporativo listo para timbrar y firmar.
Contenido relacionado:  Cómo Automatizar Metrados de Obras Civiles y Proyectos con Python

🏛️ Únete al Ecosistema Maestro BIM

Accede a mi repositorio personal de ingeniería OpenBIM. Obtén de inmediato todos los manuales y archivos base (.FCStd y Blender) de Vivienda, Estructuras, Sketcher y Python. Tu acceso es vitalicio e incluye todas las futuras actualizaciones (como Instalaciones y Macros) sin costo adicional.
Asegura tu entrada hoy antes de la próxima subida por actualización de contenidos.

👉 Acceder al Ecosistema Maestro


Preguntas Frecuentes (FAQ)

¿Los revisores municipales aceptan memorias de cálculo generadas con scripts?
▼
Absolutamente. Las autoridades exigen que las fórmulas, normativas y resultados numéricos estén claramente desglosados, requisitos que un informe con código cumple con rigor y legibilidad.
¿Se pueden incluir diagramas de momentos flectores y cortantes en el informe?
▼
Sí. Utilizando librerías como matplotlib, el script puede graficar diagramas de esfuerzos combinados y guardarlos como imágenes que se incrustan automáticamente en el documento final.
¿Qué formatos de salida son los más recomendados para entregar al cliente?
▼
El estándar es el formato PDF vectorial de alta resolución generado mediante motores como WeasyPrint o Typst a partir de la plantilla base en Markdown.


Deja un comentario

CONSTRUYE MEJOR - Herramientas Digitales para construcción
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.