30 de julho de 2026
Desenvolvimento de uma biblioteca Python para cálculo de estruturas mistas de aço-concreto conforme NBR 8800:2024
Guilherme Augusto Nascimento Amorim; Jorge Marques Prates
DOI: 10.22167/2675-6528-202600879
Artigo elaborado pela ferramenta ResumeAI, solução de inteligência artificial desenvolvida pelo Instituto Pecege voltada à síntese e redação.
Resumo
O desenvolvimento de uma biblioteca em Python para o cálculo e verificação de pilares mistos de aço e concreto, conforme o Anexo M da norma brasileira NBR 8800:2024, foi abordado neste trabalho. O objetivo foi criar uma solução aberta e escalável para o dimensionamento estrutural, comparando-a com uma solução simplificada para capacidades plásticas de seções compactas de pilares mistos preenchidos circulares, utilizada como benchmark para validação parcial. A arquitetura do sistema foi concebida com base nos princípios de Domain-Driven Design (DDD), estruturando o código em objetos que representam o domínio da engenharia estrutural, como materiais e propriedades geométricas. A metodologia empregou abstrações, contratos de classe, testes automatizados e validações fundamentadas em normas técnicas para assegurar a consistência e reprodutibilidade dos resultados. Os resultados demonstraram que a abordagem orientada ao domínio proporcionou uma representação mais fiel e estruturada do problema de engenharia, promovendo clareza, consistência normativa e extensibilidade da solução. Embora a complexidade inicial tenha sido maior, a arquitetura proposta revelou vantagens significativas em manutenção, reutilização e evolução do sistema, indicando que o uso de DDD é uma estratégia adequada para o desenvolvimento de bibliotecas computacionais no contexto da engenharia estrutural.
Palavras-chave: Bibliotecas open-source; Domain-Driven Design; Engenharia estrutural; Pilares mistos.
1. Introdução
A indústria de Arquitetura, Engenharia e Construção Civil (AEC) é caracterizada pela complexidade de seus projetos e pela necessidade de precisão em cálculos e verificações estruturais. Historicamente, este setor tem dependido predominantemente de ferramentas de software proprietárias e com baixa interoperabilidade. Essa dependência resulta frequentemente na criação de silos de informação, dificultando a transferência de dados entre diferentes programas e etapas da cadeia de produção (Moradi, 2024). Além disso, engenheiros frequentemente desenvolvem scripts isolados ou planilhas eletrônicas para suprir lacunas, sem padronização, reuso de código ou aplicação de práticas modernas de arquitetura de softwares.
Nesse cenário, observa-se uma crescente adesão da linguagem de programação Python na indústria da AEC, impulsionada pela sua flexibilidade e pela vasta comunidade de desenvolvimento. Diversos programas originalmente desenvolvidos em outras linguagens têm recebido bibliotecas e APIs em Python, como é o caso das bibliotecas OpenSeesPy (Zhu, 2025) e pyCUFSM (Smith, 2025), que surgiram de iniciativas universitárias. Essas iniciativas buscam fornecer alternativas de código aberto para softwares de dimensionamento e verificação de estruturas, oferecendo blocos básicos que facilitam desde checagens rápidas até processos de otimização e iteração, minimizando a necessidade de desenvolvimento de código do zero por parte dos profissionais. A Fédération Internationale du Béton (fib) também tem uma iniciativa relevante com a biblioteca StructuralCodes (fib, 2025), focada na implementação de normas europeias para concreto armado.
A verificação da segurança estrutural, um pilar fundamental na engenharia civil, é genericamente descrita pela condição de que os esforços solicitantes (Sa) não devem ultrapassar a capacidade resistente (Rd) da estrutura, conforme a equação Sa ≤ Rd. Este princípio se aplica tanto à estrutura como um todo quanto a seus elementos constituintes, como os pilares. No Brasil, a norma NBR 8800 (ABNT, 2024) estabelece as diretrizes para o projeto de estruturas de aço e de estruturas mistas de aço e concreto, incluindo metodologias detalhadas de cálculo e verificação para pilares mistos.
Para domínios complexos, como o da engenharia estrutural, a metodologia Domain-Driven Design (DDD) mostra-se extremamente adequada. O DDD foca no desenvolvimento de um modelo que represente de forma precisa tanto o funcionamento do software quanto o domínio de engenharia, sistematizando e difundindo o conhecimento construído pela interação entre desenvolvedores e especialistas do domínio (Evans, 2004). A aplicação de DDD, combinada com o desenvolvimento baseado em testes, pode resultar na construção de bibliotecas escaláveis, compreensíveis e facilmente acessíveis, que podem ser aplicadas em todo o escopo normativo brasileiro e evoluir continuamente com as atualizações das normas.
A NBR 8800 (ABNT, 2024), em seu Anexo M, detalha as metodologias de cálculo para pilares mistos de aço e concreto, abrangendo a determinação de suas capacidades de força normal, cortante e momento fletor. Para certas seções transversais bissimétricas, como pilares preenchidos circulares ou retangulares e perfis de aço I revestidos, a norma propõe um método simplificado com formulações fechadas. Este método, por ser menos intensivo computacional e matematicamente, é frequentemente preferido para checagens manuais e aplicações rotineiras, pois permite rastreabilidade e reduz a complexidade do processo de projeto estrutural. As escolhas de arquitetura e ambiente de produção são cruciais para definir a escalabilidade e reprodutibilidade da solução.
Diante da lacuna de soluções abertas e bem arquitetadas para o dimensionamento de estruturas mistas no contexto normativo brasileiro, e considerando os benefícios da aplicação de metodologias de desenvolvimento de software modernas, este trabalho justifica-se pela necessidade de uma ferramenta computacional que promova maior clareza, consistência normativa e extensibilidade. Assim, o objetivo deste trabalho é o desenvolvimento de uma biblioteca na linguagem Python para o cálculo e verificação de pilares mistos conforme o Anexo M da norma brasileira NBR 8800 (ABNT, 2024), comparando-a com uma solução simplificada para as capacidades plásticas para seções compactas de pilares mistos preenchidos circulares, utilizada como benchmark para validação parcial dos resultados.
2. Material e Métodos
A presente pesquisa caracterizou-se como um estudo de natureza aplicada, com abordagem metodológica focada no desenvolvimento de software. O objetivo central foi a criação de uma biblioteca computacional em Python para o cálculo e verificação de pilares mistos de aço e concreto. Este desenvolvimento seguiu as diretrizes estabelecidas pelo Anexo M da norma brasileira NBR 8800 (ABNT, 2024), visando uma ferramenta aberta e escalável para o dimensionamento estrutural.
As principais referências normativas para o desenvolvimento foram o Anexo M da NBR 8800 (ABNT, 2024) e a NBR 6118 (ABNT, 2023) para concreto armado. O livro “Elementos das Estruturas Mistas Aço-Concreto” (Queiroz; Pimenta; Da Mata, 2001) também serviu como fonte técnica. Para a concepção arquitetural do sistema, adotou-se a metodologia Domain-Driven Design (DDD), conforme os princípios descritos por Evans (2004).
O escopo do trabalho foi delimitado pelo Anexo M da NBR 8800 (ABNT, 2024), que aborda as capacidades de força normal, cortante e momento fletor para pilares mistos. O foco recaiu sobre o método simplificado, que emprega formulações fechadas para seções transversais bissimétricas, como pilares preenchidos circulares ou retangulares e perfis de aço I revestidos.
Foram excluídos do escopo os pilares parcialmente revestidos, por estarem em desuso, e a introdução de carga, devido à sua complexa interação com conexões. As capacidades resistentes de tração e de cortante também foram descartadas, uma vez que o Anexo M prioriza a compressão e a flexão. Adicionalmente, as capacidades resistentes à flexão de pilares não compactos e o Método III de verificação da interação momento fletor e compressão foram excluídos pela ausência de formulações diretas na norma ou por já terem suas formulações de momento descartadas.
A arquitetura do software concentrou-se na construção de um contrato robusto, partindo da classe abstrata `ObjetoPilarMisto`. Realizou-se a modularização das dependências de material por meio de classes específicas para o aço e o concreto. A geometria foi mantida fortemente acoplada à classe concreta do pilar misto, em virtude das formulações fechadas do método simplificado do Anexo M. Foram desenvolvidas verificações de interação de momento fletor e compressão nos pilares, como serviços, para os métodos I e II.
No desenvolvimento, utilizaram-se as bibliotecas Python `numpy` e `math` para operações matemáticas. Para a definição de contratos e abstrações, empregaram-se `abc` e `enum`. A construção de testes automatizados e a validação matemática foram realizadas com `pytest`. O ambiente de desenvolvimento integrado (IDE) foi o VSCode, e o código-fonte da biblioteca foi publicado em um repositório público no GitHub, sob o nome `PilarMisto8800`.
A organização dos dados e da lógica de negócio foi estruturada em torno de classes que representam os elementos físicos e normativos do problema. Abstrações foram definidas para estabelecer contratos comuns de cálculo, e implementações concretas foram desenvolvidas para diferentes tipologias estruturais. Serviços de domínio `stateless` foram criados para aplicar os métodos de verificação.
Os objetos de material, como `AcoEstrutural`, `AcoArmadura` e `ObjetoConcreto`, foram concebidos como `value objects`. O `AcoEstrutural` validou as limitações conforme a NBR 8800 (ABNT, 2024), enquanto `AcoArmadura` e `ObjetoConcreto` validaram segundo a NBR 6118 (ABNT, 2023). A implementação das classes de pilares mistos seguiu uma lógica similar, com injeção de dependência das classes de material para composição do `ObjetoPilarMisto`.
A validação parcial dos resultados da biblioteca foi realizada por meio de uma comparação com um script procedural de referência. Este script, disponível no mesmo repositório GitHub na pasta `reference`, foi utilizado como benchmark para as capacidades plásticas de seções compactas de pilares mistos preenchidos circulares. Os testes automatizados da biblioteca foram verificados para garantir que os valores de capacidades resistentes correspondessem aos do script de referência, já validados com exemplos e planilhas de cálculo. O processo de validação limitou-se às capacidades plásticas de pilares circulares compactos, focando nas propriedades da seção transversal, sem considerar o comprimento do pilar ou sua esbeltez global.
3. Resultados e Discussão
A pesquisa focou no desenvolvimento de uma biblioteca em Python para o cálculo e verificação de pilares mistos de aço e concreto, seguindo as diretrizes do Anexo M da norma brasileira NBR 8800 (ABNT, 2024). A arquitetura do sistema foi concebida com base nos princípios de Domain-Driven Design (DDD), visando criar uma solução aberta, escalável e com maior integração no contexto da indústria da Arquitetura, Engenharia e Construção Civil (AEC). Os resultados demonstram que esta abordagem proporcionou uma representação mais fiel e estruturada do problema de engenharia, favorecendo a clareza e a consistência normativa. A validação parcial foi realizada comparando os resultados com uma solução simplificada para capacidades plásticas de seções compactas de pilares mistos preenchidos circulares, estabelecida como benchmark.
O processo de avaliação estrutural, conforme a equação Sa ≤ Rd, pode ser dividido em dois domínios principais: a Análise Estrutural, responsável pelos esforços solicitantes (Sa), e o Dimensionamento Estrutural, que corresponde aos esforços resistentes (Rd). A biblioteca desenvolvida concentra-se exclusivamente no domínio de dimensionamento estrutural, especificamente no subdomínio de pilares mistos de aço e concreto. Esta delimitação de escopo permitiu uma focalização precisa na construção de um modelo computacional que reflete diretamente os conceitos e regras da engenharia estrutural, evitando a dispersão de esforços em áreas não centrais ao objetivo do trabalho.
A arquitetura do pacote computacional é orientada ao domínio, com o projeto organizado em torno de classes que representam elementos físicos e normativos do problema de engenharia estrutural. Foram implementadas abstrações que definem contratos comuns de cálculo, juntamente com implementações concretas para diferentes tipologias estruturais e serviços de domínio sem estado (stateless) para aplicar os métodos de verificação. Essa estruturação, conforme os preceitos de Evans (2004), visa a sistematizar e difundir o conhecimento do domínio, garantindo que o software seja uma representação precisa do problema real.
A base do domínio é composta pelas classes de material, que se dividem em aço e concreto. Essas classes foram modeladas como objetos de valor (value objects), pois representam atributos de um pilar, e não entidades com identidade única. Possuem contratos abstratos e modelos de domínio ricos, que se autovalidam e calculam suas propriedades derivadas internamente. As implementações concretas, como AcoEstrutural, AcoArmadura e ObjetoConcreto, seguem as limitações normativas específicas, validando-se conforme a NBR 8800 (ABNT, 2024) para o aço estrutural e a NBR 6118 (ABNT, 2023) para o aço de armadura e o concreto, respectivamente.
A implementação das classes de pilares mistos segue uma lógica similar, utilizando injeção de dependência das classes de material para compor o ObjetoPilarMisto. Esta classe abstrata estabelece contratos mínimos para um funcionamento desacoplado de suas implementações concretas, tanto nos serviços incluídos no pacote quanto em futuras aplicações de terceiros. A classe mãe também implementa, por herança, a lógica conjunta aplicável a todos os tipos de pilares contemplados no projeto, garantindo consistência e reuso de código entre as diferentes seções transversais de pilares mistos.
As implementações concretas das classes de pilares mistos possuem dados de entrada específicos e são responsáveis pelas chamadas de validação, que são inicializadas localmente. A classe mãe, por sua vez, gerencia a inicialização das entradas e validações comuns, que são invocadas por suas três classes filhas. Essa hierarquia de classes, com a ObjetoPilarMisto como base, permite uma gestão eficiente dos diferentes tipos de pilares, como o pilar circular preenchido, o pilar retangular preenchido e o pilar revestido, cada um com suas particularidades geométricas e de material.
A definição dos pilares como objetos de valor (value objects) no contexto do domínio de Dimensionamento Estrutural é uma consideração importante. Embora um pilar seja uma entidade única em termos de sua posição espacial na estrutura (identidade única), suas características geométricas e materiais são atributos que definem sua capacidade resistente. No escopo deste trabalho, focado no dimensionamento, a identidade espacial do pilar não é relevante, permitindo tratá-lo como um objeto de valor, cujas propriedades são suficientes para o cálculo das capacidades resistentes, conforme a distinção proposta por Evans (2004).
A limitação do escopo ao domínio de Dimensionamento Estrutural excluiu a necessidade de acoplar informações de identidade a uma entidade de pilar. Contudo, para fins argumentativos, pilares poderiam compartilhar características geométricas e físicas, mas possuir identidades distintas. A alteração da geometria, por exemplo, de um pilar preenchido para um revestido, não mudaria a identidade do pilar, mas suas características e a capacidade de verificação seriam alteradas. Esta abordagem mantém o foco na capacidade resistente, que é o cerne do dimensionamento estrutural.
Os serviços de verificação estrutural foram desenvolvidos para validar um contrato específico de solicitações, sem se preocupar com a entidade pilar ou o nível de acoplamento, diferentemente das informações de capacidades resistentes, que estão acopladas aos contratos do ObjetoPilarMisto. Esses serviços, como o MetodoI e o MetodoII, assumem que as solicitações estão em conformidade com a condição de projeto (design) ou não, sendo essa atribuição do usuário. A camada de serviços atua como uma intersecção entre os domínios de Análise Estrutural e Dimensionamento Estrutural, mas com foco predominante no último.
A comparação entre o código de referência, um script procedural, e a base de código desenvolvida neste trabalho, que adota DDD, revelou diferenças significativas. O script procedural encapsula dados de entrada, validação e cálculo de propriedades geométricas e capacidades resistentes como métodos. Embora seja eficaz para usos pessoais, validação ou pesquisa, funcionando como uma calculadora especializada e produzindo resultados consistentes, sua escalabilidade e manutenção são limitadas, tornando-se complexo expandir ou manter o código ao longo do tempo.
Em contraste, o código desenvolvido com DDD reflete o domínio de engenharia, sendo composto por entidades conceituais e suas características. Atributos de entrada e propriedades derivadas são apresentados como atributos, e o uso da linguagem ubíqua torna o código e o domínio mais claros e inteligíveis, reduzindo a distância entre a implementação e o modelo conceitual, conforme descrito por Evans (2004). Essa abordagem facilita a compreensão e a colaboração entre desenvolvedores e especialistas do domínio, promovendo um ambiente de desenvolvimento mais coeso e eficiente.
O encapsulamento das regras normativas por conceito é outra vantagem crucial do uso de DDD. As regras normativas são inter-referenciadas, e suas alterações podem ser introduzidas diretamente no objeto de domínio correspondente, com baixo acoplamento. Isso permite a expansão e manutenção da base de código de forma mais organizada e com menos problemas de compatibilidade. A repetição de código, comum em scripts de uso único para diferentes seções transversais, é minimizada pelo uso de herança e contratos abstratos, garantindo consistência e um conjunto mínimo de comportamentos comuns.
A divisão clara entre regras gerais e específicas é mais evidente no código baseado em DDD. Enquanto o código procedural pode ser mais direto e rápido para prototipagem, essa vantagem se dissolve rapidamente quando há necessidade de expansão. A análise comparativa demonstra que a adoção dos princípios de DDD não apenas reorganizou a estrutura do código, mas também promoveu uma mudança qualitativa na representação computacional do problema de engenharia estrutural, favorecendo a extensibilidade, a consistência das regras e a capacidade de manutenção a longo prazo.
A validação parcial dos resultados produzidos pela biblioteca foi realizada comparando-os com uma solução simplificada para as capacidades plásticas de seções compactas de pilares mistos preenchidos circulares, utilizada como benchmark. O processo consistiu em garantir que os mesmos testes, relacionados a resultados esperados de capacidades resistentes, contivessem os mesmos valores já validados com exemplos e planilhas de cálculo que os testes do script de referência. Dada a limitação de escopo do script de comparação, apenas as capacidades plásticas de pilares circulares compactos, relativos à seção transversal, foram efetivamente validadas, confirmando a consistência dos cálculos da biblioteca.
Embora o modelo baseado em DDD introduza uma complexidade inicial e um custo de desenvolvimento (overhead) maior em comparação com abordagens mais diretas, seus benefícios tornam-se evidentes à medida que o sistema evolui. A capacidade de reutilização, a consistência entre implementações e a facilidade de adaptação a novas tipologias estruturais indicam que a abordagem adotada é mais sustentável para aplicações de maior escala ou de uso contínuo. Dessa forma, o uso de DDD se mostra não apenas justificável, mas recomendável para bibliotecas de cálculo estrutural com pretensão de crescimento e consolidação no ambiente da engenharia.
Em síntese, o desenvolvimento da biblioteca Python para pilares mistos, fundamentada em Domain-Driven Design, demonstrou ser uma abordagem robusta e eficaz para o dimensionamento estrutural conforme a NBR 8800:2024. A arquitetura orientada ao domínio permitiu uma representação precisa do problema de engenharia, promovendo clareza, consistência normativa e extensibilidade. A validação parcial confirmou a acurácia dos cálculos para o escopo testado, e a comparação com uma solução procedural evidenciou as vantagens significativas do DDD em termos de manutenção e evolução do sistema, respondendo ao objetivo de criar uma solução aberta e escalável para o dimensionamento estrutural.
4. Conclusão
O presente trabalho dedicou-se ao desenvolvimento de uma biblioteca em Python para o cálculo e verificação de pilares mistos de aço e concreto, conforme o Anexo M da norma brasileira NBR 8800:2024, buscando criar uma solução aberta e escalável para o dimensionamento estrutural. Verificou-se que a adoção dos princípios de Domain-Driven Design (DDD) proporcionou uma representação mais fiel e estruturada do problema de engenharia, promovendo clareza, consistência normativa e extensibilidade da solução. A arquitetura orientada ao domínio, com a modelagem de materiais como objetos de valor e a implementação de contratos abstratos para pilares, demonstrou ser uma alternativa robusta às ferramentas proprietárias e scripts ad-hoc. A validação parcial dos resultados, realizada por comparação com uma solução simplificada para capacidades plásticas de seções compactas de pilares mistos preenchidos circulares, confirmou a consistência dos cálculos da biblioteca, estabelecendo uma base confiável para o dimensionamento.
Embora a implementação inicial com DDD tenha introduzido uma complexidade e um custo de desenvolvimento maiores, os benefícios em termos de manutenção, reutilização e evolução do sistema revelaram-se significativos, indicando sua sustentabilidade para aplicações de maior escala. Contudo, o escopo do estudo concentrou-se exclusivamente no domínio de dimensionamento estrutural, excluindo a análise de esforços solicitantes, e a validação foi limitada às capacidades plásticas de pilares circulares compactos. Para estudos futuros, sugere-se a expansão da biblioteca para incluir outras metodologias de cálculo e tipologias de pilares mistos não contempladas pelo método simplificado, bem como a integração com ferramentas de análise estrutural, consolidando ainda mais a contribuição desta abordagem para a engenharia civil.
Referências Bibliográficas
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR 8800: Projeto de estruturas de aço e de estruturas mistas de aço e concreto de edificações. 2024.
EVANS, Eric. Domain-driven design: tackling complexity in the heart of software. [S.I.]: Addison-Wesley Professional, 2004.
FÉDÉRATION INTERNATIONALE DU BÉTON. fib-international/structuralcodes: A Python library for structural engineering calculations. Disponível em: <https://github.com/fib-international/structuralcodes>. Acesso em: 21 out. 2025.
MORADI, Yashar. Why Open Source Opens New Doors for AEC. Disponível em: <https://www.mod.construction/article/why-open-source-opens-new-doors-for-aec>. Acesso em: 21 out. 2025.
QUEIROZ, Gilson; PIMENTA, Roberval Jose; DA MATA, Luciene Antinossi. Elementos das estruturas mistas aço-concreto. Belo Horizonte: Editora O Lutador, 2001.
SMITH, Brooks. brookshsmith/pyCUFSM: Python port of CUFSM (Constrained and Unconstrained Finite Strip Method), for analysing the buckling of thin-walled structures. Disponível em: <https://github.com/brookshsmith/pyCUFSM>. Acesso em: 21 out. 2025.
ZHU, Minjie. zhuminjie/OpenSeesPy: OpenSeesPy versions, doc, and pip. Disponível em: <https://github.com/zhuminjie/OpenSeesPy>. Acesso em: 21 out. 2025.
Artigo oriundo de Trabalho de Conclusão de Curso da Especialização em Engenharia de Software do MBA USP/Esalq
Para saber mais sobre o curso, clique aqui e acesse a plataforma MBX Academy

