Cómo se verifican los motores de cálculo
1. La regla de fondo: la IA no calcula
El asistente conversacional interpreta el problema, arma la entrada y redacta. El cálculo lo hace un servicio aparte —determinista, sin modelo de lenguaje de por medio— y el resultado vuelve tal cual. Es una separación deliberada: un modelo de lenguaje es excelente leyendo un perfil estratigráfico mal tipeado y pésimo garantizando que una raíz cuadrada esté bien.
Esa separación necesita dos guardas, porque por sí sola no basta:
- Si el motor no responde, no hay número. Los clientes devuelven un fallo explícito en vez de un valor, y el modelo tiene prohibido rellenar el hueco.
- Un verificador revisa la respuesta antes de entregarla. Extrae los valores puntuales de diseño (capacidad admisible, factores de seguridad) y comprueba que cada uno tenga un motor detrás; si no lo tiene, la respuesta se marca.
2. Manual de verificación — caso por caso
Este es el registro vivo: cada caso tiene entradas completas, un valor esperado de fuente citada, el valor que el motor devuelve hoy y una tolerancia. El documento se regenera corriendo los casos, no se edita; si un caso sale de tolerancia, la regeneración falla en vez de publicar un manual que miente. Los tipos son tres: solución cerrada (el álgebra de la ecuación publicada, hecha a mano), ejemplo publicado (un caso resuelto en la fuente) y software externo.
17 verificaciones registradas · 0 fuera de tolerancia.
Consolidación 1D de Terzaghi + drenes verticales
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
sc_primaria_8_subcapas_mano · resumen.asentamiento.Sc_primaria_mm | solución cerrada | 287.9 | 287.9 | 0 | ±1.5 | PASS |
| Fuente Suma manual de 8 subcapas de 0.5 m (Terzaghi 1D; Taylor 1948): Sc = 0.075·Σlog10((18z+50)/18z) = 287.9 mm | ||||||
barron_hansbo_f_ideal_mano · resumen.drenes.F_n | solución cerrada | 2.422 | 2.422 | 0 | ±0.01 | PASS |
| Fuente Barron 1948 / Hansbo 1981 a mano: s=1.5 triangular → de=1.575, n=23.9, F=ln(n)−0.75=2.422 | ||||||
Filtración y abatimiento — Dupuit / Thiem
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
dupuit_libre_mano · (retorno) | solución cerrada | 0.008498 | 0.008498 | 1.753e-07 | ±2e-05 | PASS |
| Fuente Dupuit (acuífero libre) a mano: Q = πk(H²−hd²)/ln(R/re) = 8.498e-3 m³/s | ||||||
thiem_confinado_mano · (retorno) | solución cerrada | 0.003355 | 0.003356 | 8.061e-07 | ±1e-05 | PASS |
| Fuente Thiem (acuífero confinado) a mano: Q = 2πkb·s/ln(R/re) = 3.355e-3 m³/s | ||||||
Losa de fundación — Westergaard/Hetényi
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
columna_interior_westergaard_mano · resumen.columna_interior.w_max_mm | solución cerrada | 2.66 | 2.66 | 0 | ±0.03 | PASS |
columna_interior_westergaard_mano · resumen.columna_interior.M_max_knm_m | solución cerrada | 119.25 | 119.25 | 0 | ±1 | PASS |
columna_interior_westergaard_mano · resumen.columna_interior.sigma_flexion_mpa | solución cerrada | 7.95 | 7.95 | 0 | ±0.05 | PASS |
| Fuente Westergaard 1926 (radio equivalente, momento interior) + w=P/(8·ks·l²), álgebra a mano | ||||||
Mejoramiento de suelos — columnas de grava (Priebe)
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
priebe_n0_carta · resumen.priebe.n0 | ejemplo publicado | 2.18 | 2.18 | 0 | ±0.005 | PASS |
| Fuente Priebe 1995 (forma cerrada de n0), contrastado con su carta publicada: A/Ac=5, φc=40° → n0≈2.2 (cerrado: 2.180) | ||||||
Pilote bajo carga lateral — soluciones cerradas de Broms
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
broms_corto_fijo_cohesivo_mano · (retorno) | solución cerrada | 1181.25 | 1181.25 | 0 | ±0.001 | PASS |
| Fuente Broms 1964a (cohesivo, cabeza fija, pilote corto): Hu = 9·Su·D·(L−1.5D) = 1181.25 kN | ||||||
broms_corto_libre_granular_mano · (retorno) | solución cerrada | 448.615 | 448.6154 | 0.0003846 | ±0.02 | PASS |
| Fuente Broms 1964b (granular, cabeza libre, pilote corto): Hu = 0.5·γ·D·L³·Kp/(e+L) = 448.6 kN | ||||||
Respuesta de sitio 1D — función de transferencia SH y Vs30
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
vs30_promedio_armonico_mano · (retorno) | solución cerrada | 257.1 | 257.1429 | 0.0429 | ±0.2 | PASS |
| Fuente Definición de Vs30 (promedio armónico, normas sísmicas) a mano: 30/(10/150+20/400) = 257.1 m/s | ||||||
amplificacion_base_rigida_cerrada · (retorno) | solución cerrada | 12.732 | 12.7353 | 0.003302 | ±0.35 | PASS |
| Fuente Capa uniforme sobre base rígida (Kramer 1996): H(f0) = 2/(π·ξ) = 12.73 con ξ=5% | ||||||
Socavación de puentes — HEC-18 5ª ed. (FHWA-HIF-12-003)
| Caso | Tipo | Esperado | Motor | Error | Tolerancia | Estado |
|---|---|---|---|---|---|---|
hec18_pila_contraccion_estribo_mano · resumen.pila.ys_local_m | solución cerrada | 3.015 | 3.01 | 0.005 | ±0.011 | PASS |
hec18_pila_contraccion_estribo_mano · resumen.contraccion.ys_contraccion_m | solución cerrada | 1.05 | 1.05 | 0 | ±0.01 | PASS |
hec18_pila_contraccion_estribo_mano · resumen.estribo.ys_local_m | solución cerrada | 5.22 | 5.22 | 0 | ±0.01 | PASS |
| Fuente Cálculo cerrado a mano: CSU (pila), Laursen lecho vivo (contracción), Froehlich 1989 (estribo); HEC-18 5ª ed. | ||||||
hec18_lecho_grueso_ejemplo_fhwa · resumen.pila.ys_local_m | ejemplo publicado | 1.86 | 1.86 | 0 | ±0.02 | PASS |
| Fuente FHWA-HIF-12-003 (HEC-18 5ª ed.) §7.11, ejemplo resuelto del manual: H=2.16, ys=6.1 ft ≈ 1.86 m | ||||||
hire_estribo_largo_mano · resumen.estribo.ys_local_m | solución cerrada | 4.89 | 4.89 | 0 | ±0.01 | PASS |
| Fuente HIRE Eq. 8.2 (HEC-18 5ª ed.) a mano: ys = 4·y1·Fr^0.33·(K1/0.55)·K2 = 4.888 m | ||||||
3. El motor de taludes contra un problema publicado
El motor de equilibrio límite tiene su propia validación, más profunda, porque es el que más se usa y el que más formas tiene de estar sutilmente mal. Se contrasta en tres niveles: contra un oráculo de código abierto sobre el círculo idéntico (pyslope, tolerancia <1%), contra referees comerciales publicados (Hyrcan v1.75 y Slide v6.0, ~5%), y contra un problema resuelto de la literatura: Fredlund & Krahn (1977), el caso que Rocscience usa como Verification Problem #21.
Esta última es la tabla que vale la pena mirar, porque cubre los cuatro métodos y las dos condiciones de napa:
| Caso | Método | TerzaghAI | Fredlund & Krahn (1977) | Error | θ / λ | |
|---|---|---|---|---|---|---|
| Seco | Ordinary | 1.9264 | 1.928 | -0.09% | — | ✅ |
| Seco | Bishop | 2.0747 | 2.080 | -0.25% | — | ✅ |
| Seco | Spencer | 2.0708 | 2.073 | -0.10% | θ=14.5° | ✅ |
| Seco | M-P | 2.0705 | 2.076 | -0.27% | λ=0.325 | ✅ |
| Ru=0.25 | Ordinary | 1.6061 | 1.607 | -0.06% | — | ✅ |
| Ru=0.25 | Bishop | 1.7584 | 1.766 | -0.43% | — | ✅ |
| Ru=0.25 | Spencer | 1.7564 | 1.761 | -0.26% | θ=14.1° | ✅ |
| Ru=0.25 | M-P | 1.7558 | 1.764 | -0.47% | λ=0.315 | ✅ |
Además de este contraste, el motor se ancla contra un caso de la literatura que ninguno de los anteriores ejercita: el dique de James Bay (Quebec) — cuatro estratos, berma a media altura y un mecanismo profundo tangente al techo del till. Con los parámetros de la fuente primaria, el motor da 1,451 contra los 1,455 de El-Ramly (2001) y los 1,453 de Christian et al. (1994): −0,27% y −0,14%. Ese caso destapó dos defectos reales del motor, y la historia está contada en el artículo dedicado.
4. Lo que la verificación destapó
Un manual que nunca encontró nada no se usó de verdad. Cada uno de estos defectos lo sacó a la luz el propio proceso de contrastar contra una fuente externa — y quedó corregido antes de escribir esta página, con la firma que lo delató:
- Bishop con napa, error de formulación. La forma reducida usaba la subpresión sobre la base inclinada donde la ecuación canónica lleva el ancho horizontal. La firma era llamativa: Fellenius —mucho más aproximado— quedaba a −0,06% del referee mientras Bishop, que debería ser mejor, quedaba a −3,80%. Corregido, Bishop cierra a −0,43%. Una versión anterior de la documentación racionalizaba ese −3,80% como «desviación esperada del método simplificado».
- Licuefacción por CPT usando constantes de SPT. La resistencia cíclica arrastraba una constante y un denominador propios del ensayo SPT. Los casos CPT subieron 20-25% al corregirse; los SPT no cambiaron.
- La caja de búsqueda de taludes quedaba corta por un factor de 3 a 4 cuando un estrato blando se apoya sobre uno rígido, porque el radio se calibraba con la altura del talud y el mecanismo lo fija la estratigrafía de fundación. Devolvía un factor de seguridad más alto que el real — del lado inseguro. Contado en el artículo de James Bay.
- El dovelado circular no cortaba en las discontinuidades. Una dovela a caballo de un contacto toma la resistencia de su punto medio y el peso de un terreno que cambia de pendiente dentro de ella. No produce un error que se vaya con más dovelas: produce oscilación — ±0,7% todavía con 150 dovelas.
Ninguno de estos cuatro apareció mirando el motor por fuera. Aparecieron porque había un número externo con el que discrepar.
5. Los límites de esta verificación
Lo anterior sostiene el rigor del proceso; esto es hasta dónde llega hoy. Un manual de verificación que no dice esto no es más confiable — es menos legible:
- Hay ~85 casos marcados para contraste manual contra software comercial que están pendientes de ejecución registrada. Están identificados uno por uno en el repositorio; no se cuentan como cobertura hasta que se corran y quede el registro.
- La cobertura de la batería de regresión es desigual (ver el reparto abajo). Un motor con 7 casos está menos blindado que uno con 64.
- Verificado no es firmable. Que un motor reproduzca un ejemplo publicado dentro de tolerancia no convierte su salida en un informe de ingeniería. Todo entregable de TerzaghAI es un borrador que debe ser revisado, adaptado y firmado por un profesional habilitado en el país del proyecto, que asume la responsabilidad técnica. Está en los Términos y no es una formalidad.
- Una tolerancia no es un margen de seguridad. Los errores de las tablas miden la distancia a una referencia, con las entradas de esa referencia. No dicen nada sobre la incertidumbre de sus parámetros de terreno, que casi siempre domina.
6. Batería de regresión: 478 casos, 20 motores
La verificación de las secciones 2 y 3 dice que el motor está bien. La batería de regresión dice que sigue estando bien mañana. Son 478 casos generados de forma determinista sobre los 20 motores, con tres capas independientes:
- Sanidad física, caso a caso e independiente del valor exacto: FS>0, capacidad admisible en rango realista y nunca mayor que la última, capacidad sísmica no menor que la estática, índice de potencial de licuefacción dentro de su rango.
- Monotonía (38 cadenas): más golpes de SPT ⇒ más capacidad; más ángulo de fricción o cohesión ⇒ más factor de seguridad; más coeficiente sísmico ⇒ menos factor de seguridad pseudoestático; napa más profunda ⇒ más capacidad. Son las direcciones que la física obliga, y se verifican aunque el valor cambie.
- No-regresión byte a byte: la salida normalizada de cada caso queda fotografiada. Cualquier cambio numérico posterior rompe la batería y obliga a justificarlo antes de aceptarlo.
La cobertura no es pareja, y decirlo importa más que el total: fundaciones 64 casos · licuefacción 62 · pilotes 59 · terraplenes 59 · taludes 59 · muros 33 · elementos finitos 21 · pantallas 20 · mejoramiento 13 · peligro sísmico 10 · consolidación 10 · roca 8 · socavación 8 · anclajes 8 · pilote lateral 8 · respuesta de sitio 8 · losas 7 · expansivos 7 · filtración 7 · pavimentos 7.
Las tablas de las secciones 2 y 3 se generan desde los documentos de verificación del repositorio; no se escriben a mano, y una prueba automática falla si quedan desactualizadas.
¿Encontraste algo que no cuadra? Escríbenos a kuadrante@kuadrante.cl — un contraejemplo con sus entradas es lo más útil que podemos recibir.