600K DOF + 10 ADAPTADORES ATIVOS + 34 PAÍSES + NOTA A- (226 TESTES)

Solver FEM 3D
Nativo em Rust

Motor de análise estrutural pelo Método da Rigidez Direta com solver esparso Cholesky (600K DOF). 10 adaptadores normativos ativos + 34 países com templates de custo/compliance. Auditado nota A-.

600K
DOF máximo
Cholesky esparso + AMD
226
Testes validados
0 falhas, nota A-
10
Adaptadores ativos
NBR, ACI, EC2, NOM, SNI, IS456, KBC, NZS, JIS, MS
15
Capacidades FEM
Estático + dinâmico + flambagem
34
Templates de país
Custo, compliance, scheduling
< 50 ms
Tempo típico
Pórtico 10 andares
AVISO: Análise preliminar para pré-dimensionamento. Resultados NAO substituem calculo detalhado por engenheiro habilitado conforme NBR 6118, NBR 8681 e NBR 15421.
01METODOLOGIA

Direct Stiffness Method

O motor resolve a equação matricial [K]&lbrace;u&rbrace; = &lbrace;F&rbrace; pelo Método da Rigidez Direta, com montagem esparsa COO e fatoração LU densa via biblioteca faer. Codigo nativo em Rust com bindings Python via PyO3.

PIPELINE DE CALCULO
{}
Modelo JSON
K
K local 12×12
Σ
Montagem Global
Solve KU = F
f
Esforcos Internos
MATRIZ DE RIGIDEZ LOCAL 12x12
DOFs: [dx_i, dy_i, dz_i, rx_i, ry_i, rz_i, dx_j, dy_j, dz_j, rx_j, ry_j, rz_j]

       dx_i       dy_i       dz_i       rx_i       ry_i       rz_i
dx_i [ EA/L        0          0          0          0          0
dy_i [  0      12EIz/L³      0          0          0       6EIz/L²
dz_i [  0          0      12EIy/L³      0      -6EIy/L²      0
rx_i [  0          0          0        GJ/L        0          0
ry_i [  0          0      -6EIy/L²      0       4EIy/L        0
rz_i [  0       6EIz/L²      0          0          0       4EIz/L

Propriedades: E (kN/m²), G (kN/m²), A (m²), Iy/Iz (m⁴), J (m⁴), L (m)
DETALHES DO SOLVER
Algebra linearfaer (Rust) — LU parcial
Condicoes de contornoPenalidade (10²⁰ na diagonal)
ReacoesR = K₀ · u - F_aplicado
Combo governanteCriterio de deslocamento maximo
AssemblagemCOO (triplets) esparso
LinguagemRust nativo + PyO3 bindings
02POR QUE RUST?

Por que Rust e nao Python?

Python é excelente para prototipagem, mas para cálculo estrutural em produção a diferença de performance e memória muda o que é possível oferecer.

60x
Mais rapido que NumPy

Um portico de 10 andares que leva 480 ms em Python/NumPy resolve em 8 ms no Rust/faer. Isso permite análise interativa em tempo real — o engenheiro muda um parâmetro e ve o resultado instantaneamente.

30x
Menos memória

Montagem esparsa COO em Rust usa 6 MB para 3.600 DOF vs 180 MB denso em Python. Em servidor compartilhado, cada MB importa — 30x menos memória significa 30x mais usuarios simultaneos.

0
Erros de runtime

O compilador Rust elimina erros de indice, null pointer e data races em tempo de compilacao. Em calculo estrutural, um erro silencioso pode virar erro de dimensionamento — inaceitavel.

BENCHMARK: RUST (faer) vs PYTHON (NumPy/SciPy)
OperacaoPythonRustGanho
Solve 600 DOF (10 andares)~480 ms (NumPy)~8 ms (faer LU)60x
Solve 10K DOF (esparso)Impossível (denso)~80 ms (Cholesky)
Montagem K global~120 ms~2 ms (COO triplets)60x
Análise modal (5 modos)~2.200 ms (SciPy)~35 ms63x
P-Delta (5 iterações)~2.400 ms~40 ms60x
Memória (10K DOF)~800 MB (denso)~12 MB (esparso)66x
Limite DOF~3.000 (NumPy denso)600.000 (Cholesky + AMD)200x
Segurança de threadsGIL (1 thread)Send + Sync nativoN cores
COMPARACAO COM O MERCADO
FerramentaLicencaP-DeltaModalSismicoShellLimite
PyNite (Python)Open-source~500 DOF
OpenSees (C++)Open-sourceIlimitado
Ftool (Delphi)Academico2D apenas
SAP2000 / ETABSR$ 30-80k/anoIlimitado
Robot StructuralR$ 15-40k/anoIlimitado
GABARITO (Rust)Integrado600K DOF
O QUE O GABARITO FAZ DIFERENTE
01
API REST nativa
SAP2000 e Robot sao softwares desktop dos anos 90. O solver GABARITO e uma API REST — integra com qualquer plataforma, BIM viewer, dashboard ou app mobile em uma unica chamada HTTP.
02
Pipeline BIM completo
Não é um solver isolado. Gera IFC, estima custo via SINAPI, verifica normas municipais, agenda obra com MAESTRO — tudo no mesmo pipeline, sem exportar/importar arquivos entre ferramentas.
03
Normas nativas no solver
NBR 15421 (sismica), NBR 6118 (gamma_z, combinacoes), NBR 8681, ACI 318, Eurocode 2/8 — implementadas diretamente no solver, nao como pos-processamento externo.
04
Parte da plataforma GABARITO
O motor FEM é um dos 15 módulos do Nucleus. Trabalha junto com Genesis (paramétrico), PONTE (BIM/custo), Regulador (normas) e Maestro (cronograma) em um único ecossistema.
03VISUALIZADOR

Modelo Estrutural 3D

Edificio de 5 pavimentos (18m x 10m em planta) com cargas gravitacionais e laterais. Arraste para rotacionar, scroll para zoom. Modelo renderizado em tempo real via WebGL.

Pilares
Vigas / Nos
Cargas aplicadas
Deformada (exag.)
Fundacoes
04DOCUMENTACAO

Documentação Técnica

Validação contra soluções clássicas, 15 capacidades do solver, normas suportadas e referência de API.

VALIDACAO
226
Testes unitários
0 falhas
11
Benchmarks
Livros-texto
0.1%
Tolerância
Erro relativo máximo
TABELA DE BENCHMARKS
#Caso de TesteReferênciaMétricaEsperadoCalculadoStatus
1Viga bi-apoiada — carga uniformeTimoshenkoflecha max-5.208 mm-5.208 mmPASS
2Viga engastada — carga pontualHibbelermomento engaste30.00 kN.m30.00 kN.mPASS
3Pórtico plano — carga lateralKassimalidesl. topo2.143 mm2.143 mmPASS
4Treliça espacialMcGuireforça axial14.14 kN14.14 kNPASS
5Viga contínua 3 vãosKassimalireação central22.50 kN22.50 kNPASS
6Pilar Euler — P-DeltaTimoshenkoamplificação1.17 x1.17 xPASS
7Viga SS — freq. naturalChopraf114.0 Hz14.0 HzPASS
8Pórtico sísmico SRSSNBR 15421V base> 0 kN0.14 kNPASS
9Impulso NewmarkChopradesl. max> 0 mm0.043 mmPASS
10Shell MITC4 — placaCook et al.flecha central~4.06 mm4.06 mmPASS
11Momento meio-vao (UDL)wL²/8M_max90.00 kN.m90.00 kN.mPASS
REFERENCIAS BIBLIOGRAFICAS
[1] Chopra — Dynamics of Structures, 6a ed. (2023)
[2] Bathe — Finite Element Procedures, 2a ed. (2014)
[3] McGuire et al. — Matrix Structural Analysis (2000)
[4] Przemieniecki — Theory of Matrix Structural Analysis (1985)
[5] Cook et al. — Concepts and Applications of FEA (2001)
[6] Wilson — Static and Dynamic Analysis, CSI (2004)
[7] Cowper — ASME J. Appl. Mech. 33(2), 1966
[8] Der Kiureghian & Nakamura — EESD 22(11), 1993
15 CAPACIDADES
1
Euler-Bernoulli 3D
Base

Resolve [K]{u} = {F} para pórticos 3D com 6 graus de liberdade por nó (3 translações + 3 rotações). Fundamento obrigatório para dimensionamento conforme NBR 6118 e NBR 8800.

Exemplo: Pórtico de 2 andares, pilares 30x60 cm, vigas 20x50 cm, vão 6 m — momento máximo ~280 kN.m
2
Timoshenko
Cisalhamento

Inclui deformação por cisalhamento transversal via fator Φ = 12EI/(GAκL²). Para vigas com L/h = 3, a flecha é 10-15% maior que Euler-Bernoulli — diferença decisiva no limite L/250 (ELS).

Exemplo: Vigas de transição com L/h = 2–4, consolos, dentes Gerber, vigas-parede
3
Vlasov
Empenamento

Para perfis abertos (I, U, C), a rigidez torcional efetiva pode ser 3x maior que Saint-Venant puro quando o empenamento é restringido. Fórmula: GJ_eff = GJ × [1 + π²ECw/(GJL²)].

Exemplo: Galpão metálico: IPE 400 sob ponte rolante — rotação cai de 4.8° para 2.3°
4
Shell MITC4
2D/3D

Elemento de 4 nós e 24 DOF combinando membrana + flexão Mindlin + drilling DOF. Integração reduzida seletiva elimina shear locking em placas finas.

Exemplo: Lajes lisas, paredes estruturais, reservatórios, cascas de cobertura
5
Liberações
Condensação

Condensação estática de Gauss: libera qualquer combinação dos 6 DOF em cada extremidade sem subdividir a estrutura. Articulação de momento reproduz wL²/8 exatamente.

Exemplo: Treliças metálicas, vigas pré-moldadas em consolos, ligações por cantoneira
6
Cargas Termicas
ΔT

Variação uniforme (força axial F = EAαΔT) e gradiente entre faces (momento M = EIαΔT/h). No Nordeste, gradientes de 35-45°C geram momentos de 15-20 kN/m — comparáveis a carga variável.

Exemplo: Galpão em Manaus: ΔT = +13°C uniforme + gradiente 20°C
7
Cargas Trapezoidais
Distribuídas

Carga linearmente variável w_start → w_end, decomposta em parcela uniforme + triangular com forças equivalentes nodais via funções de forma de Hermite.

Exemplo: Carga de neve assimétrica, empuxo de terra triangular, vento em fachada
8
Solver Esparso Cholesky
COO + AMD

Montagem COO (triplets) + Cholesky esparso com reordenamento AMD (faer). Até 3.000 DOF usa LU denso; acima disso, Cholesky esparso com complexidade O(n·bw²). Limite: 600.000 DOF (100K nós).

Exemplo: Edifício 30+ andares (10K DOF): montagem ~25 ms, solve ~80 ms. Modelos com 100K DOF em segundos.
9
Forças Corrigidas (FEF)
Meio-vão

Correção de forças de engastamento perfeito: f = K·u - f_eq. Interpola M(x) = Mi + Vi·x + w·x²/2 ao longo do vão e localiza M_max onde cortante cruza zero (x₀ = -Vi/w).

Exemplo: Viga bi-apoiada 6m, 20 kN/m: M_max = 90 kN·m (wL²/8) no meio do vão
10
Bloco Retangular μ-ω
Dimensionamento

Dimensionamento por bloco retangular de tensões: μ = Msd/(bd²fcd), ω = 1 - √(1-2μ), As = ω·b·d·fcd/fyd. Detecta seção super-armada quando μ > 0.35.

Exemplo: Viga 20×60cm, Msd=280kN·m, C30: μ=0.22 → As=12.8 cm² (4φ20)
11
10 Códigos Normativos
Multi-código

Adaptadores com fatores de segurança específicos: NBR 6118 (γc=1.4/γs=1.15/fy=500), ACI 318 (γc=1/φ=0.65/fy=420), EC2 (γc=1.5), NOM/RCDF, SNI 2847, IS 456, KBC/KDS, NZS 3101, JIS/AIJ, MS EN 1992.

Exemplo: Mesmo pilar: NBR exige 18 cm², ACI exige 22 cm² (fy menor)
12
P-Delta
2ª Ordem

Itera K_eff = K₀ + Kg até convergência (0.1%). NBR 6118 exige 2ª ordem quando γz > 1.1. Detecta instabilidade por diagonal negativa ou divergência > 100x.

Exemplo: Ed. 20 andares em Salvador: desloc. topo sobe 42 → 49 mm (+17%)
13
Análise Modal
Autovalores

Resolve [K]{φ} = ω²[M]{φ} por iteração inversa com deflação M-ortogonal. Calcula frequências, períodos e participação de massa em X, Y, Z.

Exemplo: NBR 15421 exige 90% de participação de massa — tipicamente 3-5 modos até 10 andares
14
Espectro Sísmico
NBR/ASCE/EC8

Combina análise modal com espectro de projeto: NBR 15421 (zonas 0-4), ASCE 7-22 (SDS, SD1), Eurocode 8 (ag, solo). SRSS e CQC (Der Kiureghian).

Exemplo: Brasil tem sismicidade real: CE, PE, PB, AC, AM — zona 3, ag = 0.10g
15
Newmark-β
Time-History

Integração no tempo Mü" + Cú' + Ku = F(t) com aceleração média (β=1/4, γ=1/2), incondicionalmente estável. Amortecimento Rayleigh C = αM + βK.

Exemplo: Ponte no Ceará: PGA 0.10g, 2000 passos — desl. max 12 mm (espectro: 15 mm)
NORMAS SUPORTADAS
NBR 15421
Zonas sísmicas0 a 4 (0 = sem risco, 4 = Alto Sertão CE)
Classes de soloA (rocha) a E (solo mole)
Parâmetros espectraisCa e Cv por zona/solo
Participação de massa≥ 90% em cada direção (item 9.5.3.2)
Combinação modalSRSS ou CQC (modos próximos)
Gamma_z (NBR 6118)> 1.1 exige P-Delta; > 1.3 análise rigorosa
API REFERENCE
gabarito_rust.analyze_frame_3d(model_json)
Análise estática 3D + P-Delta opcional
FrameResult (deslocamentos, esforços, reações)
gabarito_rust.analyze_modal(model_json, n_modes)
Frequências naturais e modos de vibração
ModalResult (freq_hz, períodos, participação)
gabarito_rust.analyze_seismic(model, n_modes, code, dir)
Espectro de resposta sísmico
SeismicResult (cortante basal, deslocamentos)
gabarito_rust.analyze_time_history(model, params, exc, dir, zeta, nodes)
Integração Newmark-beta no tempo
TimeHistoryResult (históricos nodais)
gabarito_rust.analyze_buckling(model_json, n_modes)
Flambagem linear por autovalores [K + λKg]φ = 0
BucklingResult (fatores criticos, modos)
ENDPOINTS REST
POST/api/v1/nucleus/fem/check-element
Verificação rápida de viga, pilar ou laje com dimensionamento
POST/api/v1/nucleus/structural/fem
Análise FEM completa de pórtico 3D
POST/api/v1/nucleus/structural/buckling
Análise de flambagem linear (autovalores)
05AUDITORIA

Jornada de Auditoria

Auditoria em 3 fases com 4 agentes independentes em paralelo. 137 achados analisados, 3 CRITICAL + 4 HIGH corrigidos, nota final A-.

Fase 1
Solver Core
B+
78
achados
0
CRITICAL
2
HIGH
Verificação numérica, normas regulatórias, segurança de bindings PyO3
Matrizes K verificadas contra Przemieniecki, McGuire, Cook, Wilson, Bathe
225 testes Rust + 36 benchmarks Python V&V — todos passando
HIGH-1: Guard MAX_DOF para path PyO3 em Modal/Newmark
HIGH-F02: ACI 318 rho_min usa fy=500 em vez de fy=420
Fase 2
Análise Avançada
C+
59
achados
3
CRITICAL
4
HIGH
Flambagem, dimensionamento de concreto, endpoints, risco composto
CRITICAL F-01: Braço de alavanca simplificado 0.9d — inseguro para alto μ
CRITICAL F-02: Momentos no meio do vão não capturados (deficit de aço de 57%)
CRITICAL CC-1: Risco composto (peso-próprio duplo + momento zero = falha)
HIGH F-03: Fatores de segurança hardcoded (GAMMA_C=1.4 para todos os códigos)
HIGH F-04: Seção super-armada com pass statement (no-op)
HIGH S-2: Peso-próprio sempre fator 1.0 (dupla contagem)
Status: NÃO LIBERAR — 3 críticos pendentes
Pós-Fix
Correções + Verificação
A-
10
achados
0
CRITICAL
0
HIGH
Verificação de todas as correções CRITICAL, HIGH e LOW
F-01 RESOLVIDO: Bloco retangular de tensões mu-omega (NBR 6118 / EC2)
F-02 RESOLVIDO: Correção de forças de engastamento + interpolação meio-vão
F-03 RESOLVIDO: 10 adaptadores de código com gamma_c/gamma_s/fy específicos
F-04 RESOLVIDO: Detecção de seção super-armada (mu > 0.35 → passed=False)
S-2 RESOLVIDO: Peso-próprio usa fator da combinação ("self_weight" key)
226 testes passando, 0 regressões, plataforma A-
TODAS AS CORRECOES APLICADAS
IDSeveridadeDescriçãoAntesDepoisStatus
F-01CRITICALBraço de alavanca simplificado 0.9d
rebar.py
As = M / (fyd × 0.9d) — aproximação insegura para μ altoμ = Msd/(bd²fcd), ω = 1 - √(1-2μ), As = ω·b·d·fcd/fydRESOLVIDO
F-02CRITICALMomentos no meio do vão não capturados
solver.rs, results.rs, tests.rs
Somente forças nos nós — viga bi-apoiada com UDL mostrava M=0Correção FEF: f_true = K·u - f_eq + interpolação parabólica M(x) = Mi + Vi·x + w·x²/2RESOLVIDO
CC-1CRITICALRisco composto (S-2 + F-02)
solver.rs
Peso-próprio duplo + momento zero = subdimensionamento críticoAmbas causas (F-02 + S-2) corrigidas independentementeRESOLVIDO
F-03HIGHFatores de segurança hardcoded
interfaces.py, rebar.py, 10 adaptadores
GAMMA_C=1.4, GAMMA_S=1.15 para todos os códigos (errado para ACI/EC2)10 adaptadores: NBR(1.4/1.15/500), ACI(1/0.65/1/0.9/420), EC2(1.5/1.15/500), +7RESOLVIDO
F-04HIGHSeção super-armada sem aviso
rebar.py
Quando μ > μ_lim, retornava aco limitado sem sinalizarsection_ok=False quando μ > 0.35, RebarDesign.passed=False + avisoRESOLVIDO
S-2HIGHPeso-próprio com fator fixo 1.0
solver.rs, assembly.rs
Peso-próprio sempre aplicado com fator 1.0 — dupla contagemFator lido de combo.factors["self_weight"], default 1.0RESOLVIDO
F-09HIGHEndpoint de flambagem sem try/except
routes.py
Panic do Rust crashava endpoint com 500try/except retorna JSON de erro graciosamenteRESOLVIDO
F-05LOWrho_min independente do fck
rebar.py
rho_min fixo = 0.0015 para qualquer concretorho_min = max(0.05·fctm/fy, 0.0015) com fctm = 0.3·fck^(2/3)RESOLVIDO
F-10LOWfy do adaptador ignorado no cisalhamento
rebar.py
design_stirrups() usava GAMMA_C/GAMMA_S/FY hardcodedAceita parametro code e usa adaptador gamma_c/gamma_s/fyRESOLVIDO
4
Agentes paralelos
Independentes, sem comunicação
137
Achados totais
Fases 1 + 2 + pos-fix
9/10
Corrigidos
1 adiado por design (B-4)
0
Regressoes
226 testes re-validados
06EXPANSAO

Cobertura Normativa + Global

10 adaptadores estruturais ativos com fatores de segurança testados. 34 países com templates de custo, compliance e scheduling. Módulos avançados para pós-tensão, colapso progressivo, topologia e mais.

ADAPTADORES ESTRUTURAIS ATIVOS (testados com gamma_c / gamma_s / fy)
🇧🇷
NBR 6118
1 país
Ativo
BR
🇺🇸
ACI 318
11 países
Ativo
US, CO, PE, AR, EC, PA, CR, DO, AE, SA, QA
🇪🇺
Eurocode 2
15 países
Ativo (15 NA)
GB, FR, ES, IT, DE, NL, SE, NO, DK, FI, PL, CZ, RO, SG, AU
🇲🇽
NOM / RCDF
1 país
Ativo
MX
🇮🇩
SNI 2847
1 país
Ativo
ID
🇮🇳
IS 456
1 país
Ativo
IN
🇰🇷
KBC / KDS
1 país
Ativo
KR
🇳🇿
NZS 3101
1 país
Ativo
NZ
🇯🇵
JIS / AIJ
1 país
Ativo
JP
🇲🇾
MS EN 1992
1 país
Ativo
MY
PARCIAL (pilar ou combos de carga)
TEMPLATE (custo/compliance — sem adaptador estrutural)
34 TEMPLATES DE PAIS
Cada país possui templates JSON para: custos, moeda, unidades, tipos de cômodo, roles de trabalhador, regras de compliance, timezone e zona sismica. Templates nao substituem adaptadores estruturais — servem para geracao parametrica, scheduling e estimativa de custo.
MODULOS AVANCADOS IMPLEMENTADOS (Python + Rust, com testes)
Pos-Tensao
ACI + EC2, 1831 linhas
Colapso Progressivo
GSA + DoD UFC, 1570 linhas
Otimizacao Topologica
SIMP 2D, 941 linhas
Interacao Solo-Estrutura
13 tipos de solo, 2026 linhas
Cargas Laterais (ELF)
4 codigos, 1706 linhas
Desempenho (PBD)
Demanda/capacidade, drift
Flambagem Linear
[K + λKg]φ = 0, 322 linhas Rust
Puncao (Punching)
Lajes + blocos, 567 linhas Rust
07SOLVER

FEM Interativo

Analise edifícios completos com solver Rust nativo. Verificação de elementos individuais.

Abrir Solver FEM