Todas las notas

Cuando un resultado cambia: versiones de resultados, nuevas verificaciones y avisos de seguridad

Cómo Stabileo te dice a cuáles de tus proyectos afecta una corrección, cómo retiene un resultado que sabe que puede estar mal hasta que la corrección exista y cómo se publica la corrección, con las catorce versiones de resultados que se integraron el 4 y el 5 de noviembre.

Cada corrección de un solver estructural cambia un número que alguien quizás ya usó. Un factor de pandeo que salía demasiado alto ahora es menor; un modelo que antes se resolvía ahora se rechaza. Una corrección que llega a la aplicación en silencio deja el número viejo en cálculos ya entregados, y el ingeniero que los hizo no tiene motivo para volver a mirarlos.

Este artículo describe qué hace Stabileo al respecto, desde el momento en que se encuentra un defecto hasta el momento en que se publica su corrección. Los ejemplos son reales: el 4 y el 5 de noviembre de 2026 llegaron a stabileo.com catorce versiones de resultados, de la 16 a la 29.

Qué es una versión de resultados

Una versión de resultados es un número entero, independiente de la versión de la aplicación. Aumenta en uno cada vez que llega al sitio un cambio que hace que el mismo modelo guardado dé números distintos, o que rechaza un modelo que antes se resolvía. Cada cambio de ese tipo se registra con:

  • la versión con la que entró, su fecha y sus pull requests;
  • a qué modelos afecta, escrito como características del modelo: un modelo plano con restricciones, un análisis de pandeo 2D con cargas a lo largo de las barras, una barra de hormigón verificada según CIRSOC 201;
  • un título y una explicación para el ingeniero en cada uno de los seis idiomas de la aplicación, con qué volver a verificar;
  • un enlace a la descripción completa: un aviso de seguridad, una nota de cambio de resultados o el registro de cambios.

Cada cálculo sella el proyecto con la versión de resultados que lo produjo, junto con la versión de la aplicación, el commit, la versión del motor, un hash del binario del motor y los análisis que se ejecutaron. El sello viaja con el proyecto: un archivo guardado, un guardado automático, una pestaña abierta o un enlace compartido lo llevan.

Por qué cambia una versión

La mayoría de los cambios son correcciones: un resultado estaba mal y ahora está bien. Algunos son rechazos: un modelo que antes daba un número ahora da en su lugar un mensaje claro, porque el número no significaba nada. Y una versión también puede deshacer: la versión 15 retiró tres cambios de la versión 14 cuyas correcciones de revisión no habían llegado al sitio con ellos, y las versiones 27 a 29 los trajeron de vuelta, revisados. A un proyecto resuelto con la versión 14 se le informan ambas cosas.

VersiónCambioTipo
16Aluminio: se verifica el corte en el eje débilCorrección
17Uniones de acero: los momentos en el eje débil ya no se ignoranRechazo
18ACI 318 y EN 1992: las barras de hormigón con torsión se marcan como no verificadasRechazo
19Las columnas de hormigón armado también se verifican con su compresión mínima (SA-2026-041)Corrección
20Generador de cargas: un piso que queda en parte bajo estructura de techo baja conserva sus cargas de área (SA-2026-033)Corrección
21Las figuras de láminas exportadas muestran el campo y la escala de la pantallaCorrección
222D: se rechaza un mecanismo detrás de un vínculo rígido o un diafragmaRechazo
23Pandeo 2D de barras cuyo esfuerzo axil varía a lo largo de ellas (SA-2026-042)Corrección
24Análisis corrotacional 3D con grandes rotaciones alrededor de varios ejes (SA-2026-037)Corrección
25Restricciones de un modelo 2D cortado de un plano Y–Z o X–Y (SA-2026-036)Corrección
26El valor determinante de una barra y la envolvente 2D leen el pico realCorrección
27–29Vuelven, revisados, tres cambios de Básico retirados por la versión 15: colapso plástico, P-Δ y el signo de las líneas de influencia de momentoCorrección
Versiones de resultados 16 a 29, integradas el 4 y el 5 de noviembre de 2026.

El aviso de nueva verificación

Cuando se abre un proyecto, la aplicación compara su sello con el registro y lista los cambios hechos desde entonces que afectan a ese modelo. A un pórtico plano con un análisis de pandeo se le informa la corrección de pandeo 2D; a un pórtico de acero sin hormigón no se le informa la verificación de columnas de hormigón armado. La lista no es una notificación que desaparece: el aviso no tiene botón de cerrar, ignora Escape y los clics fuera de él, y sólo se descarta marcando “Leí estos cambios” y eligiendo continuar o volver a correr.

Stabileo Básico abriendo un pórtico plano de los ejemplos, guardado como resuelto con la versión de resultados 15. Un diálogo titulado “Los resultados cambiaron desde que se resolvió este proyecto” lista los cambios que lo afectan, entre ellos la corrección de pandeo 2D para barras cuyo esfuerzo axil varía y el valor determinante leído en el pico real, cada uno con su explicación, y pide marcar “Leí estos cambios” antes de continuar o volver a correr el análisis.
Un pórtico plano resuelto con la versión 15, abierto hoy: sólo se listan los cambios que afectan a este modelo, cada uno con qué volver a verificar.

Hasta que el modelo se vuelve a resolver, sus resultados quedan marcados como desactualizados: un cartel lo indica, y cada informe, planilla y CSV exportado mientras tanto imprime una advertencia DESACTUALIZADO en su procedencia. “Volver a correr análisis y diseño” vuelve a resolver y, en PRO, vuelve a verificar las barras de hormigón con la armadura ya elegida; no las vuelve a diseñar, porque eso sobrescribiría las barras del ingeniero.

Desde el 4 de noviembre (#1406) el aviso explica cada cambio en el idioma del lector en los seis idiomas de la aplicación. Antes, los lectores en alemán, francés y turco recibían el título y la explicación en inglés: 66 de los 72 cambios registrados no tenían texto en esos idiomas. Cada traducción se verificó traduciéndola de vuelta al inglés sin el original y comparando el significado: números, signos, qué carga, qué verificación, lado seguro o inseguro. Esa verificación corrigió frases en los tres idiomas y mostró que cuatro explicaciones en inglés eran ambiguas en el origen; esas se corrigieron en los seis idiomas.

Antes de la corrección: advertir o rechazar

Un defecto suele encontrarse antes de corregirse, a veces días antes. Durante ese tiempo el resultado que afecta sigue en pantalla. La regla que seguimos es contenerlo primero y corregirlo después (issue #447): cada defecto abierto que puede dar un resultado equivocado recibe, en cada punto de entrada que afecta, una advertencia o un rechazo.

  • Una advertencia conserva el resultado y muestra, junto a él, qué problema conocido puede afectarlo y qué verificar a mano.
  • Un rechazo retiene el resultado y dice por qué, cuando el número puede estar equivocado por un factor grande sin forma de notarlo en la salida, como un factor que pasa a ser varias veces mayor o menor según la numeración de las barras.
Stabileo Básico con el ejemplo del mecanismo oculto: una viga de dos tramos sobre tres apoyos que se deslizan todos en horizontal, con una carga uniforme de 10 kN/m. Después de calcular no se dibuja ningún diagrama; un mensaje rojo en la esquina dice que la estructura es inestable, un mecanismo, porque ningún apoyo restringe el movimiento horizontal, con un botón para ver el análisis cinemático.
La misma regla fuera del inventario: un modelo que es un mecanismo recibe un mensaje que dice por qué, y ningún número.

La contención se lleva en un inventario que lista cada problema de seguridad abierto, su advertencia o rechazo, la condición que lo dispara y el test que muestra que se dispara, o la evidencia de que no hace falta contención. Un test mantiene de acuerdo el inventario y la lista de problemas conocidos del motor, y un trabajo programado compara el inventario con los issues abiertos en GitHub. Las condiciones son estrechas a propósito: en los 39 modelos del corpus de resultados, cada advertencia se dispara como mucho en dos. El pull request que completa este inventario para cada issue abierto (#807) se integró el 5 de noviembre, antes de la versión 0.5.0.

Una contención termina cuando entra su corrección, y termina en el mismo pull request. Esta semana #1295 quitó el rechazo de los cortes de 3D a 2D que flexionaban barras alrededor del eje equivocado, porque el corte ahora está bien; #1301 reemplazó una advertencia en cada cálculo corrotacional 3D por una que se dispara sólo cuando el extremo de una barra gira más de 0,02 rad respecto de su cuerda, donde la aproximación que queda puede importar.

Las correcciones de esta semana

Pandeo 2D con cargas axiales a lo largo de las barras (#1324, versión 23). La rigidez geométrica de cada barra usaba su esfuerzo axil medio. Donde la compresión crece hacia el extremo que más gira, como bajo gravedad en un cabio o con una carga axial puntual dentro del tramo, el factor de pandeo salía demasiado alto y nada advertía sobre eso. Ahora cada barra integra su esfuerzo axil variable.

CasoExactoAntesAhora
Ménsula, compresión que crece de 0 en el apoyo hasta P en la punta3,4774,972 (+43 %)3,542 (+1,9 %)
Ménsula, empuje P en la punta y una carga axial opuesta P a mitad de la luz: compresión P sólo desde la mitad hasta la punta2,9614,972 (+68 %)3,056 (+3,2 %)
Columna pesada de Euler, compresión mayor en el apoyo7,8374,972 (−37 %)7,889 (+0,7 %)
Una barra, λP·L²/EI. Fuente: SA-2026-042.

Los pocos puntos porcentuales que quedan son el error de discretización habitual de un elemento por barra, y bajan al dividir la barra. P-Delta sigue usando el esfuerzo axil medio, y el pandeo 3D con cargas a lo largo de las barras conserva su advertencia hasta su propia corrección.

Análisis corrotacional 3D (#1301, versión 24). Las rotaciones de los extremos de las barras se restaban como vectores de rotación, lo que es exacto sólo cuando todas las rotaciones comparten un eje. La curva a 45° de Bathe–Bolourchi daba un 1,3 % fuera de su solución publicada, y refinar la malla la alejaba de las referencias, en lugar de acercarla. Ahora las rotaciones se componen como matrices de rotación: la misma curva queda a menos de 0,4 % de dos soluciones publicadas independientes y converge entre ellas. Se rechaza una barra cuyos extremos giran más de 0,9π uno respecto del otro, porque el resultado no puede decir de qué vuelta completa se trata.

Un mecanismo oculto en 2D (#1298, versión 22). Un vínculo rígido o un diafragma desde un nudo cuyas barras están todas articuladas hasta el extremo de una barra de reticulado es un mecanismo, pero el solver lo sostenía con un resorte artificial minúsculo y devolvía desplazamientos de cientos de kilómetros, que el certificado luego certificaba. Ahora un modelo así se rechaza. La corrección no propuso aviso de seguridad para este: en los casos encontrados los desplazamientos eran absurdos, del orden de 10⁵ m, y venían con la advertencia de la aplicación de un probable mecanismo. Es un juicio sobre esos casos, no una prueba de que ningún resultado afectado pareciera razonable. Lo que estaba mal era la afirmación del certificado, y la entrada de la versión se lo informa a los proyectos que afecta. Después se encontró un caso similar a través de un conector en lugar de un vínculo rígido (#1414); su corrección (#1415) se integró el 5 de noviembre.

Corte de un modelo 3D a 2D (#1295). El corte usaba la inercia del eje fuerte de cada sección para todas las barras, así que las columnas en un corte Y–Z, las vigas en un corte X–Y y las barras giradas 90° flexionaban alrededor del eje equivocado: un pórtico de IPN 300 en el plano Y–Z se desplazaba lateralmente 0,96 mm en 2D contra 13,0 mm en 3D. Ahora cada barra flexiona en 2D alrededor del eje en que flexiona en 3D, y se rechazan los cortes que un modelo plano no puede representar. Esta corrección no tiene versión de resultados, y es deliberado: un modelo 2D guardado se resuelve exactamente igual que antes, porque lo que estaba mal era el modelo que producía el corte. El aviso de nueva verificación no puede llegar a esos archivos, así que el aviso de seguridad (SA-2026-035) es el canal: volvé a cortar el modelo desde 3D, o resolvelo en 3D.

Después de la corrección: avisos de seguridad

Un defecto que pudo producir un resultado equivocado o del lado inseguro en una versión publicada recibe un aviso de seguridad: qué estaba mal, qué modelos afecta, cómo reconocerlos, qué volver a verificar en los resultados ya entregados y el caso que lo reproduce. Los avisos de las correcciones de esta semana ya están redactados como borradores en el repositorio y se publican con la versión 0.5.0, como SA-2026-001 a 024 lo fueron con 0.3.0 y 0.4.0.

AvisoQué estaba malSeveridad
SA-2026-033El generador de cargas omitía las cargas de área de un piso cuando una barra baja quedaba sobre parte de élAlta
SA-2026-034La verificación de equilibrio daba coincidencia en casos cuya verificación dejaba cargas afueraMedia
SA-2026-035El corte de 3D a 2D flexionaba barras alrededor del eje equivocado de la secciónAlta
SA-2026-036El corte de 3D a 2D en Y–Z o X–Y leía las restricciones como si el pórtico estuviera en X–ZAlta
SA-2026-037El análisis corrotacional 3D restaba vectores de rotaciónMedia
SA-2026-040Las verificaciones ACI 318 y EN 1992 aprobaban barras de hormigón sin verificar su torsiónAlta
SA-2026-041La verificación de columnas de hormigón armado combinaba el momento máximo sólo con la compresión máximaAlta
SA-2026-042El pandeo 2D sobrestimaba el factor de las barras cuya compresión crece a lo largo de ellasAlta
Avisos redactados para las correcciones integradas el 4 y el 5 de noviembre de 2026.
La página del registro de cambios de Stabileo en el sitio web: primero la entrada más nueva, del 6 de noviembre, sobre resultados equivocados corregidos en verificaciones de diseño y dinámica, que empieza por sus cambios en el motor, y a la izquierda los filtros por área.
La página del registro de cambios, lo más nuevo primero, que abre con las correcciones de esta semana que cambian resultados.

Lo que esto no hace

  • El aviso sólo conoce los cambios registrados. Un defecto que todavía no se encontró no está en ningún registro; para eso está la verificación detrás del solver, y eso es lo que cubre la contención una vez que se encuentra algo.
  • Lee las características del modelo desde el archivo guardado, y cuando no puede determinarlas, cuenta la característica como presente: un aviso de más es mejor que un cambio oculto al modelo que afecta.
  • No puede seguir un número una vez que sale de la aplicación, en un plano, una planilla o un informe ya entregado. Para eso está el aviso de seguridad.
  • Contenido, rechazado o corregido, verificar el resultado antes de firmarlo sigue siendo responsabilidad del ingeniero.
Todas las notas

Seguí leyendo