Todas as notas

Quando um resultado muda: versões de resultados, novas verificações e avisos de segurança

Como o Stabileo diz a quais dos seus projetos uma correção se refere, como segura um resultado que sabe que pode estar errado até a correção existir e como a correção é publicada, com as catorze versões de resultados incorporadas em 4 e 5 de novembro.

Toda correção em um solver estrutural muda um número que alguém talvez já tenha usado. Um fator de flambagem que saía alto demais agora é menor; um modelo que antes era resolvido agora é recusado. Uma correção que chega ao aplicativo em silêncio deixa o número antigo em cálculos já entregues, e o engenheiro que os produziu não tem motivo para olhar de novo.

Este artigo descreve o que o Stabileo faz a respeito, desde o momento em que um defeito é encontrado até o momento em que sua correção é publicada. Os exemplos são reais: em 4 e 5 de novembro de 2026, catorze versões de resultados, da 16 à 29, chegaram a stabileo.com.

O que é uma versão de resultados

Uma versão de resultados é um número inteiro, separado da versão do aplicativo. Ela sobe uma unidade cada vez que chega ao site uma mudança que faz o mesmo modelo salvo dar números diferentes, ou que recusa um modelo que antes era resolvido. Toda mudança desse tipo é registrada com:

  • a versão com que entrou, sua data e seus pull requests;
  • quais modelos ela afeta, escritos como características do modelo: um modelo plano com restrições, uma análise de flambagem 2D com cargas ao longo das barras, uma barra de concreto verificada pela CIRSOC 201;
  • um título e uma explicação para o engenheiro em cada um dos seis idiomas do aplicativo, com o que verificar de novo;
  • um link para a descrição completa: um aviso de segurança, uma nota de mudança de resultados ou o registro de mudanças.

Cada cálculo carimba o projeto com a versão de resultados que o produziu, junto com a versão do aplicativo, o commit, a versão do motor, um hash do binário do motor e as análises que foram executadas. O carimbo viaja com o projeto: um arquivo salvo, um salvamento automático, uma aba aberta ou um link compartilhado, todos o levam.

Por que uma versão muda

A maioria das mudanças são correções: um resultado estava errado e agora está certo. Algumas são recusas: um modelo que antes dava um número agora dá, em vez disso, uma mensagem clara, porque o número não significava nada. E uma versão também pode desfazer: a versão 15 retirou três mudanças da versão 14 cujas correções de revisão não tinham chegado ao site junto com elas, e as versões 27 a 29 as trouxeram de volta, revisadas. Um projeto resolvido com a versão 14 é informado das duas coisas.

VersãoMudançaTipo
16Alumínio: o cisalhamento no eixo fraco é verificadoCorreção
17Ligações de aço: os momentos no eixo fraco não são mais ignoradosRecusa
18ACI 318 e EN 1992: barras de concreto com torção são marcadas como não verificadasRecusa
19Pilares de concreto armado também são verificados com sua menor compressão (SA-2026-041)Correção
20Gerador de cargas: um piso parcialmente sob estrutura de cobertura baixa mantém suas cargas de área (SA-2026-033)Correção
21As figuras de cascas exportadas mostram o campo e a escala da telaCorreção
222D: um mecanismo atrás de um vínculo rígido ou de um diafragma é recusadoRecusa
23Flambagem 2D de barras cujo esforço normal varia ao longo delas (SA-2026-042)Correção
24Análise corrotacional 3D com grandes rotações em torno de vários eixos (SA-2026-037)Correção
25Restrições de um modelo 2D cortado de um plano Y–Z ou X–Y (SA-2026-036)Correção
26O valor determinante de uma barra e a envoltória 2D leem o pico realCorreção
27–29Voltam, revisadas, três mudanças do Básico retiradas pela versão 15: colapso plástico, P-Δ e o sinal das linhas de influência de momentoCorreção
Versões de resultados 16 a 29, incorporadas em 4 e 5 de novembro de 2026.

O aviso de nova verificação

Quando um projeto é aberto, o aplicativo compara seu carimbo com o registro e lista as mudanças feitas desde então que afetam esse modelo. Um pórtico plano com uma análise de flambagem é informado da correção de flambagem 2D; um pórtico de aço sem concreto não é informado da verificação de pilares de concreto armado. A lista não é uma notificação que desaparece: o aviso não tem botão de fechar, ignora Escape e cliques fora dele, e só é dispensado marcando “Li estas mudanças” e escolhendo continuar ou executar novamente.

Stabileo Básico abrindo um pórtico plano dos exemplos, salvo como resolvido com a versão de resultados 15. Uma caixa de diálogo intitulada “Os resultados mudaram desde a última vez que este projeto foi resolvido” lista as mudanças que o afetam, entre elas a correção de flambagem 2D para barras cujo esforço normal varia e o valor determinante lido no pico real, cada uma com sua explicação, e pede para marcar “Li estas mudanças” antes de continuar ou executar novamente a análise.
Um pórtico plano resolvido com a versão 15, aberto hoje: só são listadas as mudanças que afetam este modelo, cada uma com o que verificar de novo.

Até o modelo ser resolvido de novo, seus resultados ficam marcados como desatualizados: uma faixa avisa, e cada relatório, planilha e CSV exportado nesse meio-tempo imprime uma advertência DESATUALIZADO na sua procedência. “Executar novamente análise e dimensionamento” resolve de novo e, no PRO, verifica de novo as barras de concreto com a armadura já escolhida; não as redimensiona, porque isso sobrescreveria as barras do engenheiro.

Desde 4 de novembro (#1406) o aviso explica cada mudança no idioma do leitor nos seis idiomas do aplicativo. Antes disso, leitores em alemão, francês e turco recebiam o título e a explicação em inglês: 66 das 72 mudanças registradas não tinham texto nesses idiomas. Cada tradução foi conferida traduzindo-a de volta para o inglês sem o original e comparando o significado: números, sinais, qual carga, qual verificação, lado seguro ou inseguro. Essa conferência corrigiu frases nos três idiomas e mostrou que quatro explicações em inglês eram ambíguas na origem; elas foram corrigidas nos seis idiomas.

Antes da correção: advertir ou recusar

Um defeito costuma ser encontrado antes de ser corrigido, às vezes dias antes. Nesse tempo, o resultado que ele afeta continua na tela. A regra que seguimos é contê-lo primeiro e corrigi-lo depois (issue #447): todo defeito aberto que pode dar um resultado errado recebe, em cada ponto de entrada que afeta, uma advertência ou uma recusa.

  • Uma advertência mantém o resultado e mostra, ao lado dele, qual problema conhecido pode afetá-lo e o que verificar à mão.
  • Uma recusa retém o resultado e diz por quê, quando o número pode estar errado por um fator grande sem como perceber pela saída, como um fator que fica várias vezes maior ou menor conforme a numeração das barras.
Stabileo Básico com o exemplo do mecanismo oculto: uma viga de dois vãos sobre três apoios que deslizam todos na horizontal, com uma carga uniforme de 10 kN/m. Depois de calcular, nenhum diagrama é desenhado; uma mensagem vermelha no canto diz que a estrutura é instável, um mecanismo, porque nenhum apoio restringe o movimento horizontal, com um botão para ver a análise cinemática.
A mesma regra fora do inventário: um modelo que é um mecanismo recebe uma mensagem que diz por quê, e nenhum número.

A contenção é mantida em um inventário que lista cada problema de segurança aberto, sua advertência ou recusa, a condição que a dispara e o teste que mostra que ela dispara, ou a evidência de que nenhuma contenção é necessária. Um teste mantém de acordo o inventário e a lista de problemas conhecidos do motor, e uma tarefa agendada compara o inventário com as issues abertas no GitHub. As condições são estreitas de propósito: nos 39 modelos do corpus de resultados, cada advertência dispara em no máximo dois. O pull request que completa este inventário para cada issue aberta (#807) foi integrado em 5 de novembro, antes da versão 0.5.0.

Uma contenção termina quando sua correção entra, e termina no mesmo pull request. Esta semana, o #1295 removeu a recusa dos cortes de 3D para 2D que fletiam barras em torno do eixo errado, porque o corte agora está certo; o #1301 substituiu uma advertência em todo cálculo corrotacional 3D por uma que dispara só quando a extremidade de uma barra gira mais de 0,02 rad em relação à sua corda, onde a aproximação que resta pode importar.

As correções desta semana

Flambagem 2D com cargas axiais ao longo das barras (#1324, versão 23). A rigidez geométrica de cada barra usava seu esforço normal médio. Onde a compressão cresce em direção à extremidade que mais gira, como sob gravidade em um caibro ou com uma carga axial pontual dentro do vão, o fator de flambagem saía alto demais e nada avisava disso. Agora cada barra integra seu esforço normal variável.

CasoExatoAntesAgora
Balanço, compressão crescendo de 0 no apoio até P na ponta3,4774,972 (+43 %)3,542 (+1,9 %)
Balanço, empuxo P na ponta e uma carga axial oposta P no meio do vão: compressão P só do meio até a ponta2,9614,972 (+68 %)3,056 (+3,2 %)
Coluna pesada de Euler, compressão maior no apoio7,8374,972 (−37 %)7,889 (+0,7 %)
Uma barra, λP·L²/EI. Fonte: SA-2026-042.

Os poucos por cento restantes são o erro de discretização comum de um elemento por barra, e diminuem quando a barra é dividida. O P-Delta continua usando o esforço normal médio, e a flambagem 3D com cargas ao longo das barras mantém sua advertência até sua própria correção.

Análise corrotacional 3D (#1301, versão 24). As rotações das extremidades das barras eram subtraídas como vetores de rotação, o que só é exato quando todas as rotações compartilham um eixo. A curva de 45° de Bathe–Bolourchi saía 1,3 % fora de sua solução publicada, e refinar a malha a afastava das referências, em vez de aproximá-la. Agora as rotações são compostas como matrizes de rotação: a mesma curva fica a menos de 0,4 % de duas soluções publicadas independentes e converge entre elas. Uma barra cujas extremidades giram mais de 0,9π uma em relação à outra é recusada, porque o resultado não consegue dizer de qual volta completa se trata.

Um mecanismo oculto em 2D (#1298, versão 22). Um vínculo rígido ou um diafragma a partir de um nó cujas barras são todas articuladas até a extremidade de uma barra de treliça é um mecanismo, mas o solver o segurava com uma mola artificial minúscula e devolvia deslocamentos de centenas de quilômetros, que o certificado depois certificava. Agora um modelo assim é recusado. A correção não propôs aviso de segurança para este: nos casos encontrados os deslocamentos eram absurdos, da ordem de 10⁵ m, e vinham com a advertência do aplicativo de um provável mecanismo. É um julgamento sobre esses casos, não uma prova de que nenhum resultado afetado parecesse razoável. O que estava errado era a afirmação do certificado, e a entrada da versão informa os projetos que ela afeta. Um caso semelhante, por meio de um conector em vez de um vínculo rígido, foi encontrado depois (#1414); sua correção (#1415) foi integrada em 5 de novembro.

Cortar um modelo 3D para 2D (#1295). O corte usava a inércia do eixo forte de cada seção para todas as barras, então os pilares em um corte Y–Z, as vigas em um corte X–Y e as barras giradas 90° fletiam em torno do eixo errado: um pórtico de IPN 300 no plano Y–Z se deslocava lateralmente 0,96 mm em 2D contra 13,0 mm em 3D. Agora cada barra flete em 2D em torno do eixo em que flete em 3D, e cortes que um modelo plano não consegue representar são recusados. Esta correção não tem versão de resultados, e isso é deliberado: um modelo 2D salvo resolve exatamente como antes, porque o que estava errado era o modelo que o corte produzia. O aviso de nova verificação não consegue chegar a esses arquivos, então o aviso de segurança (SA-2026-035) é o canal: corte o modelo de novo a partir do 3D, ou resolva-o em 3D.

Depois da correção: avisos de segurança

Um defeito que pode ter produzido um resultado errado ou contra a segurança em uma versão publicada recebe um aviso de segurança: o que estava errado, quais modelos afeta, como reconhecê-los, o que verificar de novo nos resultados já entregues e o caso que o reproduz. Os avisos das correções desta semana já estão redigidos como rascunho no repositório e são publicados com a versão 0.5.0, como SA-2026-001 a 024 foram com 0.3.0 e 0.4.0.

AvisoO que estava erradoSeveridade
SA-2026-033O gerador de cargas deixava de fora as cargas de área de um piso quando uma barra baixa ficava sobre parte deleAlta
SA-2026-034A verificação de equilíbrio dava coincidência em casos cuja verificação deixava cargas de foraMédia
SA-2026-035O corte de 3D para 2D fletia barras em torno do eixo errado da seçãoAlta
SA-2026-036O corte de 3D para 2D em Y–Z ou X–Y lia as restrições como se o pórtico estivesse em X–ZAlta
SA-2026-037A análise corrotacional 3D subtraía vetores de rotaçãoMédia
SA-2026-040As verificações ACI 318 e EN 1992 aprovavam barras de concreto sem verificar sua torçãoAlta
SA-2026-041A verificação de pilares de concreto armado combinava o momento máximo só com a compressão máximaAlta
SA-2026-042A flambagem 2D superestimava o fator das barras cuja compressão cresce ao longo delasAlta
Avisos redigidos para as correções incorporadas em 4 e 5 de novembro de 2026.
A página do registro de mudanças do Stabileo no site: primeiro a entrada mais nova, de 6 de novembro, sobre resultados errados corrigidos em verificações de dimensionamento e dinâmica, que começa pelas mudanças no motor, e à esquerda os filtros por área.
A página do registro de mudanças, o mais novo primeiro, que abre com as correções desta semana que mudam resultados.

O que isto não faz

  • O aviso só conhece as mudanças registradas. Um defeito ainda não encontrado não está em nenhum registro; para isso existe a verificação por trás do solver, e é isso que a contenção cobre quando algo é encontrado.
  • Ele lê as características do modelo a partir do arquivo salvo e, quando não consegue determiná-las, conta a característica como presente: um aviso a mais é melhor que uma mudança escondida do modelo que ela afeta.
  • Ele não consegue seguir um número depois que sai do aplicativo, em um desenho, uma planilha ou um relatório já entregue. Para isso existe o aviso de segurança.
  • Contido, recusado ou corrigido, verificar o resultado antes de assiná-lo continua sendo responsabilidade do engenheiro.
Todas as notas

Continue lendo